10c425b43SArthur Eubanksimport("//compiler-rt/target.gni") 20c425b43SArthur Eubanksimport("//compiler-rt/test/test.gni") 30c425b43SArthur Eubanksimport("//llvm/lib/Target/targets.gni") 40c425b43SArthur Eubanksimport("//llvm/utils/gn/build/toolchain/compiler.gni") 50c425b43SArthur Eubanksimport("//llvm/utils/gn/build/write_cmake_config.gni") 60c425b43SArthur Eubanksimport("//llvm/version.gni") 70c425b43SArthur Eubanks 80c425b43SArthur Eubankswrite_cmake_config("lit_site_cfg") { 90c425b43SArthur Eubanks input = "lit.site.cfg.py.in" 100c425b43SArthur Eubanks output = "$target_gen_dir/lit.site.cfg.py" 110c425b43SArthur Eubanks 120c425b43SArthur Eubanks values = [ 130c425b43SArthur Eubanks "ASAN_LIT_SOURCE_DIR=" + rebase_path("."), 140c425b43SArthur Eubanks "ASAN_TEST_CONFIG_SUFFIX=$crt_current_target_suffix", 150c425b43SArthur Eubanks "ASAN_TEST_TARGET_CFLAGS=$target_flags_string", 160c425b43SArthur Eubanks "ASAN_TEST_TARGET_CC=", 170c425b43SArthur Eubanks "ASAN_TEST_BITS=64", 180c425b43SArthur Eubanks "ASAN_TEST_APPLE_PLATFORM=", 190c425b43SArthur Eubanks "ASAN_TEST_MIN_DEPLOYMENT_TARGET_FLAG=", 200c425b43SArthur Eubanks "ASAN_TEST_TARGET_ARCH=$crt_current_target_arch", 210c425b43SArthur Eubanks "COMPILER_RT_ARM_THUMB=", 220c425b43SArthur Eubanks "COMPILER_RT_BINARY_DIR=" + rebase_path("$root_gen_dir/compiler-rt"), 230c425b43SArthur Eubanks "LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit", 240c425b43SArthur Eubanks ] 25*c24a39b7SLeonard Grey if (host_os == "mac") { 26*c24a39b7SLeonard Grey values += [ "ASAN_TEST_DYNAMIC=1" ] 27*c24a39b7SLeonard Grey } else { 28*c24a39b7SLeonard Grey values += [ "ASAN_TEST_DYNAMIC=0" ] 29*c24a39b7SLeonard Grey } 300c425b43SArthur Eubanks} 310c425b43SArthur Eubanks 320c425b43SArthur Eubanksif (current_toolchain != host_toolchain) { 330c425b43SArthur Eubanks group("asan_toolchain") { 340c425b43SArthur Eubanks deps = [ 350c425b43SArthur Eubanks ":lit_site_cfg", 360c425b43SArthur Eubanks "//compiler-rt/include($host_toolchain)", 370c425b43SArthur Eubanks "//compiler-rt/lib/asan", 380c425b43SArthur Eubanks "//compiler-rt/lib/asan:ignorelist($host_toolchain)", 390c425b43SArthur Eubanks "//compiler-rt/lib/profile", 400c425b43SArthur Eubanks "//compiler-rt/test:lit_common_configured", 41*c24a39b7SLeonard Grey "//llvm/tools/llvm-nm($host_toolchain)", 42*c24a39b7SLeonard Grey "//llvm/tools/llvm-objdump($host_toolchain)", 430c425b43SArthur Eubanks "//llvm/tools/llvm-readobj($host_toolchain)", 44*c24a39b7SLeonard Grey "//llvm/tools/llvm-size($host_toolchain)", 450c425b43SArthur Eubanks "//llvm/tools/llvm-symbolizer($host_toolchain)", 46*c24a39b7SLeonard Grey "//llvm/tools/sancov($host_toolchain)", 470c425b43SArthur Eubanks "//llvm/utils/FileCheck($host_toolchain)", 48bb692d44SArthur Eubanks "//llvm/utils/count($host_toolchain)", 490c425b43SArthur Eubanks "//llvm/utils/llvm-lit($host_toolchain)", 500c425b43SArthur Eubanks "//llvm/utils/not($host_toolchain)", 51*c24a39b7SLeonard Grey "//llvm/utils/split-file($host_toolchain)", 520c425b43SArthur Eubanks ] 530c425b43SArthur Eubanks } 540c425b43SArthur Eubanks} 550c425b43SArthur Eubanks 560c425b43SArthur Eubankssupported_toolchains = [] 57*c24a39b7SLeonard Greyif (host_os == "linux" || host_os == "mac") { 580c425b43SArthur Eubanks supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_unix" ] 590c425b43SArthur Eubanks} else if (host_os == "win") { 60998ad085SArthur Eubanks supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_win_x64" ] 610c425b43SArthur Eubanks} 62998ad085SArthur Eubanks 630c425b43SArthur Eubanksgroup("asan") { 640c425b43SArthur Eubanks deps = [] 650c425b43SArthur Eubanks foreach(toolchain, supported_toolchains) { 660c425b43SArthur Eubanks deps += [ ":asan_toolchain($toolchain)" ] 670c425b43SArthur Eubanks } 680c425b43SArthur Eubanks} 690c425b43SArthur Eubanks 700c425b43SArthur Eubanksif (supported_toolchains != []) { 710c425b43SArthur Eubanks action("check-asan") { 720c425b43SArthur Eubanks script = "$root_build_dir/bin/llvm-lit" 730c425b43SArthur Eubanks if (host_os == "win") { 740c425b43SArthur Eubanks script += ".py" 750c425b43SArthur Eubanks } 760c425b43SArthur Eubanks args = [ "-sv" ] 770c425b43SArthur Eubanks foreach(toolchain, supported_toolchains) { 780c425b43SArthur Eubanks args += [ rebase_path( 790c425b43SArthur Eubanks get_label_info(":lit_site_cfg($toolchain)", "target_gen_dir"), 800c425b43SArthur Eubanks root_build_dir) ] 810c425b43SArthur Eubanks } 820c425b43SArthur Eubanks outputs = [ "$target_gen_dir/run-lit" ] # Non-existing, so that ninja runs 830c425b43SArthur Eubanks # it each time. 840c425b43SArthur Eubanks 850c425b43SArthur Eubanks # Since check-asan is always dirty, //:default doesn't depend on it so 860c425b43SArthur Eubanks # that it's not part of the default ninja target. Hence, check-asan 870c425b43SArthur Eubanks # shouldn't have any deps except :asan. so that the default target is 880c425b43SArthur Eubanks # sure to build all the deps. 890c425b43SArthur Eubanks deps = [ ":asan" ] 900c425b43SArthur Eubanks testonly = true 910c425b43SArthur Eubanks 920c425b43SArthur Eubanks pool = "//:console" 930c425b43SArthur Eubanks } 940c425b43SArthur Eubanks} 95