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_DYNAMIC=0", "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 (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-readobj($host_toolchain)", "//llvm/tools/llvm-symbolizer($host_toolchain)", "//llvm/utils/FileCheck($host_toolchain)", "//llvm/utils/llvm-lit($host_toolchain)", "//llvm/utils/not($host_toolchain)", ] } } supported_toolchains = [] if (host_os == "linux") { supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_unix" ] } else if (host_os == "win") { supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_win" ] } 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" } }