template("unix_toolchain") {
toolchain(target_name) {
+ # https://groups.google.com/a/chromium.org/d/msg/gn-dev/F_lv5T-tNDM
+ forward_variables_from(invoker.toolchain_args, "*")
+ not_needed("*")
+
forward_variables_from(invoker, "*")
+ cc = "cc"
+ cxx = "c++"
+
+ if (clang_base_path != "") {
+ cc = "$clang_base_path/bin/clang"
+ cxx = "$clang_base_path/bin/clang++"
+ }
+
+ ld = cxx # Don't use goma wrapper for linking.
+ if (use_goma) {
+ cc = "$goma_dir/gomacc $cc"
+ cxx = "$goma_dir/gomacc $cxx"
+ }
+
tool("cc") {
depfile = "{{output}}.d"
command = "$cc -MMD -MF $depfile -o {{output}} -c {{source}} {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}}"
}
unix_toolchain("unix") {
- cc = "cc"
- cxx = "c++"
-
- if (clang_base_path != "") {
- cc = "$clang_base_path/bin/clang"
- cxx = "$clang_base_path/bin/clang++"
- }
-
- ld = cxx # Don't use goma wrapper for linking.
- if (use_goma) {
- cc = "$goma_dir/gomacc $cc"
- cxx = "$goma_dir/gomacc $cxx"
- }
-
if (current_os != "mac") {
ar = "ar"
}
# as compiler and linker.
template("stage2_unix_toolchain") {
unix_toolchain(target_name) {
- forward_variables_from(invoker, "*")
+ toolchain_args = {
+ forward_variables_from(invoker.toolchain_args, "*")
- cc = "bin/clang"
- cxx = "bin/clang++"
- ld = cxx
- if (current_os != "mac") {
- ar = "bin/llvm-ar"
+ clang_base_path = "."
+ use_goma = false
}
deps = [
"//:lld($host_toolchain)",
]
if (current_os != "mac") {
+ ar = "bin/llvm-ar"
deps += [ "//:llvm-ar($host_toolchain)" ]
}
}
toolchain_args = {
current_os = host_os
current_cpu = host_cpu
- is_clang = true
- use_lld = host_os != "mac"
}
}
toolchain_args = {
current_os = "android"
current_cpu = "arm64"
- is_clang = true
- use_lld = true
}
}
toolchain_args = {
current_os = "android"
current_cpu = "arm"
- is_clang = true
- use_lld = true
}
}
}