# 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

  # Enable (webview) APKs that support multiple architectures. Generally
  # needed only for release builds or for webview testing. Slows down "gn gen"
  # and ninja parse time due to having to write rules for most native targets
  # a second time. Applicable only when target_cpu is 64-bit.
  enable_android_secondary_abi = is_official_build
}

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" || current_cpu == "x64" ||
    current_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 (enable_android_secondary_abi) {
  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}"
  }
}
