import("//clang-tools-extra/clang-tidy/enable.gni") import("//clang/lib/StaticAnalyzer/Frontend/enable.gni") import("//clang/tools/libclang/include_clang_tools_extra.gni") import("//llvm/triples.gni") import("//llvm/utils/gn/build/write_cmake_config.gni") import("clang_tools_extra_lit_site_cfg_files.gni") template("write_lit_config") { write_cmake_config(target_name) { input = invoker.input output = invoker.output values = [ "LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit", "CLANG_TOOLS_BINARY_DIR=" + rebase_path(get_label_info("//clang-tools-extra", "target_out_dir")), "CLANG_TOOLS_SOURCE_DIR=" + rebase_path("//clang-tools-extra"), "LLVM_LIBS_DIR=", # needed only for shared builds "TARGET_TRIPLE=$llvm_target_triple", ] if (host_os == "win") { # See comment for Windows solink in llvm/utils/gn/build/toolchain/BUILD.gn values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin") ] } else { values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib") ] } values += invoker.extra_values } } write_lit_config("lit_site_cfg") { # Fully-qualified instead of relative for LIT_SITE_CFG_IN_HEADER. input = "//clang-tools-extra/test/lit.site.cfg.py.in" output = clang_tools_extra_lit_site_cfg_file extra_values = [ "CLANG_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"), "LLVM_LIT_TOOLS_DIR=", # Intentionally empty, matches cmake build. "LLVM_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"), "Python3_EXECUTABLE=$python_path", ] if (clang_tidy_enable_static_analyzer) { extra_values += [ "CLANG_TIDY_ENABLE_STATIC_ANALYZER=1" ] } else { extra_values += [ "CLANG_TIDY_ENABLE_STATIC_ANALYZER=0" ] } if (libclang_include_clang_tools_extra) { extra_values += [ "LIBCLANG_INCLUDE_CLANG_TOOLS_EXTRA=1" ] } else { extra_values += [ "LIBCLANG_INCLUDE_CLANG_TOOLS_EXTRA=0" ] } } write_lit_config("lit_unit_site_cfg") { # Fully-qualified instead of relative for LIT_SITE_CFG_IN_HEADER. input = "//clang-tools-extra/test/Unit/lit.site.cfg.py.in" output = clang_tools_extra_lit_unit_site_cfg_file extra_values = [] } # This target should contain all dependencies of check-clang-tools. # //:default depends on it, so that ninja's default target builds all # prerequisites for check-clang but doesn't run check-clang itself. group("test") { deps = [ ":lit_site_cfg", ":lit_unit_site_cfg", "//clang-tools-extra/clang-apply-replacements/tool:clang-apply-replacements", "//clang-tools-extra/clang-change-namespace/tool:clang-change-namespace", "//clang-tools-extra/clang-doc/tool:clang-doc", "//clang-tools-extra/clang-include-fixer/find-all-symbols/tool:find-all-symbols", "//clang-tools-extra/clang-include-fixer/tool:clang-include-fixer", "//clang-tools-extra/clang-move/tool:clang-move", "//clang-tools-extra/clang-query/tool:clang-query", "//clang-tools-extra/clang-reorder-fields/tool:clang-reorder-fields", "//clang-tools-extra/clang-tidy/tool:clang-tidy", "//clang-tools-extra/modularize", "//clang-tools-extra/pp-trace", "//clang-tools-extra/unittests", "//clang/lib/Headers", "//clang/tools/c-index-test", "//clang/tools/clang-rename", "//clang/tools/driver:symlinks", "//llvm/tools/llvm-bcanalyzer", "//llvm/utils/FileCheck", "//llvm/utils/count", "//llvm/utils/llvm-lit", "//llvm/utils/not", ] testonly = true } action("check-clang-tools") { script = "$root_out_dir/bin/llvm-lit" if (host_os == "win") { script += ".py" } args = [ "-sv", rebase_path(".", root_out_dir), ] outputs = [ "$target_gen_dir/run-lit" ] # Non-existing, so that ninja runs it # each time. # Since check-clang-tools is always dirty, //:default doesn't depend on it so # that it's not part of the default ninja target. Hence, check-clang-tools # shouldn't have any deps except :test. so that the default target is sure to # build all the deps. deps = [ ":test" ] testonly = true pool = "//:console" }