# Copyright 2014 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.

# This file contains common system config stuff for the Android build.

if (is_android) {
  has_chrome_android_internal = exec_script("//build/dir_exists.py",
          [ rebase_path("//clank", root_build_dir) ],
          "string") == "True"

  if (has_chrome_android_internal) {
    import("//clank/config.gni")
  } else {
    default_android_sdk_root = "//third_party/android_tools/sdk"
    default_android_sdk_version = "21"
    default_android_sdk_build_tools_version = "21.0.1"
  }

  declare_args() {
    android_sdk_root = default_android_sdk_root
    android_sdk_version = default_android_sdk_version
    android_sdk_build_tools_version = default_android_sdk_build_tools_version

    # This is set when building the Android WebView inside the Android build
    # system, using the 'android' gyp backend. The WebView code is still built
    # when this is unset, but builds using the normal chromium build system.
    is_android_webview_build = false

    android_default_keystore_path = "//build/android/ant/chromium-debug.keystore"
    android_default_keystore_name = "chromiumdebugkey"
    android_default_keystore_password = "chromium"

    # This is a unique identifier for a given build. It's used for
    # identifying various build artifacts corresponding to a particular build of
    # chrome (e.g. where to find archived symbols).
    android_chrome_build_id = "\"\""
  }

  # Host stuff -----------------------------------------------------------------

  # Defines the name the Android build gives to the current host CPU
  # architecture, which is different than the names GN uses.
  if (build_cpu_arch == "x64") {
    android_host_arch = "x86_64"
  } else if (build_cpu_arch == "x86") {
    android_host_arch = "x86"
  } else {
    assert(false, "Need Android toolchain support for your build CPU arch.")
  }

  # Defines the name the Android build gives to the current host CPU
  # architecture, which is different than the names GN uses.
  if (build_os == "linux") {
    android_host_os = "linux"
  } else {
    assert(false, "Need Android toolchain support for your build OS.")
  }

  # Directories and files ------------------------------------------------------
  #
  # We define may of the dirs strings here for each output architecture (rather
  # than just the current one) since these are needed by the Android toolchain
  # file to define toolchains for all possible targets in one pass.

  android_sdk = "${android_sdk_root}/platforms/android-${android_sdk_version}"

  # Path to the Android NDK and SDK.
  android_ndk_root = "//third_party/android_tools/ndk"
  android_ndk_include_dir = "$android_ndk_root/usr/include"

  android_sdk = "${android_sdk_root}/platforms/android-${android_sdk_version}"

  android_sdk_tools = "${android_sdk_root}/tools"
  android_sdk_build_tools = "${android_sdk_root}/build-tools/$android_sdk_build_tools_version"

  # Path to the SDK's android.jar
  android_sdk_jar = "$android_sdk/android.jar"

  zipalign_path = "$android_sdk_build_tools/zipalign"

  # Subdirectories inside android_ndk_root that contain the sysroot for the
  # associated platform.
  _android_api_level = 14
  x86_android_sysroot_subdir = "platforms/android-${_android_api_level}/arch-x86"
  arm_android_sysroot_subdir = "platforms/android-${_android_api_level}/arch-arm"
  mips_android_sysroot_subdir = "platforms/android-${_android_api_level}/arch-mips"

  # Toolchain root directory for each build. The actual binaries are inside
  # a "bin" directory inside of these.
  _android_toolchain_version = "4.9"
  x86_android_toolchain_root = "$android_ndk_root/toolchains/x86-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
  arm_android_toolchain_root = "$android_ndk_root/toolchains/arm-linux-androideabi-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
  mips_android_toolchain_root = "$android_ndk_root/toolchains/mipsel-linux-android-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"

  # Location of libgcc. This is only needed for the current GN toolchain, so we
  # only need to define the current one, rather than one for every platform
  # like the toolchain roots.
  if (cpu_arch == "x86") {
    android_prebuilt_arch = "android-x86"
    _binary_prefix = "i686-linux-android"
    android_toolchain_root = "$x86_android_toolchain_root"
    android_libgcc_file =
      "$android_toolchain_root/lib/gcc/i686-linux-android/${_android_toolchain_version}/libgcc.a"
  } else if (cpu_arch == "arm") {
    android_prebuilt_arch = "android-arm"
    _binary_prefix = "arm-linux-androideabi"
    android_toolchain_root = "$arm_android_toolchain_root"
    android_libgcc_file =
      "$android_toolchain_root/lib/gcc/arm-linux-androideabi/${_android_toolchain_version}/libgcc.a"
  } else if (cpu_arch == "mipsel") {
    android_prebuilt_arch = "android-mips"
    _binary_prefix = "mipsel-linux-android"
    android_toolchain_root = "$mips_android_toolchain_root"
    android_libgcc_file =
      "$android_toolchain_root/lib/gcc/mipsel-linux-android/${_android_toolchain_version}/libgcc.a"
  } else {
    assert(false, "Need android libgcc support for your target arch.")
  }

  android_tool_prefix = "$android_toolchain_root/bin/$_binary_prefix-"
  android_readelf = "${android_tool_prefix}readelf"
  android_objcopy = "${android_tool_prefix}objcopy"
  android_gdbserver = "$android_ndk_root/prebuilt/$android_prebuilt_arch/gdbserver/gdbserver"

  # stlport stuff --------------------------------------------------------------

  if (component_mode == "shared_library") {
    android_stlport_library = "stlport_shared"
  } else {
    android_stlport_library = "stlport_static"
  }

  # ABI ------------------------------------------------------------------------

  if (cpu_arch == "x86") {
    android_app_abi = "x86"
  } else if (cpu_arch == "arm") {
    import("//build/config/arm.gni")
    if (arm_version < 7) {
      android_app_abi = "armeabi"
    } else {
      android_app_abi = "armeabi-v7a"
    }
  } else if (cpu_arch == "mipsel") {
    android_app_abi = "mips"
  } else {
    assert(false, "Unknown Android ABI: " + cpu_arch)
  }
} else {
  if (!defined(is_android_webview_build)) {
    is_android_webview_build = false
  }
}
