Merge changes I52ffa9eb,I0e6e9a76,Ied846201,I84f7a084,I0704cd08, ...
* changes:
gn2bp: get rid of whole_static_libs hack
gn2bp: propagate static libs up the tree
gn2bp: disable rtti in protobufs
gn2bp: add //base linker scripts
gn2bp: properly apply -fexceptions
gn2bp: properly apply -frtti
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index 1e0552a..529f53f 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -1635,6 +1635,131 @@
cpp_std: "c++20",
}
+// GN: //base/third_party/symbolize:symbolize
+cc_library_static {
+ name: "cronet_aml_base_third_party_symbolize_symbolize",
+ srcs: [
+ "base/third_party/symbolize/demangle.cc",
+ "base/third_party/symbolize/symbolize.cc",
+ ],
+ defaults: [
+ "cronet_aml_defaults",
+ ],
+ cflags: [
+ "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
+ "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
+ "-DCR_SYSROOT_KEY=20220331T153654Z-0",
+ "-DDCHECK_ALWAYS_ON=1",
+ "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
+ "-DGLOG_EXPORT=",
+ "-DUSE_AURA=1",
+ "-DUSE_OZONE=1",
+ "-DUSE_UDEV",
+ "-D_DEBUG",
+ "-D_FILE_OFFSET_BITS=64",
+ "-D_GNU_SOURCE",
+ "-D_LARGEFILE64_SOURCE",
+ "-D_LARGEFILE_SOURCE",
+ "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
+ "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+ "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
+ "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+ ],
+ local_include_dirs: [
+ "./",
+ "buildtools/third_party/libc++/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
+ "build/linux/debian_bullseye_amd64-sysroot/usr/include",
+ ],
+ cpp_std: "c++20",
+}
+
+// GN: //base/third_party/xdg_mime:xdg_mime
+cc_library_static {
+ name: "cronet_aml_base_third_party_xdg_mime_xdg_mime",
+ srcs: [
+ "base/third_party/xdg_mime/xdgmime.c",
+ "base/third_party/xdg_mime/xdgmimealias.c",
+ "base/third_party/xdg_mime/xdgmimecache.c",
+ "base/third_party/xdg_mime/xdgmimeglob.c",
+ "base/third_party/xdg_mime/xdgmimeicon.c",
+ "base/third_party/xdg_mime/xdgmimeint.c",
+ "base/third_party/xdg_mime/xdgmimemagic.c",
+ "base/third_party/xdg_mime/xdgmimeparent.c",
+ ],
+ defaults: [
+ "cronet_aml_defaults",
+ ],
+ cflags: [
+ "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
+ "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
+ "-DCR_SYSROOT_KEY=20220331T153654Z-0",
+ "-DDCHECK_ALWAYS_ON=1",
+ "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
+ "-DUSE_AURA=1",
+ "-DUSE_OZONE=1",
+ "-DUSE_UDEV",
+ "-D_DEBUG",
+ "-D_FILE_OFFSET_BITS=64",
+ "-D_GNU_SOURCE",
+ "-D_LARGEFILE64_SOURCE",
+ "-D_LARGEFILE_SOURCE",
+ "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
+ "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+ "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
+ "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+ ],
+ local_include_dirs: [
+ "./",
+ "buildtools/third_party/libc++/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
+ "build/linux/debian_bullseye_amd64-sysroot/usr/include",
+ ],
+ cpp_std: "c++20",
+}
+
+// GN: //base/third_party/xdg_user_dirs:xdg_user_dirs
+cc_library_static {
+ name: "cronet_aml_base_third_party_xdg_user_dirs_xdg_user_dirs",
+ srcs: [
+ "base/third_party/xdg_user_dirs/xdg_user_dir_lookup.cc",
+ ],
+ defaults: [
+ "cronet_aml_defaults",
+ ],
+ cflags: [
+ "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
+ "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
+ "-DCR_SYSROOT_KEY=20220331T153654Z-0",
+ "-DDCHECK_ALWAYS_ON=1",
+ "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
+ "-DUSE_AURA=1",
+ "-DUSE_OZONE=1",
+ "-DUSE_UDEV",
+ "-D_DEBUG",
+ "-D_FILE_OFFSET_BITS=64",
+ "-D_GNU_SOURCE",
+ "-D_LARGEFILE64_SOURCE",
+ "-D_LARGEFILE_SOURCE",
+ "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
+ "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+ "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
+ "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+ "-D__STDC_CONSTANT_MACROS",
+ "-D__STDC_FORMAT_MACROS",
+ ],
+ local_include_dirs: [
+ "./",
+ "buildtools/third_party/libc++/",
+ "buildtools/third_party/libc++/trunk/include",
+ "buildtools/third_party/libc++abi/trunk/include",
+ "build/linux/debian_bullseye_amd64-sysroot/usr/include",
+ ],
+ cpp_std: "c++20",
+}
+
// GN: //base:tracing_buildflags
genrule {
name: "cronet_aml_base_tracing_buildflags",
@@ -1872,12 +1997,22 @@
"libprotobuf-cpp-lite",
],
static_libs: [
+ "cronet_aml_base_allocator_partition_allocator_partition_alloc",
"cronet_aml_base_base",
+ "cronet_aml_base_base_static",
+ "cronet_aml_base_third_party_double_conversion_double_conversion",
"cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
"cronet_aml_components_prefs_prefs",
"cronet_aml_net_net",
+ "cronet_aml_net_third_party_quiche_quiche",
+ "cronet_aml_net_uri_template",
+ "cronet_aml_third_party_icu_icui18n",
+ "cronet_aml_third_party_icu_icuuc_private",
+ "cronet_aml_third_party_libevent_libevent",
+ "cronet_aml_third_party_modp_b64_modp_b64",
"cronet_aml_third_party_zlib_zlib",
"cronet_aml_url_url",
+ "libssl",
],
generated_headers: [
"cronet_aml_base_debugging_buildflags",
@@ -1944,6 +2079,9 @@
"jni_headers",
],
cpp_std: "c++20",
+ linker_scripts: [
+ "base/android/library_loader/anchor_functions.lds",
+ ],
cppflags: [
"-fexceptions",
],
@@ -2255,7 +2393,16 @@
"liblog",
],
static_libs: [
+ "cronet_aml_base_allocator_partition_allocator_partition_alloc",
"cronet_aml_base_base",
+ "cronet_aml_base_base_static",
+ "cronet_aml_base_third_party_double_conversion_double_conversion",
+ "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+ "cronet_aml_third_party_icu_icui18n",
+ "cronet_aml_third_party_icu_icuuc_private",
+ "cronet_aml_third_party_libevent_libevent",
+ "cronet_aml_third_party_modp_b64_modp_b64",
+ "libssl",
],
generated_headers: [
"cronet_aml_base_debugging_buildflags",
@@ -2354,8 +2501,15 @@
"liblog",
],
static_libs: [
+ "cronet_aml_base_allocator_partition_allocator_partition_alloc",
"cronet_aml_base_base",
+ "cronet_aml_base_base_static",
+ "cronet_aml_base_third_party_double_conversion_double_conversion",
"cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+ "cronet_aml_third_party_icu_icui18n",
+ "cronet_aml_third_party_icu_icuuc_private",
+ "cronet_aml_third_party_libevent_libevent",
+ "cronet_aml_third_party_modp_b64_modp_b64",
"libssl",
],
generated_headers: [
@@ -2401,6 +2555,7 @@
cc_defaults {
name: "cronet_aml_defaults",
cflags: [
+ "-DGOOGLE_PROTOBUF_NO_RTTI",
"-O2",
"-Wno-deprecated-non-prototype",
"-Wno-error=return-type",
@@ -3233,23 +3388,25 @@
"libprotobuf-cpp-lite",
],
static_libs: [
+ "cronet_aml_base_allocator_partition_allocator_partition_alloc",
"cronet_aml_base_base",
+ "cronet_aml_base_base_static",
+ "cronet_aml_base_third_party_double_conversion_double_conversion",
"cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
"cronet_aml_crypto_crypto",
"cronet_aml_net_preload_decoder",
"cronet_aml_net_third_party_quiche_quiche",
"cronet_aml_net_uri_template",
+ "cronet_aml_third_party_brotli_common",
"cronet_aml_third_party_brotli_dec",
+ "cronet_aml_third_party_icu_icui18n",
+ "cronet_aml_third_party_icu_icuuc_private",
+ "cronet_aml_third_party_libevent_libevent",
+ "cronet_aml_third_party_modp_b64_modp_b64",
"cronet_aml_third_party_zlib_zlib",
"cronet_aml_url_url",
"libssl",
],
- whole_static_libs: [
- "cronet_aml_base_base",
- "cronet_aml_crypto_crypto",
- "cronet_aml_net_third_party_quiche_quiche",
- "libssl",
- ],
generated_headers: [
"cronet_aml_base_debugging_buildflags",
"cronet_aml_base_logging_buildflags",
@@ -3493,7 +3650,16 @@
"liblog",
],
static_libs: [
+ "cronet_aml_base_allocator_partition_allocator_partition_alloc",
"cronet_aml_base_base",
+ "cronet_aml_base_base_static",
+ "cronet_aml_base_third_party_double_conversion_double_conversion",
+ "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+ "cronet_aml_third_party_icu_icui18n",
+ "cronet_aml_third_party_icu_icuuc_private",
+ "cronet_aml_third_party_libevent_libevent",
+ "cronet_aml_third_party_modp_b64_modp_b64",
+ "libssl",
],
defaults: [
"cronet_aml_defaults",
@@ -4007,8 +4173,16 @@
"libprotobuf-cpp-lite",
],
static_libs: [
+ "cronet_aml_base_allocator_partition_allocator_partition_alloc",
"cronet_aml_base_base",
+ "cronet_aml_base_base_static",
+ "cronet_aml_base_third_party_double_conversion_double_conversion",
+ "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
"cronet_aml_net_uri_template",
+ "cronet_aml_third_party_icu_icui18n",
+ "cronet_aml_third_party_icu_icuuc_private",
+ "cronet_aml_third_party_libevent_libevent",
+ "cronet_aml_third_party_modp_b64_modp_b64",
"cronet_aml_third_party_zlib_zlib",
"cronet_aml_url_url",
"libssl",
@@ -4076,8 +4250,19 @@
"libprotobuf-cpp-lite",
],
static_libs: [
+ "cronet_aml_base_allocator_partition_allocator_partition_alloc",
"cronet_aml_base_base",
+ "cronet_aml_base_base_static",
+ "cronet_aml_base_third_party_double_conversion_double_conversion",
+ "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+ "cronet_aml_base_third_party_symbolize_symbolize",
+ "cronet_aml_base_third_party_xdg_mime_xdg_mime",
+ "cronet_aml_base_third_party_xdg_user_dirs_xdg_user_dirs",
"cronet_aml_crypto_crypto",
+ "cronet_aml_third_party_icu_icui18n",
+ "cronet_aml_third_party_icu_icuuc_private",
+ "cronet_aml_third_party_libevent_libevent",
+ "cronet_aml_third_party_modp_b64_modp_b64",
"libssl",
],
generated_headers: [
@@ -4127,6 +4312,10 @@
"build/linux/debian_bullseye_amd64-sysroot/usr/include",
],
cpp_std: "c++20",
+ cppflags: [
+ "-fexceptions",
+ ],
+ rtti: true,
}
// GN: //net/traffic_annotation:traffic_annotation
@@ -4148,7 +4337,16 @@
"liblog",
],
static_libs: [
+ "cronet_aml_base_allocator_partition_allocator_partition_alloc",
"cronet_aml_base_base",
+ "cronet_aml_base_base_static",
+ "cronet_aml_base_third_party_double_conversion_double_conversion",
+ "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+ "cronet_aml_third_party_icu_icui18n",
+ "cronet_aml_third_party_icu_icuuc_private",
+ "cronet_aml_third_party_libevent_libevent",
+ "cronet_aml_third_party_modp_b64_modp_b64",
+ "libssl",
],
defaults: [
"cronet_aml_defaults",
@@ -5330,6 +5528,7 @@
"third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
],
cpp_std: "c++20",
+ rtti: true,
}
// GN: //third_party/icu:icuuc_private
@@ -5580,6 +5779,7 @@
"third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
],
cpp_std: "c++20",
+ rtti: true,
}
// GN: //third_party/icu:icuuc_public
@@ -5966,8 +6166,16 @@
"liblog",
],
static_libs: [
+ "cronet_aml_base_allocator_partition_allocator_partition_alloc",
"cronet_aml_base_base",
+ "cronet_aml_base_base_static",
+ "cronet_aml_base_third_party_double_conversion_double_conversion",
"cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+ "cronet_aml_third_party_icu_icui18n",
+ "cronet_aml_third_party_icu_icuuc_private",
+ "cronet_aml_third_party_libevent_libevent",
+ "cronet_aml_third_party_modp_b64_modp_b64",
+ "libssl",
],
generated_headers: [
"cronet_aml_base_debugging_buildflags",
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index b222d6f..d3b2a56 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -113,6 +113,11 @@
# Additional arguments to apply to Android.bp rules.
additional_args = {
# TODO: remove if not needed.
+ 'cronet_aml_components_cronet_android_cronet': [
+ ('linker_scripts', {
+ 'base/android/library_loader/anchor_functions.lds',
+ }),
+ ],
'cronet_aml_net_net': [
('export_static_lib_headers', {
'cronet_aml_net_third_party_quiche_quiche',
@@ -121,20 +126,6 @@
# When a code is compiled under rtti(cronet) that depends on another code(net)
# that doesn't depend on rtti. undefined symbol: typeinfo 'class' errors appears.
('rtti', True), # go/undefined-symbol-typeinfo
- ('whole_static_libs', {
- 'cronet_aml_net_third_party_quiche_quiche',
- 'cronet_aml_base_base',
- "cronet_aml_crypto_crypto",
- "libssl",
- }),
- ],
- 'cronet_aml_components_cronet_android_cronet': [
- ('rtti', True),
- ('cppflags', {
- # TODO: figure out if there is no way around this and if this is
- # allowed for platform code.
- "-fexceptions",
- })
],
}
@@ -392,6 +383,7 @@
self.apex_available = set()
self.min_sdk_version = None
self.proto = dict()
+ self.linker_scripts = set()
# The genrule_XXX below are properties that must to be propagated back
# on the module(s) that depend on the genrule.
self.genrule_headers = set()
@@ -446,6 +438,7 @@
self._output_field(output, 'test_config')
self._output_field(output, 'stubs')
self._output_field(output, 'proto')
+ self._output_field(output, 'linker_scripts')
self._output_field(output, 'cppflags')
if self.rtti:
self._output_field(output, 'rtti')
@@ -1139,6 +1132,11 @@
module.cpp_std = flag[len('-std='):]
if '-isystem' in flag:
local_include_dirs_set.add(flag[len('-isystem../../'):])
+ if '-frtti' in flag:
+ module.rtti = True
+ if '-fexceptions' in flag:
+ module.cppflags.add('-fexceptions')
+
# Adding local_include_dirs is necessary due to source_sets / filegroups
# which do not properly propagate include directories.
@@ -1272,6 +1270,7 @@
# Default settings used by all modules.
defaults = Module('cc_defaults', defaults_module, '//gn:default_deps')
defaults.cflags = [
+ '-DGOOGLE_PROTOBUF_NO_RTTI',
'-Wno-error=return-type',
'-Wno-non-virtual-dtor',
'-Wno-macro-redefined',
diff --git a/tools/gn2bp/gn_utils.py b/tools/gn2bp/gn_utils.py
index e90b500..1399fcf 100644
--- a/tools/gn2bp/gn_utils.py
+++ b/tools/gn2bp/gn_utils.py
@@ -135,6 +135,7 @@
self.source_set_deps = set() # Transitive set of source_set deps.
self.proto_deps = set()
self.transitive_proto_deps = set()
+ self.transitive_static_libs_deps = set()
# Deps on //gn:xxx have this flag set to True. These dependencies
# are special because they pull third_party code from buildtools/.
@@ -300,6 +301,13 @@
# java_library.
pass
+ if dep.type == 'static_library':
+ # Bubble up static_libs. Necessary, since soong does not propagate
+ # static_libs up the build tree.
+ target.transitive_static_libs_deps.add(dep_name)
+ target.transitive_static_libs_deps.update(dep.transitive_static_libs_deps)
+ target.deps.update(target.transitive_static_libs_deps)
+
# Collect java sources. Java sources are kept inside the __compile_java target.
# This target can be used for both host and target compilation; only add
# the sources if they are destined for the target (i.e. they are a