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

import("//build/config/clang/clang.gni")
import("//build/config/sysroot.gni")  # Imports android/config.gni.
import("//build/toolchain/gcc_toolchain.gni")

# The Android GCC toolchains share most of the same parameters, so we have this
# wrapper around gcc_toolchain to avoid duplication of logic.
#
# Parameters:
#  - toolchain_root
#      Path to cpu-specific toolchain within the ndk.
#  - sysroot
#      Sysroot for this architecture.
#  - lib_dir
#      Subdirectory inside of sysroot where libs go.
#  - binary_prefix
#      Prefix of compiler executables.
template("android_gcc_toolchain") {
  gcc_toolchain(target_name) {
    assert(defined(invoker.toolchain_args),
           "toolchain_args must be defined for android_gcc_toolchain()")
    toolchain_args = invoker.toolchain_args
    toolchain_args.current_os = "android"

    # Output linker map files for binary size analysis.
    enable_linker_map = true

    # Make our manually injected libs relative to the build dir.
    _ndk_lib =
        rebase_path(invoker.sysroot + "/" + invoker.lib_dir, root_build_dir)

    libs_section_prefix = "$_ndk_lib/crtbegin_dynamic.o"
    libs_section_postfix = "$_ndk_lib/crtend_android.o"

    solink_libs_section_prefix = "$_ndk_lib/crtbegin_so.o"
    solink_libs_section_postfix = "$_ndk_lib/crtend_so.o"

    _android_tool_prefix =
        "${invoker.toolchain_root}/bin/${invoker.binary_prefix}-"

    # The tools should be run relative to the build dir.
    _tool_prefix = rebase_path("$_android_tool_prefix", root_build_dir)

    # Use the clang specified by the toolchain if there is one. Otherwise fall
    # back to the global flag.
    if (defined(toolchain_args.is_clang)) {
      toolchain_uses_clang = toolchain_args.is_clang
    } else {
      toolchain_uses_clang = is_clang
    }

    if (toolchain_uses_clang) {
      _prefix = rebase_path("$clang_base_path/bin", root_build_dir)
      cc = "$_prefix/clang"
      cxx = "$_prefix/clang++"
    } else {
      cc = "${_tool_prefix}gcc"
      cxx = "${_tool_prefix}g++"
    }
    ar = _tool_prefix + "ar"
    ld = cxx
    readelf = _tool_prefix + "readelf"
    nm = _tool_prefix + "nm"
    strip = "${_tool_prefix}strip"

    # Don't use .cr.so for loadable_modules since they are always loaded via
    # absolute path.
    loadable_module_extension = ".so"
  }
}

template("android_gcc_toolchains_helper") {
  android_gcc_toolchain("android_$target_name") {
    forward_variables_from(invoker, "*")
    toolchain_args.is_clang = false
  }

  android_gcc_toolchain("android_clang_$target_name") {
    forward_variables_from(invoker, "*")
    toolchain_args.is_clang = true
  }
}

android_gcc_toolchains_helper("x86") {
  toolchain_root = x86_android_toolchain_root
  sysroot = "$android_ndk_root/$x86_android_sysroot_subdir"
  lib_dir = "usr/lib"
  binary_prefix = "i686-linux-android"
  toolchain_args = {
    current_cpu = "x86"
  }
}

android_gcc_toolchains_helper("arm") {
  toolchain_root = arm_android_toolchain_root
  sysroot = "$android_ndk_root/$arm_android_sysroot_subdir"
  lib_dir = "usr/lib"
  binary_prefix = "arm-linux-androideabi"
  toolchain_args = {
    current_cpu = "arm"
  }
}

android_gcc_toolchains_helper("mipsel") {
  toolchain_root = mips_android_toolchain_root
  sysroot = "$android_ndk_root/$mips_android_sysroot_subdir"
  lib_dir = "usr/lib"
  binary_prefix = "mipsel-linux-android"
  toolchain_args = {
    current_cpu = "mipsel"
  }
}

android_gcc_toolchains_helper("x64") {
  toolchain_root = x86_64_android_toolchain_root
  sysroot = "$android_ndk_root/$x86_64_android_sysroot_subdir"
  lib_dir = "usr/lib64"
  binary_prefix = "x86_64-linux-android"
  toolchain_args = {
    current_cpu = "x64"
  }
}

android_gcc_toolchains_helper("arm64") {
  toolchain_root = arm64_android_toolchain_root
  sysroot = "$android_ndk_root/$arm64_android_sysroot_subdir"
  lib_dir = "usr/lib"
  binary_prefix = "aarch64-linux-android"
  toolchain_args = {
    current_cpu = "arm64"
  }
}

android_gcc_toolchains_helper("mips64el") {
  toolchain_root = mips64_android_toolchain_root
  sysroot = "$android_ndk_root/$mips64_android_sysroot_subdir"
  lib_dir = "usr/lib64"
  binary_prefix = "mips64el-linux-android"
  toolchain_args = {
    current_cpu = "mips64el"
  }
}
