95 lines · plain
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 runs83 # it each time.84 85 # Since check-asan is always dirty, //:default doesn't depend on it so86 # that it's not part of the default ninja target. Hence, check-asan87 # shouldn't have any deps except :asan. so that the default target is88 # sure to build all the deps.89 deps = [ ":asan" ]90 testonly = true91 92 pool = "//:console"93 }94}95