dart-sdk/build/toolchain/linux/BUILD.gn
Jonas Termansen f4f557345c [infra] Reland "Begin RBE Linux x64 support."
Bug: b/296994239
Change-Id: I179cc7729846885ee952d26082a1e615a46a30b9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/331923
Commit-Queue: Jonas Termansen <sortie@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2023-10-24 14:36:19 +00:00

285 lines
7.1 KiB
Plaintext

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