xref: /aosp_15_r20/external/angle/build/config/android/abi.gni (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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