Skip to content

Commit 1ad28c7

Browse files
committed
Allow compiler-rt test targets to work with multi-config CMake generators
Multi-config CMake generators need lit to be able to resolve paths of artifacts from previous build steps at lit time, rather than expect them to be fully resolved at CMake time as they may contain the build mode. Differential Revision: https://reviews.llvm.org/D38471 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@318037 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent f4cd4c0 commit 1ad28c7

6 files changed

+26
-14
lines changed

cmake/Modules/AddCompilerRT.cmake

+11
Original file line numberDiff line numberDiff line change
@@ -508,3 +508,14 @@ function(rt_externalize_debuginfo name)
508508
message(FATAL_ERROR "COMPILER_RT_EXTERNALIZE_DEBUGINFO isn't implemented for non-darwin platforms!")
509509
endif()
510510
endfunction()
511+
512+
513+
# Configure lit configuration files, including compiler-rt specific variables.
514+
function(configure_compiler_rt_lit_site_cfg input output)
515+
set_llvm_build_mode()
516+
517+
string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} COMPILER_RT_RESOLVED_TEST_COMPILER ${COMPILER_RT_TEST_COMPILER})
518+
string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} COMPILER_RT_RESOLVED_LIBRARY_OUTPUT_DIR ${COMPILER_RT_LIBRARY_OUTPUT_DIR})
519+
520+
configure_lit_site_cfg(${input} ${output})
521+
endfunction()

test/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Needed for lit support
1+
# Needed for lit support in standalone builds.
22
include(AddLLVM)
33

4-
configure_lit_site_cfg(
4+
configure_compiler_rt_lit_site_cfg(
55
${CMAKE_CURRENT_SOURCE_DIR}/lit.common.configured.in
66
${CMAKE_CURRENT_BINARY_DIR}/lit.common.configured)
77

test/lit.common.cfg

-5
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ config.test_format = lit.formats.ShTest(execute_external)
2727
if execute_external:
2828
config.available_features.add('shell')
2929

30-
# Setup clang binary.
31-
compiler_path = getattr(config, 'clang', None)
32-
if (not compiler_path) or (not os.path.exists(compiler_path)):
33-
lit_config.fatal("Can't find compiler on path %r" % compiler_path)
34-
3530
compiler_id = getattr(config, 'compiler_id', None)
3631
if compiler_id == "Clang":
3732
if platform.system() != 'Windows':

test/lit.common.configured.in

+8-3
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ set_default("llvm_src_root", "@LLVM_MAIN_SRC_DIR@")
1616
set_default("llvm_obj_root", "@LLVM_BINARY_DIR@")
1717
set_default("compiler_rt_src_root", "@COMPILER_RT_SOURCE_DIR@")
1818
set_default("compiler_rt_obj_root", "@COMPILER_RT_BINARY_DIR@")
19-
set_default("llvm_tools_dir", "@LLVM_TOOLS_BINARY_DIR@")
19+
set_default("llvm_tools_dir", "@LLVM_TOOLS_DIR@")
2020
set_default("llvm_shlib_dir", "@LLVM_LIBRARY_OUTPUT_INTDIR@")
2121
set_default("gold_executable", "@GOLD_EXECUTABLE@")
22-
set_default("clang", "@COMPILER_RT_TEST_COMPILER@")
22+
set_default("clang", "@COMPILER_RT_RESOLVED_TEST_COMPILER@")
2323
set_default("compiler_id", "@COMPILER_RT_TEST_COMPILER_ID@")
2424
set_default("python_executable", "@PYTHON_EXECUTABLE@")
2525
set_default("compiler_rt_debug", @COMPILER_RT_DEBUG_PYBOOL@)
26-
set_default("compiler_rt_libdir", "@COMPILER_RT_LIBRARY_OUTPUT_DIR@")
26+
set_default("compiler_rt_libdir", "@COMPILER_RT_RESOLVED_LIBRARY_OUTPUT_DIR@")
2727
set_default("emulator", "@COMPILER_RT_EMULATOR@")
2828
set_default("ios", False)
2929
set_default("iossim", False)
@@ -39,9 +39,14 @@ config.available_features.add('target-is-%s' % config.target_arch)
3939
# apply substitution.
4040
try:
4141
config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
42+
config.clang = config.clang % lit_config.params
43+
config.compiler_rt_libdir = config.compiler_rt_libdir % lit_config.params
4244
except KeyError as e:
4345
key, = e.args
4446
lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key, key))
4547

48+
if not os.path.exists(config.clang):
49+
lit_config.fatal("Can't find compiler on path %r" % config.clang)
50+
4651
# Setup attributes common for all compiler-rt projects.
4752
lit_config.load_config(config, "@COMPILER_RT_SOURCE_DIR@/test/lit.common.cfg")

unittests/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Needed for lit support
1+
# Needed for lit support in standalone builds.
22
include(AddLLVM)
33

4-
configure_lit_site_cfg(
4+
configure_compiler_rt_lit_site_cfg(
55
${CMAKE_CURRENT_SOURCE_DIR}/lit.common.unit.configured.in
66
${CMAKE_CURRENT_BINARY_DIR}/lit.common.unit.configured)

unittests/lit.common.unit.configured.in

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
config.target_triple = "@TARGET_TRIPLE@"
55
config.llvm_src_root = "@LLVM_MAIN_SRC_DIR@"
66
config.llvm_obj_root = "@LLVM_BINARY_DIR@"
7-
config.llvm_tools_dir = "@LLVM_TOOLS_BINARY_DIR@"
7+
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
88
config.compiler_rt_src_root = "@COMPILER_RT_SOURCE_DIR@"
9-
config.compiler_rt_libdir = "@COMPILER_RT_LIBRARY_OUTPUT_DIR@"
9+
config.compiler_rt_libdir = "@COMPILER_RT_RESOLVED_LIBRARY_OUTPUT_DIR@"
1010
config.llvm_build_mode = "@LLVM_BUILD_MODE@"
1111
config.host_arch = "@HOST_ARCH@"
1212
config.host_os = "@HOST_OS@"
@@ -15,6 +15,7 @@ config.host_os = "@HOST_OS@"
1515
# so try to apply substitution.
1616
try:
1717
config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
18+
config.compiler_rt_libdir = config.compiler_rt_libdir % lit_config.params
1819
config.llvm_build_mode = config.llvm_build_mode % lit_config.params
1920
except KeyError as e:
2021
key, = e.args

0 commit comments

Comments
 (0)