# 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/gcc_toolchain.gni") import("//build/toolchain/goma.gni") import("//build/toolchain/rbe.gni") declare_args() { ia32_toolchain_prefix = "" x64_toolchain_prefix = "" arm_toolchain_prefix = "" arm64_toolchain_prefix = "" riscv32_toolchain_prefix = "" riscv64_toolchain_prefix = "" } if (use_goma) { assert(!use_ccache, "Goma and ccache can't be used together.") assembler_prefix = "$goma_dir/gomacc " compiler_prefix = "$goma_dir/gomacc " link_prefix = "$goma_dir/gomacc " } else if (use_rbe) { assert(!use_goma) rewrapper_args = [ "$rbe_dir/rewrapper", "--exec_root=$rbe_exec_root", "--platform=$rbe_platform", ] assembler_args = [] compiler_args = rewrapper_args + [ "--labels=type=compile,compiler=clang,lang=cpp " ] link_args = [] # rewrapper_args + [ "--labels=type=link,tool=clang " ] assembler_prefix = string_join(" ", assembler_args) compiler_prefix = string_join(" ", compiler_args) link_prefix = string_join(" ", link_args) } else if (use_ccache) { assembler_prefix = "ccache " compiler_prefix = "ccache " link_prefix = "ccache " } else { assembler_prefix = "" compiler_prefix = "" link_prefix = "" } # Google's clang does not work for alpine, use alpine's system clang if (dart_sysroot == "alpine") { rebased_clang_dir = "/usr/bin" } else if (host_cpu == "arm64") { rebased_clang_dir = rebase_path("//buildtools/linux-arm64/clang/bin", root_build_dir) } else { rebased_clang_dir = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir) } gcc_toolchain("arm") { prefix = "arm-linux-gnueabihf-" if (arm_toolchain_prefix != "") { prefix = arm_toolchain_prefix } cc = "${compiler_prefix}${prefix}gcc" cxx = "${compiler_prefix}${prefix}g++" asm = "${assembler_prefix}${prefix}gcc" ar = "${prefix}ar" ld = "${link_prefix}${prefix}g++" readelf = "${prefix}readelf" nm = "${prefix}nm" strip = "${prefix}strip" toolchain_cpu = "arm" toolchain_os = "linux" is_clang = false } gcc_toolchain("clang_arm") { prefix = rebased_clang_dir cc = "${compiler_prefix}${prefix}/clang" cxx = "${compiler_prefix}${prefix}/clang++" asm = "${assembler_prefix}${prefix}/clang" readelf = "${prefix}/llvm-readelf" nm = "${prefix}/llvm-nm" ar = "${prefix}/llvm-ar" ld = "${link_prefix}${prefix}/clang++" llvm_objcopy = "${prefix}/llvm-objcopy" toolchain_cpu = "arm" toolchain_os = "linux" is_clang = true } gcc_toolchain("arm64") { prefix = "aarch64-linux-gnu-" if (arm64_toolchain_prefix != "") { prefix = arm64_toolchain_prefix } cc = "${compiler_prefix}${prefix}gcc" cxx = "${compiler_prefix}${prefix}g++" asm = "${assembler_prefix}${prefix}gcc" ar = "${prefix}ar" ld = "${link_prefix}${prefix}g++" readelf = "${prefix}readelf" nm = "${prefix}nm" strip = "${prefix}strip" toolchain_cpu = "arm64" toolchain_os = "linux" is_clang = false } gcc_toolchain("clang_arm64") { prefix = rebased_clang_dir cc = "${compiler_prefix}${prefix}/clang" cxx = "${compiler_prefix}${prefix}/clang++" asm = "${assembler_prefix}${prefix}/clang" readelf = "${prefix}/llvm-readelf" nm = "${prefix}/llvm-nm" ar = "${prefix}/llvm-ar" ld = "${link_prefix}${prefix}/clang++" llvm_objcopy = "${prefix}/llvm-objcopy" toolchain_cpu = "arm64" toolchain_os = "linux" is_clang = true } gcc_toolchain("clang_x86") { prefix = rebased_clang_dir cc = "${compiler_prefix}${prefix}/clang" cxx = "${compiler_prefix}${prefix}/clang++" asm = "${assembler_prefix}${prefix}/clang" readelf = "${prefix}/llvm-readelf" nm = "${prefix}/llvm-nm" ar = "${prefix}/llvm-ar" ld = "${link_prefix}${prefix}/clang++" llvm_objcopy = "${prefix}/llvm-objcopy" toolchain_cpu = "x86" toolchain_os = "linux" is_clang = true } gcc_toolchain("x86") { prefix = "" if (ia32_toolchain_prefix != "") { prefix = ia32_toolchain_prefix } cc = "${compiler_prefix}${prefix}gcc" cxx = "${compiler_prefix}${prefix}g++" asm = "${assembler_prefix}${prefix}gcc" readelf = "${prefix}readelf" nm = "${prefix}nm" ar = "${prefix}ar" ld = "${link_prefix}${prefix}g++" strip = "${prefix}strip" toolchain_cpu = "x86" toolchain_os = "linux" is_clang = false } gcc_toolchain("clang_x64") { prefix = rebased_clang_dir cc = "${compiler_prefix}${prefix}/clang" cxx = "${compiler_prefix}${prefix}/clang++" asm = "${assembler_prefix}${prefix}/clang" readelf = "${prefix}/llvm-readelf" nm = "${prefix}/llvm-nm" ar = "${prefix}/llvm-ar" ld = "${link_prefix}${prefix}/clang++" llvm_objcopy = "${prefix}/llvm-objcopy" toolchain_cpu = "x64" toolchain_os = "linux" is_clang = true } gcc_toolchain("x64") { prefix = "" if (x64_toolchain_prefix != "") { prefix = x64_toolchain_prefix } cc = "${compiler_prefix}${prefix}gcc" cxx = "${compiler_prefix}${prefix}g++" asm = "${assembler_prefix}${prefix}gcc" readelf = "${prefix}readelf" nm = "${prefix}nm" ar = "${prefix}ar" ld = "${link_prefix}${prefix}g++" strip = "${prefix}strip" toolchain_cpu = "x64" toolchain_os = "linux" is_clang = false } gcc_toolchain("riscv32") { prefix = "riscv32-linux-gnu-" if (riscv32_toolchain_prefix != "") { prefix = riscv32_toolchain_prefix } cc = "${compiler_prefix}${prefix}gcc" cxx = "${compiler_prefix}${prefix}g++" asm = "${assembler_prefix}${prefix}gcc" ar = "${prefix}ar" ld = "${link_prefix}${prefix}g++" readelf = "${prefix}readelf" nm = "${prefix}nm" strip = "${prefix}strip" toolchain_cpu = "riscv32" toolchain_os = "linux" is_clang = false } gcc_toolchain("clang_riscv32") { prefix = rebased_clang_dir cc = "${compiler_prefix}${prefix}/clang" cxx = "${compiler_prefix}${prefix}/clang++" asm = "${assembler_prefix}${prefix}/clang" readelf = "${prefix}/llvm-readelf" nm = "${prefix}/llvm-nm" ar = "${prefix}/llvm-ar" ld = "${link_prefix}${prefix}/clang++" llvm_objcopy = "${prefix}/llvm-objcopy" toolchain_cpu = "riscv32" toolchain_os = "linux" is_clang = true } gcc_toolchain("riscv64") { prefix = "riscv64-linux-gnu-" if (riscv64_toolchain_prefix != "") { prefix = riscv64_toolchain_prefix } cc = "${compiler_prefix}${prefix}gcc" cxx = "${compiler_prefix}${prefix}g++" asm = "${assembler_prefix}${prefix}gcc" ar = "${prefix}ar" ld = "${link_prefix}${prefix}g++" readelf = "${prefix}readelf" nm = "${prefix}nm" strip = "${prefix}strip" toolchain_cpu = "riscv64" toolchain_os = "linux" is_clang = false } gcc_toolchain("clang_riscv64") { prefix = rebased_clang_dir cc = "${compiler_prefix}${prefix}/clang" cxx = "${compiler_prefix}${prefix}/clang++" asm = "${assembler_prefix}${prefix}/clang" readelf = "${prefix}/llvm-readelf" nm = "${prefix}/llvm-nm" ar = "${prefix}/llvm-ar" ld = "${link_prefix}${prefix}/clang++" llvm_objcopy = "${prefix}/llvm-objcopy" toolchain_cpu = "riscv64" toolchain_os = "linux" is_clang = true }