brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 0057588 Raw
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