gn2bp: Generate `JniProcessor` manually
Test: update_results && m cronet_aml_components_cronet_android_cronet
Change-Id: Iefa8dd1224921cf91c075bf3347c2f5469d20eab
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 3f1fb83..9303c91 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -318,6 +318,7 @@
self.stem = None
self.compile_multilib = None
self.aidl = dict()
+ self.plugins = set()
def to_string(self, output):
if self.comment:
@@ -368,6 +369,7 @@
self._output_field(output, 'stem')
self._output_field(output, 'compile_multilib')
self._output_field(output, 'aidl')
+ self._output_field(output, 'plugins')
if self.rtti:
self._output_field(output, 'rtti')
@@ -1302,6 +1304,20 @@
(dep_module.name, target.name, dep_module.type))
return module
+def create_java_jni_preprocessor(blueprint):
+ bp_module_name = module_prefix + 'java_jni_annotation_preprocessor'
+ module = Module('java_plugin', bp_module_name, '//base/android/jni_generator:jni_processor')
+ module.srcs.update(
+ [
+ "base/android/jni_generator/java/src/org/chromium/jni_generator/JniProcessor.java",
+ # Avoids a circular dependency with base:base_java. This is okay because
+ # no target should ever expect to package an annotation processor.
+ "build/android/java/src/org/chromium/build/annotations/CheckDiscard.java",
+ "build/android/java/src/org/chromium/build/annotations/MainDex.java",
+ ])
+ blueprint.add_module(module)
+ return module
+
def create_java_module(blueprint, gn):
bp_module_name = module_prefix + 'java'
module = Module('java_library', bp_module_name, '//gn:java')
@@ -1318,6 +1334,8 @@
module.srcs.add(':' + create_gcc_preprocess_modules(blueprint, target).name)
else:
module.srcs.add(':' + create_action_module(blueprint, target, 'java_genrule').name)
+ preprocessor_module = create_java_jni_preprocessor(blueprint)
+ module.plugins.add(preprocessor_module.name)
blueprint.add_module(module)
def update_jni_registration_module(module, gn):