blob: 71038ed2b2cbb125409b872ffccbf545c4187e2f [file] [log] [blame]
# 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")
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("clang_arm") {
prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
cc = "${compiler_prefix}${prefix}/clang"
cxx = "${compiler_prefix}${prefix}/clang++"
readelf = "${prefix}/llvm-readelf"
nm = "${prefix}/llvm-nm"
ar = "${prefix}/llvm-ar"
ld = cxx
llvm_objcopy = "${prefix}/llvm-objcopy"
# When producing ARM builds we drop .ARM.exidx/extab sections. These sections
# don't contain any useful information (we don't use exceptions or
# unwind C++ frames and most of the dart binary is in fact not covered by
# them), however they have been seen to break dynamic linker in older glibc
# versions (pre 2.23) because .ARM.exidx ends up being positioned between
# .rel.dyn and .rel.plt sections while older versions of dynamic linker
# expect these two sections to appear one after another in the ELF file.
# See https://github.com/dart-lang/sdk/issues/41644.
llvm_objcopy_extra_args =
"--remove-section .ARM.exidx --remove-section .ARM.extab"
toolchain_cpu = "arm"
toolchain_os = "linux"
is_clang = true
}
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_arm64") {
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
llvm_objcopy = "${prefix}/llvm-objcopy"
toolchain_cpu = "arm64"
toolchain_os = "linux"
is_clang = true
}
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 = "${prefix}/llvm-readelf"
nm = "${prefix}/llvm-nm"
ar = "${prefix}/llvm-ar"
ld = cxx
llvm_objcopy = "${prefix}/llvm-objcopy"
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 = "${prefix}/llvm-readelf"
nm = "${prefix}/llvm-nm"
ar = "${prefix}/llvm-ar"
ld = cxx
llvm_objcopy = "${prefix}/llvm-objcopy"
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
}