• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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