forked from OSchip/llvm-project
[xray] [tests] Detect and handle missing LLVMTestingSupport gracefully
Add a code to properly test for presence of LLVMTestingSupport library when performing a stand-alone build, and skip tests requiring it when it is not present. Since the library is not installed, llvm-config reported empty --libs for it and the tests failed to link with undefined references. Skipping the two fdr_* test files is better than failing to build, and should be good enough until we find a better solution. NB: both installing LLVMTestingSupport and building it automatically from within compiler-rt sources are non-trivial. The former due to dependency on gtest, the latter due to tight integration with LLVM source tree. Differential Revision: https://reviews.llvm.org/D55891 llvm-svn: 349899
This commit is contained in:
parent
b47bd52a30
commit
1e8e4fc834
|
@ -239,7 +239,7 @@ macro(load_llvm_config)
|
|||
# Detect if we have the LLVMXRay and TestingSupport library installed and
|
||||
# available from llvm-config.
|
||||
execute_process(
|
||||
COMMAND ${LLVM_CONFIG_PATH} "--ldflags" "--libs" "xray" "testingsupport"
|
||||
COMMAND ${LLVM_CONFIG_PATH} "--ldflags" "--libs" "xray"
|
||||
RESULT_VARIABLE HAD_ERROR
|
||||
OUTPUT_VARIABLE CONFIG_OUTPUT)
|
||||
if (HAD_ERROR)
|
||||
|
@ -254,6 +254,26 @@ macro(load_llvm_config)
|
|||
set(COMPILER_RT_HAS_LLVMXRAY TRUE)
|
||||
endif()
|
||||
|
||||
set(COMPILER_RT_HAS_LLVMTESTINGSUPPORT FALSE)
|
||||
execute_process(
|
||||
COMMAND ${LLVM_CONFIG_PATH} "--ldflags" "--libs" "testingsupport"
|
||||
RESULT_VARIABLE HAD_ERROR
|
||||
OUTPUT_VARIABLE CONFIG_OUTPUT)
|
||||
if (HAD_ERROR)
|
||||
message(WARNING "llvm-config finding testingsupport failed with status ${HAD_ERROR}")
|
||||
else()
|
||||
string(REGEX REPLACE "[ \t]*[\r\n]+[ \t]*" ";" CONFIG_OUTPUT ${CONFIG_OUTPUT})
|
||||
list(GET CONFIG_OUTPUT 0 LDFLAGS)
|
||||
list(GET CONFIG_OUTPUT 1 LIBLIST)
|
||||
if (LIBLIST STREQUAL "")
|
||||
message(WARNING "testingsupport library not installed, some tests will be skipped")
|
||||
else()
|
||||
set(LLVM_TESTINGSUPPORT_LDFLAGS ${LDFLAGS} CACHE STRING "Linker flags for LLVMTestingSupport library")
|
||||
set(LLVM_TESTINGSUPPORT_LIBLIST ${LIBLIST} CACHE STRING "Library list for LLVMTestingSupport")
|
||||
set(COMPILER_RT_HAS_LLVMTESTINGSUPPORT TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Make use of LLVM CMake modules.
|
||||
# --cmakedir is supported since llvm r291218 (4.0 release)
|
||||
execute_process(
|
||||
|
|
|
@ -60,6 +60,10 @@ if (NOT APPLE)
|
|||
if (COMPILER_RT_STANDALONE_BUILD)
|
||||
append_list_if(COMPILER_RT_HAS_LLVMXRAY ${LLVM_XRAY_LDFLAGS} XRAY_UNITTEST_LINK_FLAGS)
|
||||
append_list_if(COMPILER_RT_HAS_LLVMXRAY ${LLVM_XRAY_LIBLIST} XRAY_UNITTEST_LINK_FLAGS)
|
||||
append_list_if(COMPILER_RT_HAS_LLVMTESTINGSUPPORT
|
||||
${LLVM_TESTINGSUPPORT_LDFLAGS} XRAY_UNITTEST_LINK_FLAGS)
|
||||
append_list_if(COMPILER_RT_HAS_LLVMTESTINGSUPPORT
|
||||
${LLVM_TESTINGSUPPORT_LIBLIST} XRAY_UNITTEST_LINK_FLAGS)
|
||||
else()
|
||||
# We add the library directories one at a time in our CFLAGS.
|
||||
foreach (DIR ${LLVM_LIBRARY_DIR})
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
add_xray_unittest(XRayTest SOURCES
|
||||
set(TEST_SOURCES
|
||||
allocator_test.cc
|
||||
buffer_queue_test.cc
|
||||
fdr_controller_test.cc
|
||||
fdr_log_writer_test.cc
|
||||
function_call_trie_test.cc
|
||||
profile_collector_test.cc
|
||||
segmented_array_test.cc
|
||||
test_helpers.cc
|
||||
xray_unit_test_main.cc)
|
||||
|
||||
if (NOT COMPILER_RT_STANDALONE_BUILD OR COMPILER_RT_HAS_LLVMTESTINGSUPPORT)
|
||||
list(APPEND TEST_SOURCES
|
||||
fdr_controller_test.cc
|
||||
fdr_log_writer_test.cc)
|
||||
endif()
|
||||
|
||||
add_xray_unittest(XRayTest SOURCES ${TEST_SOURCES})
|
||||
|
|
Loading…
Reference in New Issue