forked from OSchip/llvm-project
[cmake] Provide CURRENT_TOOLS_DIR centrally, replacing CLANG_TOOLS_DIR
CLANG_TOOLS_DIR holds the the current bin/ directory, maybe with a %(build_mode)
placeholder. It is used to add the just-built binaries to $PATH for lit tests.
In most cases it equals LLVM_TOOLS_DIR, which is used for the same purpose.
But for a standalone build of clang, CLANG_TOOLS_DIR points at the build tree
and LLVM_TOOLS_DIR points at the provided LLVM binaries.
Currently CLANG_TOOLS_DIR is set in clang/test/, clang-tools-extra/test/, and
other things always built with clang. This is a few cryptic lines of CMake in
each place. Meanwhile LLVM_TOOLS_DIR is provided by configure_site_lit_cfg().
This patch moves CLANG_TOOLS_DIR to configure_site_lit_cfg() and renames it:
- there's nothing clang-specific about the value
- it will also replace LLD_TOOLS_DIR, LLDB_TOOLS_DIR etc (not in this patch)
It also defines CURRENT_LIBS_DIR. While I removed the last usage of
CLANG_LIBS_DIR in e4cab4e24d
, there are LLD_LIBS_DIR usages etc that
may be live, and I'd like to mechanically update them in a followup patch.
Differential Revision: https://reviews.llvm.org/D121763
This commit is contained in:
parent
dda003afa6
commit
57ee624d79
|
@ -1,13 +1,3 @@
|
|||
# Set CLANG_TOOLS_DIR to buildtree/bin, or buildtree/%(build_mode)s/bin if the
|
||||
# location is dynamic. The latter must be interpolated by lit configs.
|
||||
# FIXME: this is duplicated in many places.
|
||||
if (CMAKE_CFG_INTDIR STREQUAL ".")
|
||||
set(LLVM_BUILD_MODE ".")
|
||||
else ()
|
||||
set(LLVM_BUILD_MODE "%(build_mode)s")
|
||||
endif ()
|
||||
string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
|
||||
|
||||
set(CLANGD_TEST_DEPS
|
||||
clangd
|
||||
ClangdTests
|
||||
|
|
|
@ -7,7 +7,7 @@ config.host_triple = "@LLVM_HOST_TRIPLE@"
|
|||
config.python_executable = "@Python3_EXECUTABLE@"
|
||||
# Support substitution of the tools and libs dirs with user parameters. This is
|
||||
# used when we can't determine the tool dir at configuration time.
|
||||
config.clang_tools_dir = lit_config.substitute("@CLANG_TOOLS_DIR@")
|
||||
config.clang_tools_dir = lit_config.substitute("@CURRENT_TOOLS_DIR@")
|
||||
config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@")
|
||||
config.llvm_libs_dir = lit_config.substitute("@LLVM_LIBS_DIR@")
|
||||
|
||||
|
|
|
@ -1,13 +1,3 @@
|
|||
# Set CLANG_TOOLS_DIR to buildtree/bin, or buildtree/%(build_mode)s/bin if the
|
||||
# location is dynamic. The latter must be interpolated by lit configs.
|
||||
# FIXME: this is duplicated in many places.
|
||||
if (CMAKE_CFG_INTDIR STREQUAL ".")
|
||||
set(LLVM_BUILD_MODE ".")
|
||||
else ()
|
||||
set(LLVM_BUILD_MODE "%(build_mode)s")
|
||||
endif ()
|
||||
string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
|
||||
|
||||
set(CLANG_PSEUDO_TEST_DEPS
|
||||
clang-pseudo
|
||||
ClangPseudoTests
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@LIT_SITE_CFG_IN_HEADER@
|
||||
|
||||
# Variables needed for common llvm config.
|
||||
config.clang_tools_dir = "@CLANG_TOOLS_DIR@"
|
||||
config.clang_tools_dir = "@CURRENT_TOOLS_DIR@"
|
||||
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
|
||||
config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@")
|
||||
config.llvm_libs_dir = lit_config.substitute("@LLVM_LIBS_DIR@")
|
||||
|
|
|
@ -7,14 +7,6 @@
|
|||
set(CLANG_TOOLS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
||||
set(CLANG_TOOLS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/..")
|
||||
|
||||
if (CMAKE_CFG_INTDIR STREQUAL ".")
|
||||
set(LLVM_BUILD_MODE ".")
|
||||
else ()
|
||||
set(LLVM_BUILD_MODE "%(build_mode)s")
|
||||
endif ()
|
||||
|
||||
string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
|
||||
|
||||
llvm_canonicalize_cmake_booleans(
|
||||
CLANG_TIDY_ENABLE_STATIC_ANALYZER
|
||||
CLANG_PLUGIN_SUPPORT
|
||||
|
|
|
@ -5,7 +5,6 @@ import sys
|
|||
config.llvm_plugin_ext = "@LLVM_PLUGIN_EXT@"
|
||||
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
|
||||
config.clang_tools_binary_dir = "@CLANG_TOOLS_BINARY_DIR@"
|
||||
config.clang_tools_dir = "@CLANG_TOOLS_DIR@"
|
||||
config.llvm_shlib_dir = "@SHLIBDIR@"
|
||||
config.python_executable = "@Python3_EXECUTABLE@"
|
||||
config.target_triple = "@LLVM_TARGET_TRIPLE@"
|
||||
|
@ -16,7 +15,7 @@ config.has_plugins = @CLANG_PLUGIN_SUPPORT@ & ~@LLVM_INSTALL_TOOLCHAIN_ONLY@
|
|||
# used when we can't determine the tool dir at configuration time.
|
||||
config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@")
|
||||
config.llvm_libs_dir = lit_config.substitute("@LLVM_LIBS_DIR@")
|
||||
config.clang_tools_dir = lit_config.substitute("@CLANG_TOOLS_DIR@")
|
||||
config.clang_tools_dir = lit_config.substitute("@CURRENT_TOOLS_DIR@")
|
||||
|
||||
import lit.llvm
|
||||
lit.llvm.initialize(lit_config, config)
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
# Test runner infrastructure for Clang. This configures the Clang test trees
|
||||
# for use by Lit, and delegates to LLVM's lit test handlers.
|
||||
|
||||
if (CMAKE_CFG_INTDIR STREQUAL ".")
|
||||
set(LLVM_BUILD_MODE ".")
|
||||
else ()
|
||||
set(LLVM_BUILD_MODE "%(build_mode)s")
|
||||
endif ()
|
||||
|
||||
string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
|
||||
|
||||
llvm_canonicalize_cmake_booleans(
|
||||
CLANG_BUILD_EXAMPLES
|
||||
CLANG_DEFAULT_PIE_ON_LINUX
|
||||
|
@ -39,7 +31,7 @@ configure_lit_site_cfg(
|
|||
"LLVM_EXTERNAL_LIT"
|
||||
"CLANG_BINARY_DIR"
|
||||
"CLANG_SOURCE_DIR"
|
||||
"CLANG_TOOLS_DIR"
|
||||
"CURRENT_TOOLS_DIR"
|
||||
"CMAKE_LIBRARY_OUTPUT_DIRECTORY"
|
||||
)
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ config.errc_messages = "@LLVM_LIT_ERRC_MESSAGES@"
|
|||
config.clang_lit_site_cfg = __file__
|
||||
config.clang_obj_root = path(r"@CLANG_BINARY_DIR@")
|
||||
config.clang_src_dir = path(r"@CLANG_SOURCE_DIR@")
|
||||
config.clang_tools_dir = lit_config.substitute(path(r"@CLANG_TOOLS_DIR@"))
|
||||
config.clang_tools_dir = lit_config.substitute(path(r"@CURRENT_TOOLS_DIR@"))
|
||||
config.clang_lib_dir = path(r"@CMAKE_LIBRARY_OUTPUT_DIRECTORY@")
|
||||
config.host_triple = "@LLVM_HOST_TRIPLE@"
|
||||
config.target_triple = "@LLVM_TARGET_TRIPLE@"
|
||||
|
|
|
@ -1,11 +1,3 @@
|
|||
if (CMAKE_CFG_INTDIR STREQUAL ".")
|
||||
set(LLVM_BUILD_MODE ".")
|
||||
else ()
|
||||
set(LLVM_BUILD_MODE "%(build_mode)s")
|
||||
endif ()
|
||||
|
||||
string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
|
||||
|
||||
set(CLANG_PGO_TRAINING_DATA "${CMAKE_CURRENT_SOURCE_DIR}" CACHE PATH
|
||||
"The path to a lit testsuite containing samples for PGO and order file generation"
|
||||
)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import sys
|
||||
|
||||
config.clang_tools_dir = lit_config.substitute("@CLANG_TOOLS_DIR@")
|
||||
config.clang_tools_dir = lit_config.substitute("@CURRENT_TOOLS_DIR@")
|
||||
config.perf_helper_dir = "@CMAKE_CURRENT_SOURCE_DIR@"
|
||||
config.test_exec_root = "@CMAKE_CURRENT_BINARY_DIR@"
|
||||
config.test_source_root = "@CLANG_PGO_TRAINING_DATA@"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import sys
|
||||
|
||||
config.clang_tools_dir = lit_config.substitute("@CLANG_TOOLS_DIR@")
|
||||
config.clang_tools_dir = lit_config.substitute("@CURRENT_TOOLS_DIR@")
|
||||
config.perf_helper_dir = "@CMAKE_CURRENT_SOURCE_DIR@"
|
||||
config.test_exec_root = "@CMAKE_CURRENT_BINARY_DIR@"
|
||||
config.test_source_root = "@CLANG_PGO_TRAINING_DATA@"
|
||||
|
|
|
@ -1,12 +1,3 @@
|
|||
if (CMAKE_CFG_INTDIR STREQUAL ".")
|
||||
set(LLVM_BUILD_MODE ".")
|
||||
else ()
|
||||
set(LLVM_BUILD_MODE "%(build_mode)s")
|
||||
endif ()
|
||||
|
||||
string(REPLACE "${CMAKE_CFG_INTDIR}" "${LLVM_BUILD_MODE}" LLD_LIBS_DIR "${LLVM_LIBRARY_OUTPUT_INTDIR}")
|
||||
string(REPLACE "${CMAKE_CFG_INTDIR}" "${LLVM_BUILD_MODE}" LLD_TOOLS_DIR "${LLVM_RUNTIME_OUTPUT_INTDIR}")
|
||||
|
||||
llvm_canonicalize_cmake_booleans(
|
||||
LLVM_ENABLE_ZLIB
|
||||
LLVM_ENABLE_LIBXML2
|
||||
|
|
|
@ -8,8 +8,8 @@ config.llvm_build_mode = lit_config.substitute("@LLVM_BUILD_MODE@")
|
|||
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
|
||||
config.lld_obj_root = "@LLD_BINARY_DIR@"
|
||||
config.lld_src_root = "@LLD_SOURCE_DIR@"
|
||||
config.lld_libs_dir = lit_config.substitute("@LLD_LIBS_DIR@")
|
||||
config.lld_tools_dir = lit_config.substitute("@LLD_TOOLS_DIR@")
|
||||
config.lld_libs_dir = lit_config.substitute("@CURRENT_LIBS_DIR@")
|
||||
config.lld_tools_dir = lit_config.substitute("@CURRENT_TOOLS_DIR@")
|
||||
config.target_triple = "@LLVM_TARGET_TRIPLE@"
|
||||
config.python_executable = "@Python3_EXECUTABLE@"
|
||||
|
||||
|
|
|
@ -12,8 +12,8 @@ config.llvm_shlib_ext = "@SHLIBEXT@"
|
|||
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
|
||||
config.errc_messages = "@LLVM_LIT_ERRC_MESSAGES@"
|
||||
config.lld_obj_root = "@LLD_BINARY_DIR@"
|
||||
config.lld_libs_dir = lit_config.substitute("@LLD_LIBS_DIR@")
|
||||
config.lld_tools_dir = lit_config.substitute("@LLD_TOOLS_DIR@")
|
||||
config.lld_libs_dir = lit_config.substitute("@CURRENT_LIBS_DIR@")
|
||||
config.lld_tools_dir = lit_config.substitute("@CURRENT_TOOLS_DIR@")
|
||||
config.target_triple = "@LLVM_TARGET_TRIPLE@"
|
||||
config.python_executable = "@Python3_EXECUTABLE@"
|
||||
config.have_zlib = @LLVM_ENABLE_ZLIB@
|
||||
|
|
|
@ -1630,13 +1630,15 @@ function(configure_lit_site_cfg site_in site_out)
|
|||
|
||||
set_llvm_build_mode()
|
||||
|
||||
# The below might not be the build tree but provided binary tree.
|
||||
# For standalone builds of subprojects, these might not be the build tree but
|
||||
# a provided binary tree.
|
||||
set(LLVM_SOURCE_DIR ${LLVM_MAIN_SRC_DIR})
|
||||
set(LLVM_BINARY_DIR ${LLVM_BINARY_DIR})
|
||||
string(REPLACE "${CMAKE_CFG_INTDIR}" "${LLVM_BUILD_MODE}" LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}")
|
||||
string(REPLACE "${CMAKE_CFG_INTDIR}" "${LLVM_BUILD_MODE}" LLVM_LIBS_DIR "${LLVM_LIBRARY_DIR}")
|
||||
|
||||
# SHLIBDIR points the build tree.
|
||||
# Like LLVM_{TOOLS,LIBS}_DIR, but pointing at the build tree.
|
||||
string(REPLACE "${CMAKE_CFG_INTDIR}" "${LLVM_BUILD_MODE}" CURRENT_TOOLS_DIR "${LLVM_RUNTIME_OUTPUT_INTDIR}")
|
||||
string(REPLACE "${CMAKE_CFG_INTDIR}" "${LLVM_BUILD_MODE}" CURRENT_LIBS_DIR "${LLVM_LIBRARY_OUTPUT_INTDIR}")
|
||||
string(REPLACE "${CMAKE_CFG_INTDIR}" "${LLVM_BUILD_MODE}" SHLIBDIR "${LLVM_SHLIB_OUTPUT_INTDIR}")
|
||||
|
||||
# FIXME: "ENABLE_SHARED" doesn't make sense, since it is used just for
|
||||
|
|
|
@ -28,7 +28,7 @@ write_lit_config("lit_site_cfg") {
|
|||
"CMAKE_CURRENT_SOURCE_DIR=" +
|
||||
rebase_path("//clang-tools-extra/clangd/test"),
|
||||
|
||||
"CLANG_TOOLS_DIR=",
|
||||
"CURRENT_TOOLS_DIR=",
|
||||
"CLANGD_ENABLE_REMOTE=0",
|
||||
"CLANGD_TIDY_CHECKS=1",
|
||||
"LLVM_HOST_TRIPLE=$llvm_current_triple",
|
||||
|
|
|
@ -26,7 +26,7 @@ write_lit_config("lit_site_cfg") {
|
|||
"CMAKE_CURRENT_SOURCE_DIR=" +
|
||||
rebase_path("//clang-tools-extra/pseudo/test"),
|
||||
|
||||
"CLANG_TOOLS_DIR=",
|
||||
"CURRENT_TOOLS_DIR=",
|
||||
"LLVM_LIT_TOOLS_DIR=", # Intentionally empty, matches cmake build.
|
||||
"LLVM_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"),
|
||||
"TARGET_TRIPLE=$llvm_target_triple",
|
||||
|
|
|
@ -32,7 +32,7 @@ write_lit_config("lit_site_cfg") {
|
|||
output = clang_tools_extra_lit_site_cfg_file
|
||||
|
||||
extra_values = [
|
||||
"CLANG_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"),
|
||||
"CURRENT_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"),
|
||||
"CLANG_PLUGIN_SUPPORT=0",
|
||||
"LLVM_HOST_TRIPLE=$llvm_current_triple",
|
||||
"LLVM_INSTALL_TOOLCHAIN_ONLY=0",
|
||||
|
|
|
@ -48,7 +48,7 @@ write_lit_config("lit_site_cfg") {
|
|||
"CLANG_DEFAULT_CXX_STDLIB=", # Empty string means "default value" here.
|
||||
"CLANG_DEFAULT_PIE_ON_LINUX=0",
|
||||
"CLANG_PLUGIN_SUPPORT=0", # FIXME: Analysis/plugins need global -fPIC
|
||||
"CLANG_TOOLS_DIR=" + rebase_path("$root_out_dir/bin", dir),
|
||||
"CURRENT_TOOLS_DIR=" + rebase_path("$root_out_dir/bin", dir),
|
||||
"CLANG_VENDOR_UTI=org.llvm.clang",
|
||||
|
||||
# This is only used if LLVM_USE_SANITIZER includes lsan and the host
|
||||
|
|
|
@ -15,8 +15,8 @@ template("write_lit_cfg") {
|
|||
"LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit",
|
||||
"LLD_BINARY_DIR=" +
|
||||
rebase_path(get_label_info("//lld", "target_out_dir")),
|
||||
"LLD_LIBS_DIR=", # FIXME: for shared builds only (?)
|
||||
"LLD_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"),
|
||||
"CURRENT_LIBS_DIR=", # FIXME: for shared builds only (?)
|
||||
"CURRENT_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"),
|
||||
"LLD_SOURCE_DIR=" + rebase_path("//lld"),
|
||||
"LLVM_BINARY_DIR=" +
|
||||
rebase_path(get_label_info("//llvm", "target_out_dir")),
|
||||
|
|
Loading…
Reference in New Issue