# 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")
import("//build/toolchain/ccache.gni")
import("//build/toolchain/clang.gni")
import("//build/toolchain/gcc_toolchain.gni")
import("//build/toolchain/goma.gni")

declare_args() {
  toolchain_prefix = ""
  # TODO(zra): Add an argument for overriding the host toolchain.
}

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

gcc_toolchain("arm") {
  prefix = "arm-linux-gnueabihf-"
  if (toolchain_prefix != "") {
    prefix = toolchain_prefix
  }

  cc = "${compiler_prefix}${prefix}gcc"
  cxx = "${compiler_prefix}${prefix}g++"

  ar = "${prefix}ar"
  ld = cxx
  readelf = "${prefix}readelf"
  nm = "${prefix}nm"
  strip = "${prefix}strip"

  toolchain_cpu = "arm"
  toolchain_os = "linux"
  is_clang = false
}

gcc_toolchain("arm64") {
  prefix = "aarch64-linux-gnu-"
  if (toolchain_prefix != "") {
    prefix = toolchain_prefix
  }

  cc = "${compiler_prefix}${prefix}gcc"
  cxx = "${compiler_prefix}${prefix}g++"

  ar = "${prefix}ar"
  ld = cxx
  readelf = "${prefix}readelf"
  nm = "${prefix}nm"
  strip = "${prefix}strip"

  toolchain_cpu = "arm64"
  toolchain_os = "linux"
  is_clang = false
}

gcc_toolchain("clang_x86") {
  prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
  cc = "${compiler_prefix}${prefix}/clang"
  cxx = "${compiler_prefix}${prefix}/clang++"
  readelf = "readelf"
  nm = "${prefix}/llvm-nm"
  ar = "${prefix}/llvm-ar"
  ld = cxx
  strip = "${prefix}/strip"

  toolchain_cpu = "x86"
  toolchain_os = "linux"
  is_clang = true
}

gcc_toolchain("x86") {
  prefix = ""
  cc = "${compiler_prefix}${prefix}gcc"
  cxx = "${compiler_prefix}${prefix}g++"

  readelf = "${prefix}readelf"
  nm = "${prefix}nm"
  ar = "${prefix}ar"
  ld = cxx
  strip = "${prefix}strip"

  toolchain_cpu = "x86"
  toolchain_os = "linux"
  is_clang = false
}

gcc_toolchain("clang_x64") {
  prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
  cc = "${compiler_prefix}${prefix}/clang"
  cxx = "${compiler_prefix}${prefix}/clang++"

  readelf = "readelf"
  nm = "${prefix}/llvm-nm"
  ar = "${prefix}/llvm-ar"
  ld = cxx
  strip = "${prefix}/strip"

  toolchain_cpu = "x64"
  toolchain_os = "linux"
  is_clang = true
}

gcc_toolchain("x64") {
  prefix = ""
  cc = "${compiler_prefix}${prefix}gcc"
  cxx = "${compiler_prefix}${prefix}g++"

  readelf = "${prefix}readelf"
  nm = "${prefix}nm"
  ar = "${prefix}ar"
  ld = cxx
  strip = "${prefix}strip"

  toolchain_cpu = "x64"
  toolchain_os = "linux"
  is_clang = false
}
