import("//compiler-rt/target.gni")
import("//compiler-rt/test/test.gni")
import("//llvm/lib/Target/targets.gni")
import("//llvm/utils/gn/build/toolchain/compiler.gni")
import("//llvm/utils/gn/build/write_cmake_config.gni")
import("//llvm/version.gni")
write_cmake_config("lit_site_cfg") {
input = "lit.site.cfg.py.in"
output = "$target_gen_dir/lit.site.cfg.py"
values = [
"ASAN_LIT_SOURCE_DIR=" + rebase_path("."),
"ASAN_TEST_CONFIG_SUFFIX=$crt_current_target_suffix",
"ASAN_TEST_TARGET_CFLAGS=$target_flags_string",
"ASAN_TEST_TARGET_CC=",
"ASAN_TEST_BITS=64",
"ASAN_TEST_APPLE_PLATFORM=",
"ASAN_TEST_MIN_DEPLOYMENT_TARGET_FLAG=",
"ASAN_TEST_TARGET_ARCH=$crt_current_target_arch",
"COMPILER_RT_ARM_THUMB=",
"COMPILER_RT_BINARY_DIR=" + rebase_path("$root_gen_dir/compiler-rt"),
"LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit",
]
if (host_os == "mac") {
values += [ "ASAN_TEST_DYNAMIC=1" ]
} else {
values += [ "ASAN_TEST_DYNAMIC=0" ]
}
}
if (current_toolchain != host_toolchain) {
group("asan_toolchain") {
deps = [
":lit_site_cfg",
"//compiler-rt/include($host_toolchain)",
"//compiler-rt/lib/asan",
"//compiler-rt/lib/asan:ignorelist($host_toolchain)",
"//compiler-rt/lib/profile",
"//compiler-rt/test:lit_common_configured",
"//llvm/tools/llvm-nm($host_toolchain)",
"//llvm/tools/llvm-objdump($host_toolchain)",
"//llvm/tools/llvm-readobj($host_toolchain)",
"//llvm/tools/llvm-size($host_toolchain)",
"//llvm/tools/llvm-symbolizer($host_toolchain)",
"//llvm/tools/sancov($host_toolchain)",
"//llvm/utils/FileCheck($host_toolchain)",
"//llvm/utils/count($host_toolchain)",
"//llvm/utils/llvm-lit($host_toolchain)",
"//llvm/utils/not($host_toolchain)",
"//llvm/utils/split-file($host_toolchain)",
]
}
}
supported_toolchains = []
if (host_os == "linux" || host_os == "mac") {
supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_unix" ]
} else if (host_os == "win") {
supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_win_x64" ]
}
group("asan") {
deps = []
foreach(toolchain, supported_toolchains) {
deps += [ ":asan_toolchain($toolchain)" ]
}
}
if (supported_toolchains != []) {
action("check-asan") {
script = "$root_build_dir/bin/llvm-lit"
if (host_os == "win") {
script += ".py"
}
args = [ "-sv" ]
foreach(toolchain, supported_toolchains) {
args += [ rebase_path(
get_label_info(":lit_site_cfg($toolchain)", "target_gen_dir"),
root_build_dir) ]
}
outputs = [ "$target_gen_dir/run-lit" ] # Non-existing, so that ninja runs
# it each time.
# Since check-asan is always dirty, //:default doesn't depend on it so
# that it's not part of the default ninja target. Hence, check-asan
# shouldn't have any deps except :asan. so that the default target is
# sure to build all the deps.
deps = [ ":asan" ]
testonly = true
pool = "//:console"
}
}