gn2bp: Added java group name to java_sources/actions
Test: ./update_results.sh
Change-Id: Ibc2b3152ab68c5b46acff7d19d2c853889fa887c
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index d1d1d1c..3026481 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -1476,10 +1476,22 @@
blueprint.add_module(module)
return module
+def get_java_sources(gn):
+ java_sources = set()
+ for sources in gn.java_sources.values():
+ java_sources.update(sources)
+ return java_sources
+
+def get_java_actions(gn):
+ java_actions = set()
+ for actions in gn.java_actions.values():
+ java_actions.update(actions)
+ return java_actions
+
def create_java_module(blueprint, gn):
bp_module_name = module_prefix + 'java'
module = Module('java_library', bp_module_name, '//gn:java')
- module.srcs.update([gn_utils.label_to_path(source) for source in gn.java_sources])
+ module.srcs.update([gn_utils.label_to_path(source) for source in get_java_sources(gn)])
module.libs = {
"androidx.annotation_annotation",
"jsr305",
@@ -1505,7 +1517,7 @@
module.javacflags.add("-Aorg.chromium.chrome.skipGenJni")
# TODO: remove following workaround required to make this module visible to make (b/203203405)
module.apex_available.add("//apex_available:platform")
- for dep in gn.java_actions:
+ for dep in get_java_actions(gn):
target = gn.get_target(dep)
if target.script == '//build/android/gyp/gcc_preprocess.py':
module.srcs.add(':' + create_gcc_preprocess_modules(blueprint, target).name)
@@ -1518,7 +1530,7 @@
def update_jni_registration_module(module, gn):
# TODO: java_sources might not contain all the required java files
module.srcs.update([gn_utils.label_to_path(source)
- for source in gn.java_sources
+ for source in get_java_sources(gn)
if source.endswith('.java')])
def create_blueprint_for_targets(gn, targets):
diff --git a/tools/gn2bp/gn_utils.py b/tools/gn2bp/gn_utils.py
index 9250a37..fa624b1 100644
--- a/tools/gn2bp/gn_utils.py
+++ b/tools/gn2bp/gn_utils.py
@@ -20,6 +20,7 @@
import logging as log
import os
import re
+import collections
BUILDFLAGS_TARGET = '//gn:gen_buildflags'
GEN_VERSION_TARGET = '//src/base:version_gen_h'
@@ -260,8 +261,8 @@
self.source_sets = {}
self.actions = {}
self.proto_libs = {}
- self.java_sources = set()
- self.java_actions = set()
+ self.java_sources = collections.defaultdict(set)
+ self.java_actions = collections.defaultdict(set)
def _get_response_file_contents(self, action_desc):
# response_file_contents are formatted as:
@@ -448,15 +449,15 @@
if dep.name.endswith('__compile_java'):
log.debug('Adding java sources for %s', dep.name)
java_srcs = [src for src in dep.inputs if _is_java_source(src)]
- self.java_sources.update(java_srcs)
+ self.java_sources[java_group_name].update(java_srcs)
if dep.type in ["action"] and target.type == "java_group":
# //base:base_java_aidl generates srcjar from .aidl files. But java_library in soong can
# directly have .aidl files in srcs. So adding .aidl files to the java_sources.
# TODO: Find a better way/place to do this.
if dep.name == '//base:base_java_aidl':
- self.java_sources.update(dep.arch[arch].sources)
+ self.java_sources[java_group_name].update(dep.arch[arch].sources)
else:
- self.java_actions.add(dep.name)
+ self.java_actions[java_group_name].add(dep.name)
return target
def get_proto_exports(self, proto_desc):