1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2017 The Chromium Authors 2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 4*8975f5c5SAndroid Build Coastguard Worker 5*8975f5c5SAndroid Build Coastguard Worker# Logic separated out from config.gni so that it can be used by compiler.gni 6*8975f5c5SAndroid Build Coastguard Worker# without introducing a circular dependency. 7*8975f5c5SAndroid Build Coastguard Worker 8*8975f5c5SAndroid Build Coastguard Worker# NOTE: Because Chrome OS builds may depend on targets built with the Android 9*8975f5c5SAndroid Build Coastguard Worker# toolchain, this GNI file may be read and processed from within Chrome OS 10*8975f5c5SAndroid Build Coastguard Worker# toolchains. Checking |is_android| here would therefore be too restrictive. 11*8975f5c5SAndroid Build Coastguard Workerassert(is_android || is_chromeos || is_robolectric) 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Workerdeclare_args() { 14*8975f5c5SAndroid Build Coastguard Worker # Adds intrumentation to each function. Writes a file with the order that 15*8975f5c5SAndroid Build Coastguard Worker # functions are called at startup. 16*8975f5c5SAndroid Build Coastguard Worker use_order_profiling = false 17*8975f5c5SAndroid Build Coastguard Worker 18*8975f5c5SAndroid Build Coastguard Worker # Only effective if use_order_profiling = true. When this is true, 19*8975f5c5SAndroid Build Coastguard Worker # instrumentation switches from startup profiling after a delay, and 20*8975f5c5SAndroid Build Coastguard Worker # then waits for a devtools memory dump request to dump all 21*8975f5c5SAndroid Build Coastguard Worker # profiling information. When false, the same delay is used to switch from 22*8975f5c5SAndroid Build Coastguard Worker # startup, and then after a second delay all profiling information is dumped. 23*8975f5c5SAndroid Build Coastguard Worker # See base::android::orderfile::StartDelayedDump for more information. 24*8975f5c5SAndroid Build Coastguard Worker devtools_instrumentation_dumping = false 25*8975f5c5SAndroid Build Coastguard Worker 26*8975f5c5SAndroid Build Coastguard Worker # Build additional browser splits with HWASAN instrumentation enabled. 27*8975f5c5SAndroid Build Coastguard Worker build_hwasan_splits = false 28*8975f5c5SAndroid Build Coastguard Worker 29*8975f5c5SAndroid Build Coastguard Worker # This configuration has minimal coverage. 30*8975f5c5SAndroid Build Coastguard Worker # Forces all APKs/bundles to be 64-bit only to improve build speed 31*8975f5c5SAndroid Build Coastguard Worker # (no need to also build 32-bit library). 32*8975f5c5SAndroid Build Coastguard Worker skip_secondary_abi_for_cq = false 33*8975f5c5SAndroid Build Coastguard Worker} 34*8975f5c5SAndroid Build Coastguard Worker 35*8975f5c5SAndroid Build Coastguard Workerassert(!devtools_instrumentation_dumping || use_order_profiling, 36*8975f5c5SAndroid Build Coastguard Worker "devtools_instrumentation_dumping requires use_order_profiling") 37*8975f5c5SAndroid Build Coastguard Worker 38*8975f5c5SAndroid Build Coastguard Workerif (current_cpu == "x86") { 39*8975f5c5SAndroid Build Coastguard Worker android_app_abi = "x86" 40*8975f5c5SAndroid Build Coastguard Worker android_abi_target = "i686-linux-android" 41*8975f5c5SAndroid Build Coastguard Worker sanitizer_arch = "i686" 42*8975f5c5SAndroid Build Coastguard Worker} else if (current_cpu == "arm") { 43*8975f5c5SAndroid Build Coastguard Worker import("//build/config/arm.gni") 44*8975f5c5SAndroid Build Coastguard Worker if (arm_version < 7) { 45*8975f5c5SAndroid Build Coastguard Worker android_app_abi = "armeabi" 46*8975f5c5SAndroid Build Coastguard Worker } else { 47*8975f5c5SAndroid Build Coastguard Worker android_app_abi = "armeabi-v7a" 48*8975f5c5SAndroid Build Coastguard Worker } 49*8975f5c5SAndroid Build Coastguard Worker android_abi_target = "arm-linux-androideabi" 50*8975f5c5SAndroid Build Coastguard Worker sanitizer_arch = "arm" 51*8975f5c5SAndroid Build Coastguard Worker} else if (current_cpu == "mipsel") { 52*8975f5c5SAndroid Build Coastguard Worker android_app_abi = "mips" 53*8975f5c5SAndroid Build Coastguard Worker android_abi_target = "mipsel-linux-android" 54*8975f5c5SAndroid Build Coastguard Worker} else if (current_cpu == "x64") { 55*8975f5c5SAndroid Build Coastguard Worker android_app_abi = "x86_64" 56*8975f5c5SAndroid Build Coastguard Worker android_abi_target = "x86_64-linux-android" 57*8975f5c5SAndroid Build Coastguard Worker sanitizer_arch = "x86_64" 58*8975f5c5SAndroid Build Coastguard Worker} else if (current_cpu == "arm64") { 59*8975f5c5SAndroid Build Coastguard Worker android_app_abi = "arm64-v8a" 60*8975f5c5SAndroid Build Coastguard Worker android_abi_target = "aarch64-linux-android" 61*8975f5c5SAndroid Build Coastguard Worker sanitizer_arch = "aarch64" 62*8975f5c5SAndroid Build Coastguard Worker} else if (current_cpu == "mips64el") { 63*8975f5c5SAndroid Build Coastguard Worker android_app_abi = "mips64" 64*8975f5c5SAndroid Build Coastguard Worker 65*8975f5c5SAndroid Build Coastguard Worker # Place holder for mips64 support, not tested. 66*8975f5c5SAndroid Build Coastguard Worker android_abi_target = "mips64el-linux-android" 67*8975f5c5SAndroid Build Coastguard Worker} else if (current_cpu == "riscv64") { 68*8975f5c5SAndroid Build Coastguard Worker android_app_abi = "riscv64" 69*8975f5c5SAndroid Build Coastguard Worker 70*8975f5c5SAndroid Build Coastguard Worker # Place holder for riscv64 support, not tested. 71*8975f5c5SAndroid Build Coastguard Worker android_abi_target = "riscv64-linux-android" 72*8975f5c5SAndroid Build Coastguard Worker sanitizer_arch = "riscv64" 73*8975f5c5SAndroid Build Coastguard Worker} else { 74*8975f5c5SAndroid Build Coastguard Worker assert(false, "Unknown Android ABI: " + current_cpu) 75*8975f5c5SAndroid Build Coastguard Worker} 76*8975f5c5SAndroid Build Coastguard Worker 77*8975f5c5SAndroid Build Coastguard Workerif (target_cpu == "arm64" || target_cpu == "x64" || target_cpu == "mips64el" || 78*8975f5c5SAndroid Build Coastguard Worker target_cpu == "riscv64") { 79*8975f5c5SAndroid Build Coastguard Worker android_64bit_target_cpu = true 80*8975f5c5SAndroid Build Coastguard Worker} else if (target_cpu == "arm" || target_cpu == "x86" || 81*8975f5c5SAndroid Build Coastguard Worker target_cpu == "mipsel") { 82*8975f5c5SAndroid Build Coastguard Worker android_64bit_target_cpu = false 83*8975f5c5SAndroid Build Coastguard Worker} else { 84*8975f5c5SAndroid Build Coastguard Worker assert(false, "Unknown target CPU: $target_cpu") 85*8975f5c5SAndroid Build Coastguard Worker} 86*8975f5c5SAndroid Build Coastguard Worker 87*8975f5c5SAndroid Build Coastguard Workerandroid_64bit_current_cpu = 88*8975f5c5SAndroid Build Coastguard Worker current_cpu == "arm64" || current_cpu == "x64" || 89*8975f5c5SAndroid Build Coastguard Worker current_cpu == "mips64el" || current_cpu == "riscv64" 90*8975f5c5SAndroid Build Coastguard Worker 91*8975f5c5SAndroid Build Coastguard Worker# Do not define android_secondary_abi_cpu or android_app_secondary_abi for 92*8975f5c5SAndroid Build Coastguard Worker# target_cpu's that are 32-bit-only or 64-bit-only, as they are not used. The 93*8975f5c5SAndroid Build Coastguard Worker# presence of this variable may be used in conjunction with android_64bit_target_cpu 94*8975f5c5SAndroid Build Coastguard Worker# to identify target_cpu's that are 32-bit-only or 64-bit-only. 95*8975f5c5SAndroid Build Coastguard Workerif (target_cpu == "arm64") { 96*8975f5c5SAndroid Build Coastguard Worker android_secondary_abi_cpu = "arm" 97*8975f5c5SAndroid Build Coastguard Worker android_app_secondary_abi = "armeabi-v7a" 98*8975f5c5SAndroid Build Coastguard Worker} else if (target_cpu == "x64") { 99*8975f5c5SAndroid Build Coastguard Worker android_secondary_abi_cpu = "x86" 100*8975f5c5SAndroid Build Coastguard Worker android_app_secondary_abi = "x86" 101*8975f5c5SAndroid Build Coastguard Worker} else if (target_cpu == "mips64el") { 102*8975f5c5SAndroid Build Coastguard Worker android_secondary_abi_cpu = "mipsel" 103*8975f5c5SAndroid Build Coastguard Worker android_app_secondary_abi = "mips" 104*8975f5c5SAndroid Build Coastguard Worker} 105*8975f5c5SAndroid Build Coastguard Worker 106*8975f5c5SAndroid Build Coastguard Workerif (defined(android_secondary_abi_cpu)) { 107*8975f5c5SAndroid Build Coastguard Worker android_secondary_abi_toolchain = 108*8975f5c5SAndroid Build Coastguard Worker "//build/toolchain/android:android_clang_${android_secondary_abi_cpu}" 109*8975f5c5SAndroid Build Coastguard Worker} 110