# 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/sysroot.gni")  # Imports android/config.gni.
import("//build/toolchain/ccache.gni")
import("//build/toolchain/clang.gni")
import("//build/toolchain/goma.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:
#  - android_ndk_sysroot
#      Sysroot for this architecture.
#  - android_ndk_lib_dir
#      Subdirectory inside of android_ndk_sysroot where libs go.
#  - tool_prefix
#      Prefix to be added to the tool names.
#  - toolchain_cpu
#      Same as gcc_toolchain
template("android_gcc_toolchain") {
  gcc_toolchain(target_name) {
    # Make our manually injected libs relative to the build dir.
    android_ndk_lib = rebase_path(
            invoker.android_ndk_sysroot + "/" + invoker.android_ndk_lib_dir,
            root_build_dir)

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

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

    # The tools should be run relative to the build dir.
    tool_prefix = rebase_path(invoker.tool_prefix, root_build_dir)

    if (use_goma) {
      assert(!use_ccache, "Goma and ccache can't be used together.")
      compiler_prefix = "$goma_dir/gomacc "
    } else if (use_ccache) {
      compiler_prefix = "ccache "
    } else {
      compiler_prefix = ""
    }

    cc = compiler_prefix + tool_prefix + "gcc"
    cxx = compiler_prefix + tool_prefix + "g++"
    ar = tool_prefix + "ar"
    ld = cxx
    readelf = compiler_prefix + tool_prefix + "readelf"
    nm = compiler_prefix + tool_prefix + "nm"

    toolchain_os = "android"
    toolchain_cpu = invoker.toolchain_cpu

    # We make the assumption that the gcc_toolchain will produce a soname with
    # the following definition.
    soname = "{{target_output_name}}{{output_extension}}"

    stripped_soname = "lib.stripped/${soname}"
    temp_stripped_soname = "${stripped_soname}.tmp"

    android_strip = "${tool_prefix}strip"

    strip_command =
        "$android_strip --strip-unneeded -o $temp_stripped_soname $soname"
    replace_command = "if ! cmp -s $temp_stripped_soname $stripped_soname; then mv $temp_stripped_soname $stripped_soname; fi"
    postsolink = "$strip_command && $replace_command"
    solink_outputs = [ stripped_soname ]
    default_output_extension = android_product_extension

    # We make the assumption that the gcc_toolchain will produce an exe with
    # the following definition.
    exe = "{{root_out_dir}}/{{target_output_name}}{{output_extension}}"
    stripped_exe = "exe.stripped/$exe"
    postlink = "$android_strip --strip-unneeded -o $stripped_exe $exe"
    link_outputs = [ stripped_exe ]
  }
}

android_gcc_toolchain("x86") {
  android_ndk_sysroot = "$android_ndk_root/$x86_android_sysroot_subdir"
  android_ndk_lib_dir = "usr/lib"

  tool_prefix = "$x86_android_toolchain_root/bin/i686-linux-android-"
  toolchain_cpu = "x86"
}

android_gcc_toolchain("arm") {
  android_ndk_sysroot = "$android_ndk_root/$arm_android_sysroot_subdir"
  android_ndk_lib_dir = "usr/lib"

  tool_prefix = "$arm_android_toolchain_root/bin/arm-linux-androideabi-"
  toolchain_cpu = "arm"
}

android_gcc_toolchain("mipsel") {
  android_ndk_sysroot = "$android_ndk_root/$mips_android_sysroot_subdir"
  android_ndk_lib_dir = "usr/lib"

  tool_prefix = "$mips_android_toolchain_root/bin/mipsel-linux-android-"
  toolchain_cpu = "mipsel"
}

android_gcc_toolchain("x64") {
  android_ndk_sysroot = "$android_ndk_root/$x86_64_android_sysroot_subdir"
  android_ndk_lib_dir = "usr/lib64"

  tool_prefix = "$x86_64_android_toolchain_root/bin/x86_64-linux-android-"
  toolchain_cpu = "x86_64"
}

android_gcc_toolchain("arm64") {
  android_ndk_sysroot = "$android_ndk_root/$arm64_android_sysroot_subdir"
  android_ndk_lib_dir = "usr/lib"

  tool_prefix = "$arm64_android_toolchain_root/bin/arm-linux-androideabi-"
  toolchain_cpu = "aarch64"
}

android_gcc_toolchain("mips64el") {
  android_ndk_sysroot = "$android_ndk_root/$mips64_android_sysroot_subdir"
  android_ndk_lib_dir = "usr/lib64"

  tool_prefix = "$mips64_android_toolchain_root/bin/mipsel-linux-android-"
  toolchain_cpu = "mipsel64el"
}
