1# Copyright 2016 The Chromium Authors 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import("//build/config/android/rules.gni") 6import("//testing/test.gni") 7 8generate_jni("jni_sample_header") { 9 sources = [ 10 "java/src/org/chromium/example/jni_generator/SampleForAnnotationProcessor.java", 11 "java/src/org/chromium/example/jni_generator/SampleForTests.java", 12 ] 13} 14 15android_library("jni_sample_java") { 16 sources = [ 17 "java/src/org/chromium/example/jni_generator/SampleForAnnotationProcessor.java", 18 "java/src/org/chromium/example/jni_generator/SampleForTests.java", 19 ] 20 21 deps = [ 22 "//base:jni_java", 23 "//build/android:build_java", 24 ] 25 26 annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] 27} 28 29android_library("jni_annotation_sample_java") { 30 sources = [ "java/src/org/chromium/example/jni_generator/SampleForAnnotationProcessor.java" ] 31 32 deps = [ 33 "//base:jni_java", 34 "//build/android:build_java", 35 ] 36 37 annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] 38} 39 40source_set("jni_sample_native_side") { 41 deps = [ 42 ":jni_sample_header", 43 "//base", 44 ] 45 sources = [ 46 "sample_for_tests.cc", 47 "sample_for_tests.h", 48 ] 49} 50 51generate_jni_registration("jni_registration") { 52 targets = [ ":jni_sample_java" ] 53 manual_jni_registration = true 54} 55 56shared_library("jni_sample_lib") { 57 sources = [ "sample_entry_point.cc" ] 58 59 deps = [ 60 ":jni_registration", 61 ":jni_sample_native_side", 62 "//base", 63 ] 64} 65 66android_apk("sample_jni_apk") { 67 apk_name = "SampleJni" 68 android_manifest = "AndroidManifest.xml" 69 deps = [ ":jni_sample_java" ] 70 shared_libraries = [ ":jni_sample_lib" ] 71} 72 73# Serves to test that generated bindings compile properly. 74group("jni_generator_tests") { 75 deps = [ 76 ":jni_annotation_sample_java", 77 ":sample_jni_apk", 78 ] 79} 80 81java_annotation_processor("jni_processor") { 82 sources = [ 83 "java/src/org/chromium/jni_generator/JniProcessor.java", 84 85 # Avoids a circular dependency with base:base_java. This is okay because 86 # no target should ever expect to package an annotation processor. 87 "//build/android/java/src/org/chromium/build/annotations/CheckDiscard.java", 88 "//build/android/java/src/org/chromium/build/annotations/MainDex.java", 89 ] 90 91 main_class = "org.chromium.jni_generator.JniProcessor" 92 93 annotation_processor_deps = 94 [ "//third_party/android_deps:auto_service_processor" ] 95 96 deps = [ 97 "//base:jni_java", 98 "//third_party/android_deps:com_google_auto_service_auto_service_annotations_java", 99 "//third_party/android_deps:com_google_guava_guava_java", 100 "//third_party/android_deps:com_squareup_javapoet_java", 101 ] 102} 103