diff options
Diffstat (limited to 'deps/v8/build/toolchain/android/BUILD.gn')
-rw-r--r-- | deps/v8/build/toolchain/android/BUILD.gn | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/deps/v8/build/toolchain/android/BUILD.gn b/deps/v8/build/toolchain/android/BUILD.gn new file mode 100644 index 0000000000..97dd12dc75 --- /dev/null +++ b/deps/v8/build/toolchain/android/BUILD.gn @@ -0,0 +1,141 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/android/config.gni") +import("//build/config/clang/clang.gni") +import("//build/config/sysroot.gni") # Imports android/config.gni. +import("//build/toolchain/gcc_toolchain.gni") + +declare_args() { + # Whether unstripped binaries, i.e. compiled with debug symbols, should be + # considered runtime_deps rather than stripped ones. + android_unstripped_runtime_outputs = true +} + +# The Android clang toolchains share most of the same parameters, so we have this +# wrapper around gcc_toolchain to avoid duplication of logic. +# +# Parameters: +# - toolchain_root +# Path to cpu-specific toolchain within the ndk. +# - sysroot +# Sysroot for this architecture. +# - lib_dir +# Subdirectory inside of sysroot where libs go. +# - binary_prefix +# Prefix of compiler executables. +template("android_clang_toolchain") { + gcc_toolchain(target_name) { + assert(defined(invoker.toolchain_args), + "toolchain_args must be defined for android_clang_toolchain()") + toolchain_args = invoker.toolchain_args + toolchain_args.current_os = "android" + + # Output linker map files for binary size analysis. + enable_linker_map = true + + # Make our manually injected libs relative to the build dir. + _ndk_lib = + rebase_path(invoker.sysroot + "/" + invoker.lib_dir, root_build_dir) + + libs_section_prefix = "$_ndk_lib/crtbegin_dynamic.o" + libs_section_postfix = "$_ndk_lib/crtend_android.o" + + solink_libs_section_prefix = "$_ndk_lib/crtbegin_so.o" + solink_libs_section_postfix = "$_ndk_lib/crtend_so.o" + + _android_tool_prefix = + "${invoker.toolchain_root}/bin/${invoker.binary_prefix}-" + + # The tools should be run relative to the build dir. + _tool_prefix = rebase_path("$_android_tool_prefix", root_build_dir) + + _prefix = rebase_path("$clang_base_path/bin", root_build_dir) + cc = "$_prefix/clang" + cxx = "$_prefix/clang++" + ar = "$_prefix/llvm-ar" + ld = cxx + readelf = _tool_prefix + "readelf" + nm = _tool_prefix + "nm" + strip = rebase_path("//buildtools/third_party/eu-strip/bin/eu-strip", + root_build_dir) + use_unstripped_as_runtime_outputs = android_unstripped_runtime_outputs + + # Don't use .cr.so for loadable_modules since they are always loaded via + # absolute path. + loadable_module_extension = ".so" + } +} + +android_clang_toolchain("android_clang_x86") { + toolchain_root = x86_android_toolchain_root + sysroot = "$android_ndk_root/$x86_android_sysroot_subdir" + lib_dir = "usr/lib" + binary_prefix = "i686-linux-android" + toolchain_args = { + current_cpu = "x86" + + # We lack the libclang_rt.profile library for x86 and x86_64, so we cannot + # link any binaries that are generated with coverage instrumentation. + # Therefore we need to turn off 'use_clang_coverage' for this toolchain. + # TODO(crbug.com/865376) + use_clang_coverage = false + } +} + +android_clang_toolchain("android_clang_arm") { + toolchain_root = arm_android_toolchain_root + sysroot = "$android_ndk_root/$arm_android_sysroot_subdir" + lib_dir = "usr/lib" + binary_prefix = "arm-linux-androideabi" + toolchain_args = { + current_cpu = "arm" + } +} + +android_clang_toolchain("android_clang_mipsel") { + toolchain_root = mips_android_toolchain_root + sysroot = "$android_ndk_root/$mips_android_sysroot_subdir" + lib_dir = "usr/lib" + binary_prefix = "mipsel-linux-android" + toolchain_args = { + current_cpu = "mipsel" + } +} + +android_clang_toolchain("android_clang_x64") { + toolchain_root = x86_64_android_toolchain_root + sysroot = "$android_ndk_root/$x86_64_android_sysroot_subdir" + lib_dir = "usr/lib64" + binary_prefix = "x86_64-linux-android" + toolchain_args = { + current_cpu = "x64" + + # We lack the libclang_rt.profile library for x86 and x86_64, so we cannot + # link any binaries that are generated with coverage instrumentation. + # Therefore we need to turn off 'use_clang_coverage' for this toolchain. + # TODO(crbug.com/865376) + use_clang_coverage = false + } +} + +android_clang_toolchain("android_clang_arm64") { + toolchain_root = arm64_android_toolchain_root + sysroot = "$android_ndk_root/$arm64_android_sysroot_subdir" + lib_dir = "usr/lib" + binary_prefix = "aarch64-linux-android" + toolchain_args = { + current_cpu = "arm64" + } +} + +android_clang_toolchain("android_clang_mips64el") { + toolchain_root = mips64_android_toolchain_root + sysroot = "$android_ndk_root/$mips64_android_sysroot_subdir" + lib_dir = "usr/lib64" + binary_prefix = "mips64el-linux-android" + toolchain_args = { + current_cpu = "mips64el" + } +} |