# 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/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_arch
#      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) {
      goma_prefix = "$goma_dir/gomacc "
    } else {
      goma_prefix = ""
    }

    cc = goma_prefix + tool_prefix + "gcc"
    cxx = goma_prefix + tool_prefix + "g++"
    ar = tool_prefix + "ar"
    ld = cxx

    toolchain_os = "android"
    toolchain_cpu_arch = invoker.toolchain_cpu_arch

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

    mkdir_command = "mkdir -p lib.stripped"
    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 = "$mkdir_command && $strip_command && $replace_command"
    solink_outputs = [ stripped_soname ]

    # 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"
    mkdir_command = "mkdir -p exe.stripped"
    strip_command = "$android_strip --strip-unneeded -o $stripped_exe $exe"
    postlink = "$mkdir_command && $strip_command"
    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_arch = "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_arch = "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_arch = "mipsel"
}
