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