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

    cc = tool_prefix + "gcc"
    cxx = tool_prefix + "g++"
    ar = tool_prefix + "ar"
    ld = cxx
    readelf = tool_prefix + "readelf"
    nm = 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"

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