diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp index 9e183fec5a..2821a8c7d4 100644 --- a/tools/gn2bp/Android.bp.swp +++ b/tools/gn2bp/Android.bp.swp @@ -117,6 +117,7 @@ genrule { // GN: //base/allocator/partition_allocator:partition_alloc cc_library_static { name: "cronet_aml_base_allocator_partition_allocator_partition_alloc", + host_supported: true, generated_headers: [ "cronet_aml_base_allocator_partition_allocator_chromecast_buildflags", "cronet_aml_base_allocator_partition_allocator_chromeos_buildflags", @@ -166,9 +167,9 @@ cc_library_static { "buildtools/third_party/libc++/trunk/include", "buildtools/third_party/libc++abi/trunk/include", "third_party/android_ndk/sources/android/cpufeatures/", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", arch: { @@ -844,10 +845,6 @@ cc_library_static { "base/version.cc", "base/vlog.cc", ], - shared_libs: [ - "libandroid", - "liblog", - ], static_libs: [ "cronet_aml_base_allocator_partition_allocator_partition_alloc", "cronet_aml_base_base_static", @@ -862,6 +859,7 @@ cc_library_static { "cronet_aml_third_party_libevent_libevent", "cronet_aml_third_party_modp_b64_modp_b64", ], + host_supported: true, generated_headers: [ "cronet_aml_base_allocator_buildflags", "cronet_aml_base_allocator_partition_allocator_chromecast_buildflags", @@ -970,14 +968,22 @@ cc_library_static { "third_party/boringssl/src/include/", "third_party/icu/source/common/", "third_party/icu/source/i18n/", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], header_libs: [ "jni_headers", ], cpp_std: "c++20", + target: { + android: { + shared_libs: [ + "libandroid", + "liblog", + ], + }, + }, } // GN: //base:base_jni_headers @@ -1251,6 +1257,7 @@ cc_library_static { srcs: [ "base/base_switches.cc", ], + host_supported: true, generated_headers: [ "cronet_aml_build_chromeos_buildflags", ], @@ -1289,9 +1296,9 @@ cc_library_static { "buildtools/third_party/libc++/", "buildtools/third_party/libc++/trunk/include", "buildtools/third_party/libc++abi/trunk/include", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", } @@ -1587,6 +1594,7 @@ cc_library_static { "base/third_party/double_conversion/double-conversion/string-to-double.cc", "base/third_party/double_conversion/double-conversion/strtod.cc", ], + host_supported: true, defaults: [ "cronet_aml_defaults", ], @@ -1619,9 +1627,9 @@ cc_library_static { "buildtools/third_party/libc++/", "buildtools/third_party/libc++/trunk/include", "buildtools/third_party/libc++abi/trunk/include", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", } @@ -1632,6 +1640,7 @@ cc_library_static { srcs: [ "base/third_party/dynamic_annotations/dynamic_annotations.c", ], + host_supported: true, defaults: [ "cronet_aml_defaults", ], @@ -1662,9 +1671,9 @@ cc_library_static { "buildtools/third_party/libc++/", "buildtools/third_party/libc++/trunk/include", "buildtools/third_party/libc++abi/trunk/include", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", } @@ -1676,6 +1685,8 @@ cc_library_static { "base/third_party/symbolize/demangle.cc", "base/third_party/symbolize/symbolize.cc", ], + host_supported: true, + device_supported: false, defaults: [ "cronet_aml_defaults", ], @@ -1724,6 +1735,8 @@ cc_library_static { "base/third_party/xdg_mime/xdgmimemagic.c", "base/third_party/xdg_mime/xdgmimeparent.c", ], + host_supported: true, + device_supported: false, defaults: [ "cronet_aml_defaults", ], @@ -1764,6 +1777,8 @@ cc_library_static { srcs: [ "base/third_party/xdg_user_dirs/xdg_user_dir_lookup.cc", ], + host_supported: true, + device_supported: false, defaults: [ "cronet_aml_defaults", ], @@ -2562,10 +2577,6 @@ cc_library_static { "crypto/unexportable_key.cc", "crypto/unexportable_key_metrics.cc", ], - shared_libs: [ - "libandroid", - "liblog", - ], static_libs: [ "cronet_aml_base_allocator_partition_allocator_partition_alloc", "cronet_aml_base_base", @@ -2581,6 +2592,7 @@ cc_library_static { "cronet_aml_third_party_libevent_libevent", "cronet_aml_third_party_modp_b64_modp_b64", ], + host_supported: true, generated_headers: [ "cronet_aml_build_chromeos_buildflags", "cronet_aml_components_nacl_common_buildflags", @@ -2628,11 +2640,19 @@ cc_library_static { "buildtools/third_party/libc++abi/trunk/include", "third_party/abseil-cpp/", "third_party/boringssl/src/include/", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", + target: { + android: { + shared_libs: [ + "libandroid", + "liblog", + ], + }, + }, } // GN: //gn:default_deps @@ -5126,6 +5146,7 @@ filegroup { // GN: //third_party/boringssl:boringssl cc_library_static { name: "cronet_aml_third_party_boringssl_boringssl", + host_supported: true, defaults: [ "cronet_aml_defaults", ], @@ -5163,9 +5184,9 @@ cc_library_static { "buildtools/third_party/libc++/trunk/include", "buildtools/third_party/libc++abi/trunk/include", "third_party/boringssl/src/include/", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", arch: { @@ -5743,9 +5764,9 @@ filegroup { ], } -// GN: //third_party/boringssl:boringssl_asm +// GN: //third_party/boringssl:boringssl_asm(//build/toolchain/android:android_clang_x86) filegroup { - name: "cronet_aml_third_party_boringssl_boringssl_asm_x86", + name: "cronet_aml_third_party_boringssl_boringssl_asm___build_toolchain_android_android_clang_x86__x86", srcs: [ "third_party/boringssl/linux-x86_64/crypto/chacha/chacha-x86_64.S", "third_party/boringssl/linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S", @@ -6115,6 +6136,7 @@ cc_library_static { static_libs: [ "cronet_aml_third_party_icu_icuuc_private", ], + host_supported: true, defaults: [ "cronet_aml_defaults", ], @@ -6159,9 +6181,9 @@ cc_library_static { "buildtools/third_party/libc++abi/trunk/include", "third_party/icu/source/common/", "third_party/icu/source/i18n/", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", rtti: true, @@ -6372,6 +6394,7 @@ cc_library_static { "third_party/icu/source/common/wintz.cpp", "third_party/icu/source/stubdata/stubdata.cpp", ], + host_supported: true, defaults: [ "cronet_aml_defaults", ], @@ -6419,9 +6442,9 @@ cc_library_static { "buildtools/third_party/libc++abi/trunk/include", "third_party/icu/source/common/", "third_party/icu/source/i18n/", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", rtti: true, @@ -6451,6 +6474,7 @@ cc_library_static { "third_party/libevent/signal.c", "third_party/libevent/strlcpy.c", ], + host_supported: true, defaults: [ "cronet_aml_defaults", ], @@ -6484,9 +6508,9 @@ cc_library_static { "buildtools/third_party/libc++abi/trunk/include", "third_party/libevent/android/", "third_party/libevent/linux/", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", } @@ -6636,6 +6660,7 @@ cc_library_static { srcs: [ "third_party/modp_b64/modp_b64.cc", ], + host_supported: true, defaults: [ "cronet_aml_defaults", ], @@ -6668,9 +6693,9 @@ cc_library_static { "buildtools/third_party/libc++/", "buildtools/third_party/libc++/trunk/include", "buildtools/third_party/libc++abi/trunk/include", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", } @@ -6701,6 +6726,7 @@ cc_library_static { "third_party/zlib/uncompr.c", "third_party/zlib/zutil.c", ], + host_supported: true, defaults: [ "cronet_aml_defaults", ], @@ -6743,9 +6769,9 @@ cc_library_static { "buildtools/third_party/libc++abi/trunk/include", "third_party/android_ndk/sources/android/cpufeatures/", "third_party/zlib/", + "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu", "build/linux/debian_bullseye_amd64-sysroot/usr/include", - "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include", ], cpp_std: "c++20", } diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp index eb44f72103..2479813982 100755 --- a/tools/gn2bp/gen_android_bp +++ b/tools/gn2bp/gen_android_bp @@ -339,7 +339,7 @@ class Module(object): self.gn_target = gn_target self.name = name self.srcs = set() - self.comment = 'GN: ' + gn_utils.label_without_toolchain(gn_target) + self.comment = 'GN: ' + gn_target self.shared_libs = set() self.static_libs = set() self.whole_static_libs = set() @@ -347,6 +347,7 @@ class Module(object): self.tools = set() self.cmd = None self.host_supported = False + self.device_supported = True self.vendor_available = False self.init_rc = set() self.out = set() @@ -400,6 +401,8 @@ class Module(object): self._output_field(output, 'cmd', sort=False) if self.host_supported: self._output_field(output, 'host_supported') + if not self.device_supported: + self._output_field(output, 'device_supported') if self.vendor_available: self._output_field(output, 'vendor_available') self._output_field(output, 'init_rc') @@ -488,11 +491,7 @@ class Blueprint(object): def label_to_module_name(label): """Turn a GN label (e.g., //:perfetto_tests) into a module name.""" - # If the label is explicibly listed in the default target list, don't prefix - # its name and return just the target name. This is so tools like - # "traceconv" stay as such in the Android tree. - label_without_toolchain = gn_utils.label_without_toolchain(label) - module = re.sub(r'^//:?', '', label_without_toolchain) + module = re.sub(r'^//:?', '', label) module = re.sub(r'[^a-zA-Z0-9_]', '_', module) # If it's required to support multi toolchain for more targets, it's better to avoid hardcoding. @@ -1068,13 +1067,11 @@ def create_modules_from_target(blueprint, gn, gn_target_name): target = gn.get_target(gn_target_name) log.info('create modules for %s (%s)', target.name, target.type) - name_without_toolchain = gn_utils.label_without_toolchain(target.name) if target.type == 'executable': - if target.toolchain == gn_utils.HOST_TOOLCHAIN: - module_type = 'cc_binary_host' - elif target.testonly: + if target.testonly: module_type = 'cc_test' else: + # Can be used for both host and device targets. module_type = 'cc_binary' module = Module(module_type, bp_module_name, gn_target_name) elif target.type == 'static_library': @@ -1094,10 +1091,10 @@ def create_modules_from_target(blueprint, gn, gn_target_name): elif target.type == 'action': if 'gen_amalgamated_sql_metrics' in target.name: module = create_amalgamated_sql_metrics_module(blueprint, target) - elif re.match('.*gen_cc_.*_descriptor$', name_without_toolchain): + elif re.match('.*gen_cc_.*_descriptor$', target.name): module = create_cc_proto_descriptor_module(blueprint, target) elif target.type == 'action' and \ - name_without_toolchain == gn_utils.GEN_VERSION_TARGET: + target.name == gn_utils.GEN_VERSION_TARGET: module = create_gen_version_module(blueprint, target, bp_module_name) else: module = create_action_module(blueprint, target) @@ -1116,7 +1113,6 @@ def create_modules_from_target(blueprint, gn, gn_target_name): raise Error('Unknown target %s (%s)' % (target.name, target.type)) blueprint.add_module(module) - module.host_supported = (name_without_toolchain in target_host_supported) module.init_rc = target_initrc.get(target.name, []) module.srcs.update( gn_utils.label_to_path(src) @@ -1160,6 +1156,9 @@ def create_modules_from_target(blueprint, gn, gn_target_name): module_is_compiled = module.type not in ('genrule', 'filegroup') if module_is_compiled: + module.host_supported = target.host_supported() + module.device_supported = target.device_supported() + # Don't try to inject library/source dependencies into genrules or # filegroups because they are not compiled in the traditional sense. module.defaults = [defaults_module] @@ -1191,8 +1190,8 @@ def create_modules_from_target(blueprint, gn, gn_target_name): for dep_name in all_deps: # |builtin_deps| override GN deps with Android-specific ones. See the # config in the top of this file. - if gn_utils.label_without_toolchain(dep_name) in builtin_deps: - builtin_deps[gn_utils.label_without_toolchain(dep_name)](module) + if dep_name in builtin_deps: + builtin_deps[dep_name](module) continue dep_module = create_modules_from_target(blueprint, gn, dep_name) diff --git a/tools/gn2bp/gn_utils.py b/tools/gn2bp/gn_utils.py index b3cda41bac..27fbdb20b2 100644 --- a/tools/gn2bp/gn_utils.py +++ b/tools/gn2bp/gn_utils.py @@ -29,8 +29,6 @@ import sys BUILDFLAGS_TARGET = '//gn:gen_buildflags' GEN_VERSION_TARGET = '//src/base:version_gen_h' -TARGET_TOOLCHAIN = '//gn/standalone/toolchain:gcc_like_host' -HOST_TOOLCHAIN = '//gn/standalone/toolchain:gcc_like_host' LINKER_UNIT_TYPES = ('executable', 'shared_library', 'static_library') # TODO(primiano): investigate these, they require further componentization. @@ -155,6 +153,12 @@ class GnParser(object): self.is_finalized = False self.arch = dict() + def host_supported(self): + return 'host' in self.arch + + def device_supported(self): + return any([name.startswith('android') for name in self.arch.keys()]) + def __lt__(self, other): if isinstance(other, self.__class__): return self.name < other.name @@ -223,17 +227,14 @@ class GnParser(object): return target.type == 'group' and re.match('.*_java$', target.name) def _get_arch(self, toolchain): - if toolchain is None: - # TODO: throw an exception instead of defaulting to x86_64. - return 'x86_64' - elif toolchain == '//build/toolchain/android:android_clang_x86': - return 'x86' + if toolchain == '//build/toolchain/android:android_clang_x86': + return 'android_x86' elif toolchain == '//build/toolchain/android:android_clang_x64': - return 'x86_64' + return 'android_x86_64' elif toolchain == '//build/toolchain/android:android_clang_arm': - return 'arm' + return 'android_arm' elif toolchain == '//build/toolchain/android:android_clang_arm64': - return 'arm64' + return 'android_arm64' else: return 'host' @@ -259,7 +260,7 @@ class GnParser(object): target_name = label_without_toolchain(gn_target_name) target = self.all_targets.get(target_name) desc = gn_desc[gn_target_name] - arch = self._get_arch(desc.get('toolchain', None)) + arch = self._get_arch(desc['toolchain']) if target is None: target = GnParser.Target(target_name, desc['type']) self.all_targets[target_name] = target @@ -270,8 +271,6 @@ class GnParser(object): return target # Target already processed. target.testonly = desc.get('testonly', False) - # TODO: remove toolchain from Target object - target.toolchain = desc.get('toolchain', None) proto_target_type, proto_desc = self.get_proto_target_type(gn_desc, gn_target_name) if proto_target_type is not None: