# 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/ozone.gni")
import("//build/config/sysroot.gni")
import("//build/toolchain/gcc_toolchain.gni")

clang_toolchain("clang_ppc64") {
  enable_linker_map = true
  toolchain_args = {
    current_cpu = "ppc64"
    current_os = "linux"
  }
}

clang_toolchain("clang_arm") {
  toolprefix = "arm-linux-gnueabihf-"
  toolchain_args = {
    current_cpu = "arm"
    current_os = "linux"
  }
}

clang_toolchain("clang_arm64") {
  toolprefix = "aarch64-linux-gnu-"
  toolchain_args = {
    current_cpu = "arm64"
    current_os = "linux"
  }
}

gcc_toolchain("arm64") {
  toolprefix = "aarch64-linux-gnu-"

  cc = "${toolprefix}gcc"
  cxx = "${toolprefix}g++"

  ar = "${toolprefix}ar"
  ld = cxx
  readelf = "${toolprefix}readelf"
  nm = "${toolprefix}nm"

  toolchain_args = {
    current_cpu = "arm64"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
  }
}

gcc_toolchain("arm") {
  toolprefix = "arm-linux-gnueabihf-"

  cc = "${toolprefix}gcc"
  cxx = "${toolprefix}g++"

  ar = "${toolprefix}ar"
  ld = cxx
  readelf = "${toolprefix}readelf"
  nm = "${toolprefix}nm"

  toolchain_args = {
    current_cpu = "arm"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
  }
}

clang_toolchain("clang_x86") {
  # Output linker map files for binary size analysis.
  enable_linker_map = true

  toolchain_args = {
    current_cpu = "x86"
    current_os = "linux"
  }
}

clang_toolchain("clang_x86_v8_arm") {
  toolchain_args = {
    current_cpu = "x86"
    v8_current_cpu = "arm"
    current_os = "linux"
  }
}

clang_toolchain("clang_x86_v8_mipsel") {
  toolchain_args = {
    current_cpu = "x86"
    v8_current_cpu = "mipsel"
    current_os = "linux"
  }
}

clang_toolchain("clang_x86_v8_mips") {
  toolchain_args = {
    current_cpu = "x86"
    v8_current_cpu = "mips"
    current_os = "linux"
  }
}

gcc_toolchain("x86") {
  cc = "gcc"
  cxx = "g++"

  readelf = "readelf"
  nm = "nm"
  ar = "ar"
  ld = cxx

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

  toolchain_args = {
    current_cpu = "x86"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
  }
}

clang_toolchain("clang_x64") {
  # Output linker map files for binary size analysis.
  enable_linker_map = true

  toolchain_args = {
    current_cpu = "x64"
    current_os = "linux"
  }
}

clang_toolchain("clang_x64_v8_arm64") {
  toolchain_args = {
    current_cpu = "x64"
    v8_current_cpu = "arm64"
    current_os = "linux"
  }
}

clang_toolchain("clang_x64_v8_mips64el") {
  toolchain_args = {
    current_cpu = "x64"
    v8_current_cpu = "mips64el"
    current_os = "linux"
  }
}

clang_toolchain("clang_x64_v8_mips64") {
  toolchain_args = {
    current_cpu = "x64"
    v8_current_cpu = "mips64"
    current_os = "linux"
  }
}

clang_toolchain("clang_x64_v8_riscv64") {
  toolchain_args = {
    current_cpu = "x64"
    v8_current_cpu = "riscv64"
    current_os = "linux"
  }
}

# In a LaCrOS build, this toolchain is intended to be used as an alternate
# toolchain to build Ash-Chrome in a subdirectory.
clang_toolchain("ash_clang_x64") {
  toolchain_args = {
    # This turns the toolchain into the "Linux ChromeOS" build
    current_os = "chromeos"
    target_os = "chromeos"
    current_cpu = current_cpu

    # This turns off all of the LaCrOS-specific flags.
    also_build_ash_chrome = false
    chromeos_is_browser_only = false
    ozone_platform = "x11"
    ozone_platform_wayland = false
    use_clang_coverage = false
  }
}

gcc_toolchain("x64") {
  cc = "gcc"
  cxx = "g++"

  readelf = "readelf"
  nm = "nm"
  ar = "ar"
  ld = cxx

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

  toolchain_args = {
    current_cpu = "x64"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
  }
}

clang_toolchain("clang_mipsel") {
  toolchain_args = {
    current_cpu = "mipsel"
    current_os = "linux"
  }
}

clang_toolchain("clang_mips64el") {
  toolchain_args = {
    current_cpu = "mips64el"
    current_os = "linux"
  }
}

gcc_toolchain("mipsel") {
  toolprefix = "mipsel-linux-gnu-"

  cc = "${toolprefix}gcc"
  cxx = " ${toolprefix}g++"
  ar = "${toolprefix}ar"
  ld = cxx
  readelf = "${toolprefix}readelf"
  nm = "${toolprefix}nm"

  toolchain_args = {
    cc_wrapper = ""
    current_cpu = "mipsel"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
    use_goma = false
  }
}

gcc_toolchain("mips64el") {
  toolprefix = "mips64el-linux-gnuabi64-"

  cc = "${toolprefix}gcc"
  cxx = "${toolprefix}g++"
  ar = "${toolprefix}ar"
  ld = cxx
  readelf = "${toolprefix}readelf"
  nm = "${toolprefix}nm"

  toolchain_args = {
    cc_wrapper = ""
    current_cpu = "mips64el"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
    use_goma = false
  }
}

gcc_toolchain("riscv64") {
  toolprefix = "riscv64-linux-gnu"

  cc = "${toolprefix}-gcc"
  cxx = "${toolprefix}-g++"

  readelf = "${toolprefix}-readelf"
  nm = "${toolprefix}-nm"
  ar = "${toolprefix}-ar"
  ld = cxx

  toolchain_args = {
    current_cpu = "riscv64"
    current_os = "linux"
    is_clang = false
  }
}

clang_toolchain("clang_s390x") {
  toolchain_args = {
    current_cpu = "s390x"
    current_os = "linux"
    is_clang = true
  }
}

gcc_toolchain("s390x") {
  cc = "gcc"
  cxx = "g++"

  readelf = "readelf"
  nm = "nm"
  ar = "ar"
  ld = cxx

  toolchain_args = {
    current_cpu = "s390x"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
  }
}

gcc_toolchain("ppc64") {
  cc = "gcc"
  cxx = "g++"

  readelf = "readelf"
  nm = "nm"
  ar = "ar"
  ld = cxx

  toolchain_args = {
    current_cpu = "ppc64"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
  }
}

gcc_toolchain("mips") {
  toolprefix = "mips-linux-gnu-"

  cc = "${toolprefix}gcc"
  cxx = "${toolprefix}g++"

  readelf = "${toolprefix}readelf"
  nm = "${toolprefix}nm"
  ar = "${toolprefix}ar"
  ld = cxx

  toolchain_args = {
    current_cpu = "mips"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
  }
}

gcc_toolchain("mips64") {
  toolprefix = "mips64-linux-gnuabi64-"

  cc = "${toolprefix}gcc"
  cxx = "${toolprefix}g++"

  readelf = "${toolprefix}readelf"
  nm = "${toolprefix}nm"
  ar = "${toolprefix}ar"
  ld = cxx

  toolchain_args = {
    current_cpu = "mips64"
    current_os = "linux"

    # reclient does not support gcc.
    use_rbe = false
    is_clang = false
  }
}
