1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2014 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# This file contains common system config stuff for the Android build. 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker# Some arguments that are needed across all builds that import this file, for 8*8975f5c5SAndroid Build Coastguard Worker# example by is_robolectric. 9*8975f5c5SAndroid Build Coastguard Workerdeclare_args() { 10*8975f5c5SAndroid Build Coastguard Worker # Build incremental targets whenever possible. 11*8975f5c5SAndroid Build Coastguard Worker # See //build/android/incremental_install/README.md for more details. 12*8975f5c5SAndroid Build Coastguard Worker incremental_install = false 13*8975f5c5SAndroid Build Coastguard Worker} 14*8975f5c5SAndroid Build Coastguard Worker 15*8975f5c5SAndroid Build Coastguard Workerdeclare_args() { 16*8975f5c5SAndroid Build Coastguard Worker # Java debug on Android. Having this on enables multidexing, and turning it 17*8975f5c5SAndroid Build Coastguard Worker # off will enable proguard. 18*8975f5c5SAndroid Build Coastguard Worker is_java_debug = is_debug || incremental_install 19*8975f5c5SAndroid Build Coastguard Worker} 20*8975f5c5SAndroid Build Coastguard Worker 21*8975f5c5SAndroid Build Coastguard Worker# These two combinations could theoretically be made to work, but they are 22*8975f5c5SAndroid Build Coastguard Worker# not useful and so not worth the effort. 23*8975f5c5SAndroid Build Coastguard Workerassert(!(is_java_debug && is_official_build), 24*8975f5c5SAndroid Build Coastguard Worker "Cannot have is_official_build && is_java_debug") 25*8975f5c5SAndroid Build Coastguard Workerassert(!(incremental_install && !is_java_debug), 26*8975f5c5SAndroid Build Coastguard Worker "Cannot have incremental_install without is_java_debug") 27*8975f5c5SAndroid Build Coastguard Worker 28*8975f5c5SAndroid Build Coastguard Worker# Toolchain used to create native libraries for robolectric_binary() targets. 29*8975f5c5SAndroid Build Coastguard Workerrobolectric_toolchain = "//build/toolchain/android:robolectric_$host_cpu" 30*8975f5c5SAndroid Build Coastguard Worker 31*8975f5c5SAndroid Build Coastguard Workerif (is_android) { 32*8975f5c5SAndroid Build Coastguard Worker import("//build/config/android/channel.gni") 33*8975f5c5SAndroid Build Coastguard Worker import("//build/config/clang/clang.gni") 34*8975f5c5SAndroid Build Coastguard Worker import("//build/config/dcheck_always_on.gni") 35*8975f5c5SAndroid Build Coastguard Worker import("//build/config/sanitizers/sanitizers.gni") 36*8975f5c5SAndroid Build Coastguard Worker import("//build/toolchain/siso.gni") 37*8975f5c5SAndroid Build Coastguard Worker import("//build_overrides/build.gni") 38*8975f5c5SAndroid Build Coastguard Worker import("abi.gni") 39*8975f5c5SAndroid Build Coastguard Worker 40*8975f5c5SAndroid Build Coastguard Worker if (build_with_chromium) { 41*8975f5c5SAndroid Build Coastguard Worker # Some non-chromium projects (e.g. WebRTC) use our build configs 42*8975f5c5SAndroid Build Coastguard Worker # heavily but don't write gclient args files. 43*8975f5c5SAndroid Build Coastguard Worker 44*8975f5c5SAndroid Build Coastguard Worker import("//build/config/gclient_args.gni") 45*8975f5c5SAndroid Build Coastguard Worker if (defined(checkout_android)) { 46*8975f5c5SAndroid Build Coastguard Worker n = "$0x0A" # Newline 47*8975f5c5SAndroid Build Coastguard Worker assert(checkout_android, 48*8975f5c5SAndroid Build Coastguard Worker "Missing native Android toolchain support. |target_os| in your " + 49*8975f5c5SAndroid Build Coastguard Worker ".gclient configuration file (in the parent directory of " + 50*8975f5c5SAndroid Build Coastguard Worker "src) must include \"android\". For " + 51*8975f5c5SAndroid Build Coastguard Worker "example:${n}${n}solutions = [${n}...${n}]${n}" + 52*8975f5c5SAndroid Build Coastguard Worker "target_os=[\"android\"]${n}${n}" + 53*8975f5c5SAndroid Build Coastguard Worker "After adding |target_os| please re-run \"gclient sync\".${n}") 54*8975f5c5SAndroid Build Coastguard Worker } 55*8975f5c5SAndroid Build Coastguard Worker } 56*8975f5c5SAndroid Build Coastguard Worker 57*8975f5c5SAndroid Build Coastguard Worker # We are using a separate declare_args block for only this argument so that 58*8975f5c5SAndroid Build Coastguard Worker # we can decide if we have to pull in definitions from the internal config 59*8975f5c5SAndroid Build Coastguard Worker # early. 60*8975f5c5SAndroid Build Coastguard Worker declare_args() { 61*8975f5c5SAndroid Build Coastguard Worker # Enables using the internal Chrome for Android repository. The default 62*8975f5c5SAndroid Build Coastguard Worker # is set from gclient vars, with target_os needed for chromeos. 63*8975f5c5SAndroid Build Coastguard Worker # Can be set to false to disable all internal android things. 64*8975f5c5SAndroid Build Coastguard Worker enable_chrome_android_internal = 65*8975f5c5SAndroid Build Coastguard Worker build_with_chromium && checkout_src_internal && target_os == "android" 66*8975f5c5SAndroid Build Coastguard Worker 67*8975f5c5SAndroid Build Coastguard Worker # Experimental new flag for the build system to automatically attempt to 68*8975f5c5SAndroid Build Coastguard Worker # fix missing java deps. This should always be false on bots so they do not 69*8975f5c5SAndroid Build Coastguard Worker # succeed when there are build errors. Devs can override this in args.gn. 70*8975f5c5SAndroid Build Coastguard Worker auto_add_missing_java_deps = false 71*8975f5c5SAndroid Build Coastguard Worker 72*8975f5c5SAndroid Build Coastguard Worker # The default to use for android:minSdkVersion for targets that do 73*8975f5c5SAndroid Build Coastguard Worker # not explicitly set it. 74*8975f5c5SAndroid Build Coastguard Worker default_min_sdk_version = 26 75*8975f5c5SAndroid Build Coastguard Worker if (is_asan) { 76*8975f5c5SAndroid Build Coastguard Worker default_min_sdk_version = 27 77*8975f5c5SAndroid Build Coastguard Worker } 78*8975f5c5SAndroid Build Coastguard Worker 79*8975f5c5SAndroid Build Coastguard Worker # Static analysis can be either "on" or "off" or "build_server". This 80*8975f5c5SAndroid Build Coastguard Worker # controls how android lint, error-prone, bytecode checks are run. This 81*8975f5c5SAndroid Build Coastguard Worker # needs to be in a separate declare_args as it determines some of the args 82*8975f5c5SAndroid Build Coastguard Worker # in the main declare_args block below. 83*8975f5c5SAndroid Build Coastguard Worker # "on" is the default. 84*8975f5c5SAndroid Build Coastguard Worker # "off" avoids running any static analysis. This is the default for 85*8975f5c5SAndroid Build Coastguard Worker # official builds to reduce build times. Failures in static analysis 86*8975f5c5SAndroid Build Coastguard Worker # would have been caught by other bots. 87*8975f5c5SAndroid Build Coastguard Worker # "build_server" ensures that fast_local_dev_server.py is running and 88*8975f5c5SAndroid Build Coastguard Worker # offloads analysis tasks to it to be run after the build completes. 89*8975f5c5SAndroid Build Coastguard Worker # This is the recommended setting for local development. 90*8975f5c5SAndroid Build Coastguard Worker if (is_official_build) { 91*8975f5c5SAndroid Build Coastguard Worker android_static_analysis = "off" 92*8975f5c5SAndroid Build Coastguard Worker } else { 93*8975f5c5SAndroid Build Coastguard Worker android_static_analysis = "on" 94*8975f5c5SAndroid Build Coastguard Worker } 95*8975f5c5SAndroid Build Coastguard Worker 96*8975f5c5SAndroid Build Coastguard Worker # Enables teamfooding of new experimental build_server changes. 97*8975f5c5SAndroid Build Coastguard Worker experimental_build_server = false 98*8975f5c5SAndroid Build Coastguard Worker } 99*8975f5c5SAndroid Build Coastguard Worker 100*8975f5c5SAndroid Build Coastguard Worker # Our build system no longer supports legacy multidex. 101*8975f5c5SAndroid Build Coastguard Worker min_supported_sdk_version = 21 102*8975f5c5SAndroid Build Coastguard Worker 103*8975f5c5SAndroid Build Coastguard Worker # ASAN requires O MR1. 104*8975f5c5SAndroid Build Coastguard Worker # https://github.com/google/sanitizers/wiki/AddressSanitizerOnAndroid/01f8df1ac1a447a8475cdfcb03e8b13140042dbd#running-with-wrapsh-recommended 105*8975f5c5SAndroid Build Coastguard Worker if (is_asan) { 106*8975f5c5SAndroid Build Coastguard Worker min_supported_sdk_version = 27 107*8975f5c5SAndroid Build Coastguard Worker } 108*8975f5c5SAndroid Build Coastguard Worker 109*8975f5c5SAndroid Build Coastguard Worker assert( 110*8975f5c5SAndroid Build Coastguard Worker default_min_sdk_version >= min_supported_sdk_version, 111*8975f5c5SAndroid Build Coastguard Worker "default_min_sdk_version ($default_min_sdk_version) must be >= min_supported_sdk_version ($min_supported_sdk_version)") 112*8975f5c5SAndroid Build Coastguard Worker 113*8975f5c5SAndroid Build Coastguard Worker # Avoid typos when setting android_static_analysis in args.gn. 114*8975f5c5SAndroid Build Coastguard Worker assert(android_static_analysis == "on" || android_static_analysis == "off" || 115*8975f5c5SAndroid Build Coastguard Worker android_static_analysis == "build_server") 116*8975f5c5SAndroid Build Coastguard Worker 117*8975f5c5SAndroid Build Coastguard Worker # This configuration has not bot coverage and has broken multiple times. 118*8975f5c5SAndroid Build Coastguard Worker # Warn against it. 119*8975f5c5SAndroid Build Coastguard Worker assert(!(enable_chrome_android_internal && skip_secondary_abi_for_cq)) 120*8975f5c5SAndroid Build Coastguard Worker 121*8975f5c5SAndroid Build Coastguard Worker if (enable_chrome_android_internal) { 122*8975f5c5SAndroid Build Coastguard Worker import("//clank/config.gni") 123*8975f5c5SAndroid Build Coastguard Worker } else { 124*8975f5c5SAndroid Build Coastguard Worker import("//build/config/android/sdk.gni") 125*8975f5c5SAndroid Build Coastguard Worker declare_args() { 126*8975f5c5SAndroid Build Coastguard Worker # Which Android SDK to use. 127*8975f5c5SAndroid Build Coastguard Worker android_sdk_release = default_android_sdk_release 128*8975f5c5SAndroid Build Coastguard Worker } 129*8975f5c5SAndroid Build Coastguard Worker } 130*8975f5c5SAndroid Build Coastguard Worker 131*8975f5c5SAndroid Build Coastguard Worker if (!defined(default_android_ndk_root)) { 132*8975f5c5SAndroid Build Coastguard Worker default_android_ndk_root = "//third_party/android_toolchain/ndk" 133*8975f5c5SAndroid Build Coastguard Worker default_android_ndk_version = "r27" 134*8975f5c5SAndroid Build Coastguard Worker } else { 135*8975f5c5SAndroid Build Coastguard Worker assert(defined(default_android_ndk_version)) 136*8975f5c5SAndroid Build Coastguard Worker } 137*8975f5c5SAndroid Build Coastguard Worker 138*8975f5c5SAndroid Build Coastguard Worker public_android_sdk_root = "//third_party/android_sdk/public" 139*8975f5c5SAndroid Build Coastguard Worker public_android_sdk_build_tools = 140*8975f5c5SAndroid Build Coastguard Worker "${public_android_sdk_root}/build-tools/35.0.0" 141*8975f5c5SAndroid Build Coastguard Worker public_android_sdk_platform_version = "35" 142*8975f5c5SAndroid Build Coastguard Worker if (android_sdk_release == "v") { 143*8975f5c5SAndroid Build Coastguard Worker default_android_sdk_root = public_android_sdk_root 144*8975f5c5SAndroid Build Coastguard Worker default_android_sdk_platform_version = public_android_sdk_platform_version 145*8975f5c5SAndroid Build Coastguard Worker default_android_sdk_build_tools_version = "35.0.0" 146*8975f5c5SAndroid Build Coastguard Worker public_android_sdk = true 147*8975f5c5SAndroid Build Coastguard Worker } 148*8975f5c5SAndroid Build Coastguard Worker 149*8975f5c5SAndroid Build Coastguard Worker # For use downstream when we are building with preview Android SDK 150*8975f5c5SAndroid Build Coastguard Worker if (!defined(final_android_sdk)) { 151*8975f5c5SAndroid Build Coastguard Worker final_android_sdk = public_android_sdk 152*8975f5c5SAndroid Build Coastguard Worker } 153*8975f5c5SAndroid Build Coastguard Worker 154*8975f5c5SAndroid Build Coastguard Worker if (!defined(default_lint_android_sdk_root)) { 155*8975f5c5SAndroid Build Coastguard Worker # Purposefully repeated so that downstream can change 156*8975f5c5SAndroid Build Coastguard Worker # default_android_sdk_root without changing lint version. 157*8975f5c5SAndroid Build Coastguard Worker default_lint_android_sdk_root = public_android_sdk_root 158*8975f5c5SAndroid Build Coastguard Worker default_lint_android_sdk_version = public_android_sdk_platform_version 159*8975f5c5SAndroid Build Coastguard Worker } 160*8975f5c5SAndroid Build Coastguard Worker 161*8975f5c5SAndroid Build Coastguard Worker if (!defined(default_extras_android_sdk_root)) { 162*8975f5c5SAndroid Build Coastguard Worker # Purposefully repeated so that downstream can change 163*8975f5c5SAndroid Build Coastguard Worker # default_android_sdk_root without changing where we load the SDK extras 164*8975f5c5SAndroid Build Coastguard Worker # from. (Google Play services, etc.) 165*8975f5c5SAndroid Build Coastguard Worker default_extras_android_sdk_root = public_android_sdk_root 166*8975f5c5SAndroid Build Coastguard Worker } 167*8975f5c5SAndroid Build Coastguard Worker 168*8975f5c5SAndroid Build Coastguard Worker if (!defined(default_android_keystore_path)) { 169*8975f5c5SAndroid Build Coastguard Worker default_android_keystore_path = "//build/android/chromium-debug.keystore" 170*8975f5c5SAndroid Build Coastguard Worker default_android_keystore_name = "chromiumdebugkey" 171*8975f5c5SAndroid Build Coastguard Worker default_android_keystore_password = "chromium" 172*8975f5c5SAndroid Build Coastguard Worker } 173*8975f5c5SAndroid Build Coastguard Worker 174*8975f5c5SAndroid Build Coastguard Worker # google_play_services_package contains the path where individual client 175*8975f5c5SAndroid Build Coastguard Worker # targets (e.g. google_play_services_base_java) are located. 176*8975f5c5SAndroid Build Coastguard Worker if (!defined(google_play_services_package)) { 177*8975f5c5SAndroid Build Coastguard Worker google_play_services_package = "//third_party/android_deps" 178*8975f5c5SAndroid Build Coastguard Worker } 179*8975f5c5SAndroid Build Coastguard Worker 180*8975f5c5SAndroid Build Coastguard Worker if (!defined(android_protoc_bin)) { 181*8975f5c5SAndroid Build Coastguard Worker android_protoc_bin = "//third_party/android_build_tools/protoc/cipd/protoc" 182*8975f5c5SAndroid Build Coastguard Worker } 183*8975f5c5SAndroid Build Coastguard Worker 184*8975f5c5SAndroid Build Coastguard Worker webview_public_framework_dep = 185*8975f5c5SAndroid Build Coastguard Worker "//third_party/android_sdk:public_framework_system_java" 186*8975f5c5SAndroid Build Coastguard Worker if (!defined(webview_framework_dep)) { 187*8975f5c5SAndroid Build Coastguard Worker webview_framework_dep = webview_public_framework_dep 188*8975f5c5SAndroid Build Coastguard Worker } 189*8975f5c5SAndroid Build Coastguard Worker 190*8975f5c5SAndroid Build Coastguard Worker assert(defined(default_android_sdk_root), 191*8975f5c5SAndroid Build Coastguard Worker "SDK release " + android_sdk_release + " not recognized.") 192*8975f5c5SAndroid Build Coastguard Worker 193*8975f5c5SAndroid Build Coastguard Worker declare_args() { 194*8975f5c5SAndroid Build Coastguard Worker android_ndk_root = default_android_ndk_root 195*8975f5c5SAndroid Build Coastguard Worker android_ndk_version = default_android_ndk_version 196*8975f5c5SAndroid Build Coastguard Worker 197*8975f5c5SAndroid Build Coastguard Worker # Android API level for 32 bits platforms 198*8975f5c5SAndroid Build Coastguard Worker android32_ndk_api_level = default_min_sdk_version 199*8975f5c5SAndroid Build Coastguard Worker 200*8975f5c5SAndroid Build Coastguard Worker # Android API level for 64 bits platforms 201*8975f5c5SAndroid Build Coastguard Worker android64_ndk_api_level = default_min_sdk_version 202*8975f5c5SAndroid Build Coastguard Worker 203*8975f5c5SAndroid Build Coastguard Worker if (default_min_sdk_version < 21) { 204*8975f5c5SAndroid Build Coastguard Worker # Android did not support 64 bit before API 21. 205*8975f5c5SAndroid Build Coastguard Worker android64_ndk_api_level = 21 206*8975f5c5SAndroid Build Coastguard Worker } 207*8975f5c5SAndroid Build Coastguard Worker if (current_cpu == "riscv64" && default_min_sdk_version < 35) { 208*8975f5c5SAndroid Build Coastguard Worker # Android did not support RISC-V64 before API 35. 209*8975f5c5SAndroid Build Coastguard Worker android64_ndk_api_level = 35 210*8975f5c5SAndroid Build Coastguard Worker } 211*8975f5c5SAndroid Build Coastguard Worker 212*8975f5c5SAndroid Build Coastguard Worker android_sdk_root = default_android_sdk_root 213*8975f5c5SAndroid Build Coastguard Worker android_sdk_build_tools_version = default_android_sdk_build_tools_version 214*8975f5c5SAndroid Build Coastguard Worker android_sdk_platform_version = default_android_sdk_platform_version 215*8975f5c5SAndroid Build Coastguard Worker 216*8975f5c5SAndroid Build Coastguard Worker lint_android_sdk_root = default_lint_android_sdk_root 217*8975f5c5SAndroid Build Coastguard Worker lint_android_sdk_version = default_lint_android_sdk_version 218*8975f5c5SAndroid Build Coastguard Worker 219*8975f5c5SAndroid Build Coastguard Worker # Libc++ library directory. Override to use a custom libc++ binary. 220*8975f5c5SAndroid Build Coastguard Worker android_libcpp_lib_dir = "" 221*8975f5c5SAndroid Build Coastguard Worker 222*8975f5c5SAndroid Build Coastguard Worker # Android versionCode for android_apk()s that don't explicitly set one. 223*8975f5c5SAndroid Build Coastguard Worker android_default_version_code = "1" 224*8975f5c5SAndroid Build Coastguard Worker 225*8975f5c5SAndroid Build Coastguard Worker # Android versionName for android_apk()s that don't explicitly set one. 226*8975f5c5SAndroid Build Coastguard Worker android_default_version_name = "Developer Build" 227*8975f5c5SAndroid Build Coastguard Worker 228*8975f5c5SAndroid Build Coastguard Worker # Forced Android versionCode 229*8975f5c5SAndroid Build Coastguard Worker android_override_version_code = "" 230*8975f5c5SAndroid Build Coastguard Worker 231*8975f5c5SAndroid Build Coastguard Worker # Forced Android versionName 232*8975f5c5SAndroid Build Coastguard Worker android_override_version_name = "" 233*8975f5c5SAndroid Build Coastguard Worker 234*8975f5c5SAndroid Build Coastguard Worker # The path to the keystore to use for signing builds. 235*8975f5c5SAndroid Build Coastguard Worker android_keystore_path = default_android_keystore_path 236*8975f5c5SAndroid Build Coastguard Worker 237*8975f5c5SAndroid Build Coastguard Worker # The name of the keystore to use for signing builds. 238*8975f5c5SAndroid Build Coastguard Worker android_keystore_name = default_android_keystore_name 239*8975f5c5SAndroid Build Coastguard Worker 240*8975f5c5SAndroid Build Coastguard Worker # The password for the keystore to use for signing builds. 241*8975f5c5SAndroid Build Coastguard Worker android_keystore_password = default_android_keystore_password 242*8975f5c5SAndroid Build Coastguard Worker 243*8975f5c5SAndroid Build Coastguard Worker # Mark APKs as android:debuggable="true". 244*8975f5c5SAndroid Build Coastguard Worker debuggable_apks = !is_official_build 245*8975f5c5SAndroid Build Coastguard Worker 246*8975f5c5SAndroid Build Coastguard Worker # Set to false to disable the Errorprone compiler. 247*8975f5c5SAndroid Build Coastguard Worker use_errorprone_java_compiler = android_static_analysis != "off" 248*8975f5c5SAndroid Build Coastguard Worker 249*8975f5c5SAndroid Build Coastguard Worker # When true, updates all android_aar_prebuilt() .info files during gn gen. 250*8975f5c5SAndroid Build Coastguard Worker # Refer to android_aar_prebuilt() for more details. 251*8975f5c5SAndroid Build Coastguard Worker update_android_aar_prebuilts = false 252*8975f5c5SAndroid Build Coastguard Worker 253*8975f5c5SAndroid Build Coastguard Worker # Turns off android lint. 254*8975f5c5SAndroid Build Coastguard Worker disable_android_lint = android_static_analysis == "off" 255*8975f5c5SAndroid Build Coastguard Worker 256*8975f5c5SAndroid Build Coastguard Worker # Location of aapt2 used for app bundles. For now, a more recent version 257*8975f5c5SAndroid Build Coastguard Worker # than the one distributed with the Android SDK is required. 258*8975f5c5SAndroid Build Coastguard Worker android_sdk_tools_bundle_aapt2_dir = 259*8975f5c5SAndroid Build Coastguard Worker "//third_party/android_build_tools/aapt2/cipd" 260*8975f5c5SAndroid Build Coastguard Worker 261*8975f5c5SAndroid Build Coastguard Worker # Causes expectation failures to break the build, otherwise, just warns on 262*8975f5c5SAndroid Build Coastguard Worker # stderr and writes a failure file to $android_configuration_failure_dir: 263*8975f5c5SAndroid Build Coastguard Worker fail_on_android_expectations = false 264*8975f5c5SAndroid Build Coastguard Worker 265*8975f5c5SAndroid Build Coastguard Worker # Controls whether proguard obfuscation is enabled for targets 266*8975f5c5SAndroid Build Coastguard Worker # configured to use it. 267*8975f5c5SAndroid Build Coastguard Worker enable_proguard_obfuscation = true 268*8975f5c5SAndroid Build Coastguard Worker 269*8975f5c5SAndroid Build Coastguard Worker # Controls whether |short_resource_paths| and |strip_resource_names| are 270*8975f5c5SAndroid Build Coastguard Worker # respected. Useful when trying to analyze APKs using tools that do not 271*8975f5c5SAndroid Build Coastguard Worker # support mapping these names. 272*8975f5c5SAndroid Build Coastguard Worker enable_arsc_obfuscation = true 273*8975f5c5SAndroid Build Coastguard Worker 274*8975f5c5SAndroid Build Coastguard Worker # Controls whether |strip_unused_resources| is respected. Useful when trying 275*8975f5c5SAndroid Build Coastguard Worker # to analyze APKs using tools that do not support missing resources from 276*8975f5c5SAndroid Build Coastguard Worker # resources.arsc. 277*8975f5c5SAndroid Build Coastguard Worker enable_unused_resource_stripping = true 278*8975f5c5SAndroid Build Coastguard Worker 279*8975f5c5SAndroid Build Coastguard Worker # Controls whether specifying |art_profile_path| automatically adds a binary 280*8975f5c5SAndroid Build Coastguard Worker # baseline profile to the APK/AAB. 281*8975f5c5SAndroid Build Coastguard Worker # Currently disabled while bundletool does not support baseline profiles in 282*8975f5c5SAndroid Build Coastguard Worker # non-base splits. 283*8975f5c5SAndroid Build Coastguard Worker enable_baseline_profiles = false 284*8975f5c5SAndroid Build Coastguard Worker 285*8975f5c5SAndroid Build Coastguard Worker # Controls whether specifying |art_profile_path| automatically applies it as 286*8975f5c5SAndroid Build Coastguard Worker # a startup profile to the APK/AAB. 287*8975f5c5SAndroid Build Coastguard Worker # Currently disabled while R8 causes checkdiscard errors due to 288*8975f5c5SAndroid Build Coastguard Worker # methods/classes not being inlined correctly. 289*8975f5c5SAndroid Build Coastguard Worker enable_startup_profiles = false 290*8975f5c5SAndroid Build Coastguard Worker 291*8975f5c5SAndroid Build Coastguard Worker # The target to use as the system WebView implementation. 292*8975f5c5SAndroid Build Coastguard Worker if (android_64bit_target_cpu) { 293*8975f5c5SAndroid Build Coastguard Worker if (skip_secondary_abi_for_cq) { 294*8975f5c5SAndroid Build Coastguard Worker system_webview_apk_target = "//android_webview:system_webview_64_apk" 295*8975f5c5SAndroid Build Coastguard Worker } else { 296*8975f5c5SAndroid Build Coastguard Worker system_webview_apk_target = "//android_webview:system_webview_32_64_apk" 297*8975f5c5SAndroid Build Coastguard Worker } 298*8975f5c5SAndroid Build Coastguard Worker } else { 299*8975f5c5SAndroid Build Coastguard Worker system_webview_apk_target = "//android_webview:system_webview_apk" 300*8975f5c5SAndroid Build Coastguard Worker } 301*8975f5c5SAndroid Build Coastguard Worker 302*8975f5c5SAndroid Build Coastguard Worker # Where to write failed expectations for bots to read. 303*8975f5c5SAndroid Build Coastguard Worker expectations_failure_dir = "$root_build_dir/failed_expectations" 304*8975f5c5SAndroid Build Coastguard Worker } 305*8975f5c5SAndroid Build Coastguard Worker 306*8975f5c5SAndroid Build Coastguard Worker if (is_asan) { 307*8975f5c5SAndroid Build Coastguard Worker # Disable lint since increasing min_sdk_version can cause ObsoleteSdkInt warnings. 308*8975f5c5SAndroid Build Coastguard Worker disable_android_lint = true 309*8975f5c5SAndroid Build Coastguard Worker } 310*8975f5c5SAndroid Build Coastguard Worker 311*8975f5c5SAndroid Build Coastguard Worker # We need a second declare_args block to make sure we are using the overridden 312*8975f5c5SAndroid Build Coastguard Worker # value of the arguments set above. 313*8975f5c5SAndroid Build Coastguard Worker declare_args() { 314*8975f5c5SAndroid Build Coastguard Worker # Default value for targetSdkVersion for APK and bundle targets. 315*8975f5c5SAndroid Build Coastguard Worker default_target_sdk_version = "34" 316*8975f5c5SAndroid Build Coastguard Worker 317*8975f5c5SAndroid Build Coastguard Worker # Whether java assertions and Preconditions checks are enabled. 318*8975f5c5SAndroid Build Coastguard Worker enable_java_asserts = dcheck_always_on || !is_official_build 319*8975f5c5SAndroid Build Coastguard Worker 320*8975f5c5SAndroid Build Coastguard Worker # Reduce build time by using d8 incremental build. 321*8975f5c5SAndroid Build Coastguard Worker enable_incremental_d8 = true 322*8975f5c5SAndroid Build Coastguard Worker 323*8975f5c5SAndroid Build Coastguard Worker # Enables trace event injection on Android views with bytecode rewriting. 324*8975f5c5SAndroid Build Coastguard Worker # This adds an additional step on android_app_bundle_module targets that 325*8975f5c5SAndroid Build Coastguard Worker # adds trace events to some methods in android.view.View subclasses. 326*8975f5c5SAndroid Build Coastguard Worker enable_trace_event_bytecode_rewriting = 327*8975f5c5SAndroid Build Coastguard Worker !is_java_debug && android_channel != "stable" 328*8975f5c5SAndroid Build Coastguard Worker } 329*8975f5c5SAndroid Build Coastguard Worker 330*8975f5c5SAndroid Build Coastguard Worker assert(!incremental_install || is_java_debug, 331*8975f5c5SAndroid Build Coastguard Worker "incremental_install=true && is_java_debug=false is not supported.") 332*8975f5c5SAndroid Build Coastguard Worker 333*8975f5c5SAndroid Build Coastguard Worker # We overwrite system_webview_apk_target if it is an alias 334*8975f5c5SAndroid Build Coastguard Worker if (android_64bit_target_cpu) { 335*8975f5c5SAndroid Build Coastguard Worker system_webview_apk_target = 336*8975f5c5SAndroid Build Coastguard Worker string_replace(system_webview_apk_target, 337*8975f5c5SAndroid Build Coastguard Worker "system_webview_google_apk", 338*8975f5c5SAndroid Build Coastguard Worker "system_webview_google_32_64_apk") 339*8975f5c5SAndroid Build Coastguard Worker } 340*8975f5c5SAndroid Build Coastguard Worker 341*8975f5c5SAndroid Build Coastguard Worker # Host stuff ----------------------------------------------------------------- 342*8975f5c5SAndroid Build Coastguard Worker 343*8975f5c5SAndroid Build Coastguard Worker # Defines the name the Android build gives to the current host CPU 344*8975f5c5SAndroid Build Coastguard Worker # architecture, which is different than the names GN uses. 345*8975f5c5SAndroid Build Coastguard Worker if (host_cpu == "x64" || host_cpu == "arm64") { 346*8975f5c5SAndroid Build Coastguard Worker # Android toolchain on Mac supports both ARM64 and x64 architectures 347*8975f5c5SAndroid Build Coastguard Worker # despite the x86_64 tag in the Darwin name. 348*8975f5c5SAndroid Build Coastguard Worker android_host_arch = "x86_64" 349*8975f5c5SAndroid Build Coastguard Worker } else if (host_cpu == "x86") { 350*8975f5c5SAndroid Build Coastguard Worker android_host_arch = "x86" 351*8975f5c5SAndroid Build Coastguard Worker } else { 352*8975f5c5SAndroid Build Coastguard Worker assert(false, "Need Android toolchain support for your build CPU arch.") 353*8975f5c5SAndroid Build Coastguard Worker } 354*8975f5c5SAndroid Build Coastguard Worker 355*8975f5c5SAndroid Build Coastguard Worker # Defines the name the Android build gives to the current host CPU 356*8975f5c5SAndroid Build Coastguard Worker # architecture, which is different than the names GN uses. 357*8975f5c5SAndroid Build Coastguard Worker if (host_os == "linux") { 358*8975f5c5SAndroid Build Coastguard Worker android_host_os = "linux" 359*8975f5c5SAndroid Build Coastguard Worker } else if (host_os == "mac") { 360*8975f5c5SAndroid Build Coastguard Worker android_host_os = "darwin" 361*8975f5c5SAndroid Build Coastguard Worker } else { 362*8975f5c5SAndroid Build Coastguard Worker assert(false, "Need Android toolchain support for your build OS.") 363*8975f5c5SAndroid Build Coastguard Worker } 364*8975f5c5SAndroid Build Coastguard Worker 365*8975f5c5SAndroid Build Coastguard Worker # Directories and files ------------------------------------------------------ 366*8975f5c5SAndroid Build Coastguard Worker # 367*8975f5c5SAndroid Build Coastguard Worker # We define may of the dirs strings here for each output architecture (rather 368*8975f5c5SAndroid Build Coastguard Worker # than just the current one) since these are needed by the Android toolchain 369*8975f5c5SAndroid Build Coastguard Worker # file to define toolchains for all possible targets in one pass. 370*8975f5c5SAndroid Build Coastguard Worker 371*8975f5c5SAndroid Build Coastguard Worker android_sdk = 372*8975f5c5SAndroid Build Coastguard Worker "${android_sdk_root}/platforms/android-${android_sdk_platform_version}" 373*8975f5c5SAndroid Build Coastguard Worker android_sdk_build_tools = 374*8975f5c5SAndroid Build Coastguard Worker "${android_sdk_root}/build-tools/$android_sdk_build_tools_version" 375*8975f5c5SAndroid Build Coastguard Worker 376*8975f5c5SAndroid Build Coastguard Worker # Path to the SDK's android.jar 377*8975f5c5SAndroid Build Coastguard Worker android_sdk_jar = "$android_sdk/android.jar" 378*8975f5c5SAndroid Build Coastguard Worker 379*8975f5c5SAndroid Build Coastguard Worker # Location of libgcc. This is only needed for the current GN toolchain, so we 380*8975f5c5SAndroid Build Coastguard Worker # only need to define the current one, rather than one for every platform 381*8975f5c5SAndroid Build Coastguard Worker # like the toolchain roots. 382*8975f5c5SAndroid Build Coastguard Worker if (current_cpu == "x86") { 383*8975f5c5SAndroid Build Coastguard Worker android_prebuilt_arch = "android-x86" 384*8975f5c5SAndroid Build Coastguard Worker } else if (current_cpu == "arm") { 385*8975f5c5SAndroid Build Coastguard Worker android_prebuilt_arch = "android-arm" 386*8975f5c5SAndroid Build Coastguard Worker } else if (current_cpu == "mipsel") { 387*8975f5c5SAndroid Build Coastguard Worker android_prebuilt_arch = "android-mips" 388*8975f5c5SAndroid Build Coastguard Worker } else if (current_cpu == "x64") { 389*8975f5c5SAndroid Build Coastguard Worker android_prebuilt_arch = "android-x86_64" 390*8975f5c5SAndroid Build Coastguard Worker } else if (current_cpu == "arm64") { 391*8975f5c5SAndroid Build Coastguard Worker android_prebuilt_arch = "android-arm64" 392*8975f5c5SAndroid Build Coastguard Worker } else if (current_cpu == "mips64el") { 393*8975f5c5SAndroid Build Coastguard Worker android_prebuilt_arch = "android-mips64" 394*8975f5c5SAndroid Build Coastguard Worker } else if (current_cpu == "riscv64") { 395*8975f5c5SAndroid Build Coastguard Worker # Place holder for riscv64 support, not tested. 396*8975f5c5SAndroid Build Coastguard Worker android_prebuilt_arch = "android-riscv64" 397*8975f5c5SAndroid Build Coastguard Worker } else { 398*8975f5c5SAndroid Build Coastguard Worker assert(false, "Need android libgcc support for your target arch.") 399*8975f5c5SAndroid Build Coastguard Worker } 400*8975f5c5SAndroid Build Coastguard Worker 401*8975f5c5SAndroid Build Coastguard Worker android_toolchain_root = "$android_ndk_root/toolchains/llvm/prebuilt/${android_host_os}-${android_host_arch}" 402*8975f5c5SAndroid Build Coastguard Worker android_ndk_library_path = "$android_toolchain_root/lib64" 403*8975f5c5SAndroid Build Coastguard Worker 404*8975f5c5SAndroid Build Coastguard Worker # Point to Chromium's LLVM for tooling. 405*8975f5c5SAndroid Build Coastguard Worker android_tool_prefix = "$clang_base_path/bin/llvm-" 406*8975f5c5SAndroid Build Coastguard Worker android_readelf = "${android_tool_prefix}readobj" 407*8975f5c5SAndroid Build Coastguard Worker android_objcopy = "${android_tool_prefix}objcopy" 408*8975f5c5SAndroid Build Coastguard Worker 409*8975f5c5SAndroid Build Coastguard Worker android_sdk_tools_bundle_aapt2 = "${android_sdk_tools_bundle_aapt2_dir}/aapt2" 410*8975f5c5SAndroid Build Coastguard Worker 411*8975f5c5SAndroid Build Coastguard Worker _common_inputs_for_jre_jdk = [ 412*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/conf/logging.properties", 413*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/conf/security/java.security", 414*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/ct.sym", 415*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/jrt-fs.jar", 416*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/jvm.cfg", 417*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libawt.so", 418*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libawt_headless.so", 419*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libawt_xawt.so", 420*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libjava.so", 421*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libjimage.so", 422*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libjli.so", 423*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libjsvml.so", 424*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libmanagement.so", 425*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libmanagement_ext.so", 426*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libnet.so", 427*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libnio.so", 428*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libverify.so", 429*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/libzip.so", 430*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/modules", 431*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/server/classes.jsa", 432*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/server/libjvm.so", 433*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/lib/tzdb.dat", 434*8975f5c5SAndroid Build Coastguard Worker ] 435*8975f5c5SAndroid Build Coastguard Worker 436*8975f5c5SAndroid Build Coastguard Worker # Actions that use java should add this as inputs so that they are rebuilt 437*8975f5c5SAndroid Build Coastguard Worker # when the JDK changes. 438*8975f5c5SAndroid Build Coastguard Worker java_paths_for_inputs = [ 439*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/bin/java", 440*8975f5c5SAndroid Build Coastguard Worker "//third_party/jdk/current/bin/java.chromium", 441*8975f5c5SAndroid Build Coastguard Worker ] + _common_inputs_for_jre_jdk 442*8975f5c5SAndroid Build Coastguard Worker 443*8975f5c5SAndroid Build Coastguard Worker javac_paths_for_inputs = 444*8975f5c5SAndroid Build Coastguard Worker [ "//third_party/jdk/current/bin/javac" ] + _common_inputs_for_jre_jdk 445*8975f5c5SAndroid Build Coastguard Worker 446*8975f5c5SAndroid Build Coastguard Worker kotlinc_paths_for_inputs = [ 447*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc", 448*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/bin/kotlinc", 449*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/jvm-abi-gen.jar", 450*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/annotations-13.0.jar", 451*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlin-compiler.jar", 452*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlin-preloader.jar", 453*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlin-reflect.jar", 454*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlin-script-runtime.jar", 455*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlin-scripting-common.jar", 456*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlin-scripting-compiler-impl.jar", 457*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlin-scripting-compiler.jar", 458*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlin-scripting-jvm.jar", 459*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlin-stdlib.jar", 460*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/kotlinx-coroutines-core-jvm.jar", 461*8975f5c5SAndroid Build Coastguard Worker "//third_party/kotlinc/current/lib/trove4j.jar", 462*8975f5c5SAndroid Build Coastguard Worker ] 463*8975f5c5SAndroid Build Coastguard Worker 464*8975f5c5SAndroid Build Coastguard Worker # TODO(crbug.com/40261378): Remove. 465*8975f5c5SAndroid Build Coastguard Worker use_upstream_errorprone_annotations_threadsafe = true 466*8975f5c5SAndroid Build Coastguard Worker} 467