summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/config/android/abi.gni
blob: 1dbbf0cd61800d3f0bf64dcc04ef01f3b79c7397 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Copyright 2017 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.

# 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)

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

  # Only effective if use_order_profiling = true. When this is true the call
  # graph based instrumentation is used.
  use_call_graph = false

  # Build additional browser splits with HWASAN instrumentation enabled.
  build_hwasan_splits = false

  # *For CQ puposes only* Leads to non-working APKs.
  # Forces all APKs/bundles to be 64-bit only to improve build speed in the CQ
  # (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")
assert(!use_call_graph || use_order_profiling,
       "use_call_graph requires use_order_profiling")

if (target_cpu == "x86") {
  android_app_abi = "x86"
  android_abi_target = "i686-linux-android"
} else if (target_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"
} else if (target_cpu == "mipsel") {
  android_app_abi = "mips"
  android_abi_target = "mipsel-linux-android"
} else if (target_cpu == "x64") {
  android_app_abi = "x86_64"

  # Place holder for x64 support, not tested.
  # TODO: Enable clang support for Android x64. http://crbug.com/539781
  android_abi_target = "x86_64-linux-android"
} else if (target_cpu == "arm64") {
  android_app_abi = "arm64-v8a"
  android_abi_target = "aarch64-linux-android"
} else if (target_cpu == "mips64el") {
  android_app_abi = "mips64"

  # Place holder for mips64 support, not tested.
  android_abi_target = "mips64el-linux-android"
} else {
  assert(false, "Unknown Android ABI: " + target_cpu)
}

if (target_cpu == "arm64" || target_cpu == "x64" || target_cpu == "mips64el") {
  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")
}

# Intentionally do not define android_app_secondary_abi_cpu and
# android_app_secondary_abi for 32-bit target_cpu, since they are not used.
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}"
}