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