1import("//clang-tools-extra/clang-tidy/enable.gni") 2import("//clang/lib/StaticAnalyzer/Frontend/enable.gni") 3import("//clang/tools/libclang/include_clang_tools_extra.gni") 4import("//llvm/triples.gni") 5import("//llvm/utils/gn/build/write_cmake_config.gni") 6import("clang_tools_extra_lit_site_cfg_files.gni") 7 8template("write_lit_config") { 9 write_cmake_config(target_name) { 10 input = invoker.input 11 output = invoker.output 12 values = [ 13 "LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit", 14 "CLANG_TOOLS_BINARY_DIR=" + 15 rebase_path(get_label_info("//clang-tools-extra", "target_out_dir")), 16 "CLANG_TOOLS_SOURCE_DIR=" + rebase_path("//clang-tools-extra"), 17 "LLVM_LIBS_DIR=", # needed only for shared builds 18 "TARGET_TRIPLE=$llvm_target_triple", 19 ] 20 if (host_os == "win") { 21 # See comment for Windows solink in llvm/utils/gn/build/toolchain/BUILD.gn 22 values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin") ] 23 } else { 24 values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib") ] 25 } 26 values += invoker.extra_values 27 } 28} 29 30write_lit_config("lit_site_cfg") { 31 # Fully-qualified instead of relative for LIT_SITE_CFG_IN_HEADER. 32 input = "//clang-tools-extra/test/lit.site.cfg.py.in" 33 output = clang_tools_extra_lit_site_cfg_file 34 35 extra_values = [ 36 "CLANG_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"), 37 "LLVM_LIT_TOOLS_DIR=", # Intentionally empty, matches cmake build. 38 "LLVM_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"), 39 "Python3_EXECUTABLE=$python_path", 40 ] 41 42 if (clang_tidy_enable_static_analyzer) { 43 extra_values += [ "CLANG_TIDY_ENABLE_STATIC_ANALYZER=1" ] 44 } else { 45 extra_values += [ "CLANG_TIDY_ENABLE_STATIC_ANALYZER=0" ] 46 } 47 48 if (libclang_include_clang_tools_extra) { 49 extra_values += [ "LIBCLANG_INCLUDE_CLANG_TOOLS_EXTRA=1" ] 50 } else { 51 extra_values += [ "LIBCLANG_INCLUDE_CLANG_TOOLS_EXTRA=0" ] 52 } 53} 54 55write_lit_config("lit_unit_site_cfg") { 56 # Fully-qualified instead of relative for LIT_SITE_CFG_IN_HEADER. 57 input = "//clang-tools-extra/test/Unit/lit.site.cfg.py.in" 58 output = clang_tools_extra_lit_unit_site_cfg_file 59 extra_values = [] 60} 61 62# This target should contain all dependencies of check-clang-tools. 63# //:default depends on it, so that ninja's default target builds all 64# prerequisites for check-clang but doesn't run check-clang itself. 65group("test") { 66 deps = [ 67 ":lit_site_cfg", 68 ":lit_unit_site_cfg", 69 "//clang-tools-extra/clang-apply-replacements/tool:clang-apply-replacements", 70 "//clang-tools-extra/clang-change-namespace/tool:clang-change-namespace", 71 "//clang-tools-extra/clang-doc/tool:clang-doc", 72 "//clang-tools-extra/clang-include-fixer/find-all-symbols/tool:find-all-symbols", 73 "//clang-tools-extra/clang-include-fixer/tool:clang-include-fixer", 74 "//clang-tools-extra/clang-move/tool:clang-move", 75 "//clang-tools-extra/clang-query/tool:clang-query", 76 "//clang-tools-extra/clang-reorder-fields/tool:clang-reorder-fields", 77 "//clang-tools-extra/clang-tidy/tool:clang-tidy", 78 "//clang-tools-extra/modularize", 79 "//clang-tools-extra/pp-trace", 80 "//clang-tools-extra/unittests", 81 "//clang/lib/Headers", 82 "//clang/tools/c-index-test", 83 "//clang/tools/clang-rename", 84 "//clang/tools/driver:symlinks", 85 "//llvm/tools/llvm-bcanalyzer", 86 "//llvm/utils/FileCheck", 87 "//llvm/utils/count", 88 "//llvm/utils/llvm-lit", 89 "//llvm/utils/not", 90 ] 91 testonly = true 92} 93 94action("check-clang-tools") { 95 script = "$root_out_dir/bin/llvm-lit" 96 if (host_os == "win") { 97 script += ".py" 98 } 99 args = [ 100 "-sv", 101 rebase_path(".", root_out_dir), 102 ] 103 outputs = [ "$target_gen_dir/run-lit" ] # Non-existing, so that ninja runs it 104 # each time. 105 106 # Since check-clang-tools is always dirty, //:default doesn't depend on it so 107 # that it's not part of the default ninja target. Hence, check-clang-tools 108 # shouldn't have any deps except :test. so that the default target is sure to 109 # build all the deps. 110 deps = [ ":test" ] 111 testonly = true 112 113 pool = "//:console" 114} 115