1import("//compiler-rt/target.gni") 2import("//compiler-rt/test/test.gni") 3import("//llvm/lib/Target/targets.gni") 4import("//llvm/utils/gn/build/toolchain/compiler.gni") 5import("//llvm/utils/gn/build/write_cmake_config.gni") 6import("//llvm/version.gni") 7 8write_cmake_config("lit_site_cfg") { 9 input = "lit.site.cfg.py.in" 10 output = "$target_gen_dir/lit.site.cfg.py" 11 12 values = [ 13 "ASAN_LIT_SOURCE_DIR=" + rebase_path("."), 14 "ASAN_TEST_CONFIG_SUFFIX=$crt_current_target_suffix", 15 "ASAN_TEST_TARGET_CFLAGS=$target_flags_string", 16 "ASAN_TEST_TARGET_CC=", 17 "ASAN_TEST_BITS=64", 18 "ASAN_TEST_APPLE_PLATFORM=", 19 "ASAN_TEST_MIN_DEPLOYMENT_TARGET_FLAG=", 20 "ASAN_TEST_TARGET_ARCH=$crt_current_target_arch", 21 "COMPILER_RT_ARM_THUMB=", 22 "COMPILER_RT_BINARY_DIR=" + rebase_path("$root_gen_dir/compiler-rt"), 23 "LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit", 24 ] 25 if (host_os == "mac") { 26 values += [ "ASAN_TEST_DYNAMIC=1" ] 27 } else { 28 values += [ "ASAN_TEST_DYNAMIC=0" ] 29 } 30} 31 32if (current_toolchain != host_toolchain) { 33 group("asan_toolchain") { 34 deps = [ 35 ":lit_site_cfg", 36 "//compiler-rt/include($host_toolchain)", 37 "//compiler-rt/lib/asan", 38 "//compiler-rt/lib/asan:ignorelist($host_toolchain)", 39 "//compiler-rt/lib/profile", 40 "//compiler-rt/test:lit_common_configured", 41 "//llvm/tools/llvm-nm($host_toolchain)", 42 "//llvm/tools/llvm-objdump($host_toolchain)", 43 "//llvm/tools/llvm-readobj($host_toolchain)", 44 "//llvm/tools/llvm-size($host_toolchain)", 45 "//llvm/tools/llvm-symbolizer($host_toolchain)", 46 "//llvm/tools/sancov($host_toolchain)", 47 "//llvm/utils/FileCheck($host_toolchain)", 48 "//llvm/utils/count($host_toolchain)", 49 "//llvm/utils/llvm-lit($host_toolchain)", 50 "//llvm/utils/not($host_toolchain)", 51 "//llvm/utils/split-file($host_toolchain)", 52 ] 53 } 54} 55 56supported_toolchains = [] 57if (host_os == "linux" || host_os == "mac") { 58 supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_unix" ] 59} else if (host_os == "win") { 60 supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_win_x64" ] 61} 62 63group("asan") { 64 deps = [] 65 foreach(toolchain, supported_toolchains) { 66 deps += [ ":asan_toolchain($toolchain)" ] 67 } 68} 69 70if (supported_toolchains != []) { 71 action("check-asan") { 72 script = "$root_build_dir/bin/llvm-lit" 73 if (host_os == "win") { 74 script += ".py" 75 } 76 args = [ "-sv" ] 77 foreach(toolchain, supported_toolchains) { 78 args += [ rebase_path( 79 get_label_info(":lit_site_cfg($toolchain)", "target_gen_dir"), 80 root_build_dir) ] 81 } 82 outputs = [ "$target_gen_dir/run-lit" ] # Non-existing, so that ninja runs 83 # it each time. 84 85 # Since check-asan is always dirty, //:default doesn't depend on it so 86 # that it's not part of the default ninja target. Hence, check-asan 87 # shouldn't have any deps except :asan. so that the default target is 88 # sure to build all the deps. 89 deps = [ ":asan" ] 90 testonly = true 91 92 pool = "//:console" 93 } 94} 95