1*d415bd75Srobertimport("//llvm/triples.gni") 2*d415bd75Srobertimport("//llvm/utils/gn/build/write_cmake_config.gni") 3*d415bd75Srobertimport("clang_pseudo_lit_site_cfg_files.gni") 4*d415bd75Srobert 5*d415bd75Sroberttemplate("write_lit_config") { 6*d415bd75Srobert write_cmake_config(target_name) { 7*d415bd75Srobert input = invoker.input 8*d415bd75Srobert output = invoker.output 9*d415bd75Srobert values = [ 10*d415bd75Srobert "LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit", 11*d415bd75Srobert "LLVM_LIBS_DIR=", # needed only for shared builds 12*d415bd75Srobert ] 13*d415bd75Srobert values += invoker.extra_values 14*d415bd75Srobert } 15*d415bd75Srobert} 16*d415bd75Srobert 17*d415bd75Srobertwrite_lit_config("lit_site_cfg") { 18*d415bd75Srobert # Fully-qualified instead of relative for LIT_SITE_CFG_IN_HEADER. 19*d415bd75Srobert input = "//clang-tools-extra/pseudo/test/lit.site.cfg.py.in" 20*d415bd75Srobert output = clang_pseudo_lit_site_cfg_file 21*d415bd75Srobert 22*d415bd75Srobert extra_values = [ 23*d415bd75Srobert "CMAKE_CURRENT_BINARY_DIR=" + 24*d415bd75Srobert rebase_path(get_label_info("//clang-tools-extra/pseudo/test", 25*d415bd75Srobert "target_out_dir")), 26*d415bd75Srobert "CMAKE_CURRENT_SOURCE_DIR=" + 27*d415bd75Srobert rebase_path("//clang-tools-extra/pseudo/test"), 28*d415bd75Srobert 29*d415bd75Srobert "CURRENT_TOOLS_DIR=", 30*d415bd75Srobert "LLVM_LIT_TOOLS_DIR=", # Intentionally empty, matches cmake build. 31*d415bd75Srobert "LLVM_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"), 32*d415bd75Srobert "TARGET_TRIPLE=$llvm_target_triple", 33*d415bd75Srobert "Python3_EXECUTABLE=$python_path", 34*d415bd75Srobert ] 35*d415bd75Srobert} 36*d415bd75Srobert 37*d415bd75Srobertwrite_lit_config("lit_unit_site_cfg") { 38*d415bd75Srobert # Fully-qualified instead of relative for LIT_SITE_CFG_IN_HEADER. 39*d415bd75Srobert input = "//clang-tools-extra/pseudo/test/Unit/lit.site.cfg.py.in" 40*d415bd75Srobert output = clang_pseudo_lit_unit_site_cfg_file 41*d415bd75Srobert extra_values = [ 42*d415bd75Srobert "CMAKE_CURRENT_BINARY_DIR=" + 43*d415bd75Srobert rebase_path(get_label_info("//clang-tools-extra/pseudo/unittests", 44*d415bd75Srobert "target_out_dir")), 45*d415bd75Srobert "CMAKE_CURRENT_SOURCE_DIR=" + 46*d415bd75Srobert rebase_path("//clang-tools-extra/pseudo/test"), 47*d415bd75Srobert ] 48*d415bd75Srobert if (host_os == "win") { 49*d415bd75Srobert # See comment for Windows solink in llvm/utils/gn/build/toolchain/BUILD.gn 50*d415bd75Srobert extra_values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin") ] 51*d415bd75Srobert } else { 52*d415bd75Srobert extra_values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib") ] 53*d415bd75Srobert } 54*d415bd75Srobert} 55*d415bd75Srobert 56*d415bd75Srobert# This target should contain all dependencies of check-pseudo. 57*d415bd75Srobert# //:default depends on it, so that ninja's default target builds all 58*d415bd75Srobert# prerequisites for check-clang but doesn't run check-clang itself. 59*d415bd75Srobertgroup("test") { 60*d415bd75Srobert deps = [ 61*d415bd75Srobert ":lit_site_cfg", 62*d415bd75Srobert ":lit_unit_site_cfg", 63*d415bd75Srobert "//clang-tools-extra/pseudo/tool:clang-pseudo", 64*d415bd75Srobert "//clang-tools-extra/pseudo/unittests:ClangPseudoTests", 65*d415bd75Srobert "//llvm/utils/FileCheck", 66*d415bd75Srobert "//llvm/utils/llvm-lit", 67*d415bd75Srobert "//llvm/utils/not", 68*d415bd75Srobert ] 69*d415bd75Srobert testonly = true 70*d415bd75Srobert} 71*d415bd75Srobert 72*d415bd75Srobertaction("check-clang-pseudo") { 73*d415bd75Srobert script = "$root_out_dir/bin/llvm-lit" 74*d415bd75Srobert if (host_os == "win") { 75*d415bd75Srobert script += ".py" 76*d415bd75Srobert } 77*d415bd75Srobert args = [ 78*d415bd75Srobert "-sv", 79*d415bd75Srobert rebase_path(get_path_info(clang_pseudo_lit_site_cfg_file, "dir"), 80*d415bd75Srobert root_out_dir), 81*d415bd75Srobert ] 82*d415bd75Srobert outputs = [ "$target_gen_dir/run-lit" ] # Non-existing, so that ninja runs it 83*d415bd75Srobert # each time. 84*d415bd75Srobert 85*d415bd75Srobert # Since check-clang-pseudo is always dirty, //:default doesn't depend on it so 86*d415bd75Srobert # that it's not part of the default ninja target. Hence, check-clang-pseudo 87*d415bd75Srobert # shouldn't have any deps except :test. so that the default target is sure to 88*d415bd75Srobert # build all the deps. 89*d415bd75Srobert deps = [ ":test" ] 90*d415bd75Srobert testonly = true 91*d415bd75Srobert 92*d415bd75Srobert pool = "//:console" 93*d415bd75Srobert} 94