xref: /llvm-project/llvm/utils/gn/secondary/compiler-rt/test/asan/BUILD.gn (revision c24a39b726e9116eec124654cb24937e3bfb57c7)
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