Merge changes Ibf58f981,I2c007222,I23d13c71,I4c1a8be6,I96e4c083, ...
* changes:
gn2bp: add support for building against Android zlib
gn2bp: support architecture in builtin_deps
gn2bp: correctly flatten source_sets under linker unit target
gn2bp: add is_linker_unit_type helper to Target
gn2bp: fix include dir denylist
gn2bp: fix Android.bp.swp
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index 3e521bf..78ae260 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -5759,6 +5759,7 @@
"base/android/java/src/org/chromium/base/RadioUtils.java",
"base/android/java/src/org/chromium/base/StreamUtil.java",
"base/android/java/src/org/chromium/base/StrictModeContext.java",
+ "base/android/java/src/org/chromium/base/SysUtils.java",
"base/android/java/src/org/chromium/base/ThreadUtils.java",
"base/android/java/src/org/chromium/base/TimeUtils.java",
"base/android/java/src/org/chromium/base/TimezoneUtils.java",
@@ -5801,6 +5802,8 @@
"base/android/java/src/org/chromium/base/jank_tracker/JankTracker.java",
"base/android/java/src/org/chromium/base/jank_tracker/JankTrackerImpl.java",
"base/android/java/src/org/chromium/base/library_loader/LegacyLinker.java",
+ "base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java",
+ "base/android/java/src/org/chromium/base/library_loader/LibraryPrefetcher.java",
"base/android/java/src/org/chromium/base/library_loader/Linker.java",
"base/android/java/src/org/chromium/base/library_loader/LinkerJni.java",
"base/android/java/src/org/chromium/base/library_loader/LoaderErrors.java",
@@ -5831,6 +5834,7 @@
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessConnection.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessConstants.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessLauncher.java",
+ "base/android/java/src/org/chromium/base/process_launcher/ChildProcessService.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessServiceDelegate.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildServiceConnection.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildServiceConnectionDelegate.java",
@@ -6068,6 +6072,7 @@
"base/android/java/src/org/chromium/base/RadioUtils.java",
"base/android/java/src/org/chromium/base/StreamUtil.java",
"base/android/java/src/org/chromium/base/StrictModeContext.java",
+ "base/android/java/src/org/chromium/base/SysUtils.java",
"base/android/java/src/org/chromium/base/ThreadUtils.java",
"base/android/java/src/org/chromium/base/TimeUtils.java",
"base/android/java/src/org/chromium/base/TimezoneUtils.java",
@@ -6110,6 +6115,8 @@
"base/android/java/src/org/chromium/base/jank_tracker/JankTracker.java",
"base/android/java/src/org/chromium/base/jank_tracker/JankTrackerImpl.java",
"base/android/java/src/org/chromium/base/library_loader/LegacyLinker.java",
+ "base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java",
+ "base/android/java/src/org/chromium/base/library_loader/LibraryPrefetcher.java",
"base/android/java/src/org/chromium/base/library_loader/Linker.java",
"base/android/java/src/org/chromium/base/library_loader/LinkerJni.java",
"base/android/java/src/org/chromium/base/library_loader/LoaderErrors.java",
@@ -6140,6 +6147,7 @@
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessConnection.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessConstants.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessLauncher.java",
+ "base/android/java/src/org/chromium/base/process_launcher/ChildProcessService.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessServiceDelegate.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildServiceConnection.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildServiceConnectionDelegate.java",
@@ -6377,6 +6385,7 @@
"base/android/java/src/org/chromium/base/RadioUtils.java",
"base/android/java/src/org/chromium/base/StreamUtil.java",
"base/android/java/src/org/chromium/base/StrictModeContext.java",
+ "base/android/java/src/org/chromium/base/SysUtils.java",
"base/android/java/src/org/chromium/base/ThreadUtils.java",
"base/android/java/src/org/chromium/base/TimeUtils.java",
"base/android/java/src/org/chromium/base/TimezoneUtils.java",
@@ -6419,6 +6428,8 @@
"base/android/java/src/org/chromium/base/jank_tracker/JankTracker.java",
"base/android/java/src/org/chromium/base/jank_tracker/JankTrackerImpl.java",
"base/android/java/src/org/chromium/base/library_loader/LegacyLinker.java",
+ "base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java",
+ "base/android/java/src/org/chromium/base/library_loader/LibraryPrefetcher.java",
"base/android/java/src/org/chromium/base/library_loader/Linker.java",
"base/android/java/src/org/chromium/base/library_loader/LinkerJni.java",
"base/android/java/src/org/chromium/base/library_loader/LoaderErrors.java",
@@ -6449,6 +6460,7 @@
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessConnection.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessConstants.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessLauncher.java",
+ "base/android/java/src/org/chromium/base/process_launcher/ChildProcessService.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildProcessServiceDelegate.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildServiceConnection.java",
"base/android/java/src/org/chromium/base/process_launcher/ChildServiceConnectionDelegate.java",
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 4103270..884a48c 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -96,6 +96,10 @@
local_include_dirs_denylist = [
]
+android_include_dirs_denylist = [
+ 'third_party/zlib/',
+]
+
# Name of the module which settings such as compiler flags for all other
# modules.
defaults_module = module_prefix + 'defaults'
@@ -140,15 +144,32 @@
],
}
+def enable_zlib(module, arch):
+ # Requires crrev/c/4109079
+ if arch is None:
+ module.shared_libs.add('libz')
+ else:
+ module.arch[arch].shared_libs.add('libz')
+
# Android equivalents for third-party libraries that the upstream project
# depends on.
builtin_deps = {
'//buildtools/third_party/libunwind:libunwind':
- lambda x: None, # disable libunwind
+ lambda m, a: None, # disable libunwind
'//net/tools/root_store_tool:root_store_tool':
- lambda x: None,
+ lambda m, a: None,
}
+android_deps = {
+ '//third_party/zlib:zlib':
+ enable_zlib,
+}
+
+# Uncomment the following lines to use Android deps rather than their Chromium
+# equivalent:
+#builtin_deps.update(android_deps)
+#local_include_dirs_denylist.extend(android_include_dirs_denylist)
+
# Name of tethering apex module
tethering_apex = "com.android.tethering"
@@ -1086,6 +1107,10 @@
module.local_include_dirs.update([gn_utils.label_to_path(d)
for d in include_dirs
if not re.match('^//out/.*', d)])
+ # Remove prohibited include directories
+ module.local_include_dirs = [d for d in module.local_include_dirs
+ if d not in local_include_dirs_denylist]
+
def create_modules_from_target(blueprint, gn, gn_target_name):
"""Generate module(s) for a given GN target.
@@ -1192,10 +1217,6 @@
if lib in static_library_allowlist:
module.add_android_static_lib(android_lib)
- # Remove prohibited include directories
- module.local_include_dirs = [d for d in module.local_include_dirs
- if d not in local_include_dirs_denylist]
-
# If the module is a static library, export all the generated headers.
if module.type == 'cc_library_static':
module.export_generated_headers = module.generated_headers
@@ -1216,7 +1237,7 @@
# |builtin_deps| override GN deps with Android-specific ones. See the
# config in the top of this file.
if dep_name in builtin_deps:
- builtin_deps[dep_name](module)
+ builtin_deps[dep_name](module, None)
continue
dep_module = create_modules_from_target(blueprint, gn, dep_name)
@@ -1269,6 +1290,11 @@
for arch_name, arch in target.arch.items():
for dep_name in arch.deps:
+ # |builtin_deps| override GN deps with Android-specific ones. See the
+ # config in the top of this file.
+ if dep_name in builtin_deps:
+ builtin_deps[dep_name](module, arch_name)
+ continue
dep_module = create_modules_from_target(blueprint, gn, dep_name)
# Arch-specific dependencies currently only include cc_library_static.
# Revisit this approach once we need to support more target types.
@@ -1283,19 +1309,11 @@
if module.type not in ["cc_object"]:
module.target[arch_name].export_generated_headers.update(
dep_module.genrule_headers)
- else:
- raise Error('Unsupported arch-specific dependency %s of target %s with type %s' %
- (dep_module.name, target.name, dep_module.type))
- for dep_name in arch.source_set_deps:
- dep_module = create_modules_from_target(blueprint, gn, dep_name)
- if dep_module.type == 'cc_object':
- if module.type != 'cc_object':
- # We only want to bubble up cc_objects for modules that are not cc_objects
- # otherwise they'd be recompiled and that would cause multiple symbol redefinitions.
- if dep_module.has_input_files():
- # Only add it as part of srcs if the dep_module has input files otherwise
- # this would throw an error.
- module.target[arch_name].srcs.add(":" + dep_module.name)
+ elif dep_module.type == 'cc_object':
+ if dep_module.has_input_files():
+ # Only add it as part of srcs if the dep_module has input files otherwise
+ # this would throw an error.
+ module.target[arch_name].srcs.add(":" + dep_module.name)
else:
raise Error('Unsupported arch-specific dependency %s of target %s with type %s' %
(dep_module.name, target.name, dep_module.type))
diff --git a/tools/gn2bp/gn_utils.py b/tools/gn2bp/gn_utils.py
index b3f51c9..349723e 100644
--- a/tools/gn2bp/gn_utils.py
+++ b/tools/gn2bp/gn_utils.py
@@ -182,6 +182,9 @@
def device_supported(self):
return any([name.startswith('android') for name in self.arch.keys()])
+ def is_linker_unit_type(self):
+ return self.type in LINKER_UNIT_TYPES
+
def __lt__(self, other):
if isinstance(other, self.__class__):
return self.name < other.name
@@ -344,7 +347,7 @@
elif target.type == 'source_set':
self.source_sets[gn_target_name] = target
target.arch[arch].sources.update(desc.get('sources', []))
- elif target.type in LINKER_UNIT_TYPES:
+ elif target.is_linker_unit_type():
self.linker_units[gn_target_name] = target
target.arch[arch].sources.update(desc.get('sources', []))
elif (desc.get("script", "") in JAVA_BANNED_SCRIPTS
@@ -400,12 +403,15 @@
elif dep.type == 'source_set':
target.arch[arch].source_set_deps.add(dep.name)
target.arch[arch].source_set_deps.update(dep.arch[arch].source_set_deps)
+ # flatten source_set deps
+ if target.is_linker_unit_type():
+ target.arch[arch].deps.update(target.arch[arch].source_set_deps)
elif dep.type == 'group':
target.update(dep, arch) # Bubble up groups's cflags/ldflags etc.
elif dep.type in ['action', 'action_foreach', 'copy']:
if proto_target_type is None:
target.arch[arch].deps.add(dep.name)
- elif dep.type in LINKER_UNIT_TYPES:
+ elif dep.is_linker_unit_type():
target.arch[arch].deps.add(dep.name)
elif dep.type == 'java_group':
# Explicitly break dependency chain when a java_group is added.