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

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 (current_cpu == "x86") {
  android_app_abi = "x86"
  android_abi_target = "i686-linux-android"
} 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"
} 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"

  # 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 (current_cpu == "arm64") {
  android_app_abi = "arm64-v8a"
  android_abi_target = "aarch64-linux-android"
} 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"
} 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")
}

# 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}"
}
