# Copyright 2017 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Logic separated out from config.gni so that it can be used by compiler.gni # without introducing a circular dependency. # NOTE: Because Chrome OS builds may depend on targets built with the Android # toolchain, this GNI file may be read and processed from within Chrome OS # toolchains. Checking |is_android| here would therefore be too restrictive. assert(is_android || is_chromeos || is_robolectric) declare_args() { # Adds intrumentation to each function. Writes a file with the order that # functions are called at startup. use_order_profiling = false # Only effective if use_order_profiling = true. When this is true, # instrumentation switches from startup profiling after a delay, and # then waits for a devtools memory dump request to dump all # profiling information. When false, the same delay is used to switch from # startup, and then after a second delay all profiling information is dumped. # See base::android::orderfile::StartDelayedDump for more information. devtools_instrumentation_dumping = false # Build additional browser splits with HWASAN instrumentation enabled. build_hwasan_splits = false # This configuration has minimal coverage. # Forces all APKs/bundles to be 64-bit only to improve build speed # (no need to also build 32-bit library). skip_secondary_abi_for_cq = false } assert(!devtools_instrumentation_dumping || use_order_profiling, "devtools_instrumentation_dumping requires use_order_profiling") if (current_cpu == "x86") { android_app_abi = "x86" android_abi_target = "i686-linux-android" sanitizer_arch = "i686" } else if (current_cpu == "arm") { import("//build/config/arm.gni") if (arm_version < 7) { android_app_abi = "armeabi" } else { android_app_abi = "armeabi-v7a" } android_abi_target = "arm-linux-androideabi" sanitizer_arch = "arm" } else if (current_cpu == "mipsel") { android_app_abi = "mips" android_abi_target = "mipsel-linux-android" } else if (current_cpu == "x64") { android_app_abi = "x86_64" android_abi_target = "x86_64-linux-android" sanitizer_arch = "x86_64" } else if (current_cpu == "arm64") { android_app_abi = "arm64-v8a" android_abi_target = "aarch64-linux-android" sanitizer_arch = "aarch64" } else if (current_cpu == "mips64el") { android_app_abi = "mips64" # Place holder for mips64 support, not tested. android_abi_target = "mips64el-linux-android" } else if (current_cpu == "riscv64") { android_app_abi = "riscv64" # Place holder for riscv64 support, not tested. android_abi_target = "riscv64-linux-android" sanitizer_arch = "riscv64" } else { assert(false, "Unknown Android ABI: " + current_cpu) } if (target_cpu == "arm64" || target_cpu == "x64" || target_cpu == "mips64el" || target_cpu == "riscv64") { android_64bit_target_cpu = true } else if (target_cpu == "arm" || target_cpu == "x86" || target_cpu == "mipsel") { android_64bit_target_cpu = false } else { assert(false, "Unknown target CPU: $target_cpu") } android_64bit_current_cpu = current_cpu == "arm64" || target_cpu == "x64" || target_cpu == "mips64el" || current_cpu == "riscv64" # Do not define android_secondary_abi_cpu or android_app_secondary_abi for # target_cpu's that are 32-bit-only or 64-bit-only, as they are not used. The # presence of this variable may be used in conjunction with android_64bit_target_cpu # to identify target_cpu's that are 32-bit-only or 64-bit-only. if (target_cpu == "arm64") { android_secondary_abi_cpu = "arm" android_app_secondary_abi = "armeabi-v7a" } else if (target_cpu == "x64") { android_secondary_abi_cpu = "x86" android_app_secondary_abi = "x86" } else if (target_cpu == "mips64el") { android_secondary_abi_cpu = "mipsel" android_app_secondary_abi = "mips" } if (defined(android_secondary_abi_cpu)) { android_secondary_abi_toolchain = "//build/toolchain/android:android_clang_${android_secondary_abi_cpu}" }