forked from OSchip/llvm-project
[CMake] Use explicit header path when using in-tree libc++ for tests
This is a follow up to D118200 which applies a similar cleanup to headers when using in-tree libc++ to avoid accidentally picking up the system headers. Differential Revision: https://reviews.llvm.org/D128035
This commit is contained in:
parent
a78f436c3f
commit
ba007f20bb
|
@ -521,6 +521,17 @@ string(REGEX REPLACE "-stdlib=[a-zA-Z+]*" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}
|
|||
list(APPEND COMPILER_RT_COMMON_CFLAGS ${stdlib_flag})
|
||||
list(APPEND COMPILER_RT_COMMON_LINK_FLAGS ${stdlib_flag})
|
||||
|
||||
# TODO: There's a lot of duplication across lib/*/tests/CMakeLists.txt files,
|
||||
# move some of the common flags to COMPILER_RT_UNITTEST_CFLAGS.
|
||||
|
||||
# Unittests need access to C++ standard library.
|
||||
string(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS " ${stdlib_flag}")
|
||||
|
||||
# When cross-compiling, COMPILER_RT_TEST_COMPILER_CFLAGS help in compilation
|
||||
# and linking of unittests.
|
||||
string(REPLACE " " ";" COMPILER_RT_UNITTEST_CFLAGS "${COMPILER_RT_TEST_COMPILER_CFLAGS}")
|
||||
set(COMPILER_RT_UNITTEST_LINK_FLAGS ${COMPILER_RT_UNITTEST_CFLAGS})
|
||||
|
||||
if(COMPILER_RT_USE_LLVM_UNWINDER)
|
||||
if (COMPILER_RT_ENABLE_STATIC_UNWINDER)
|
||||
set(unwinder_target unwind_static)
|
||||
|
@ -583,7 +594,11 @@ if (SANITIZER_TEST_CXX_LIBNAME STREQUAL "libc++")
|
|||
else()
|
||||
set(cxx_target cxx_shared)
|
||||
endif()
|
||||
list(APPEND SANITIZER_TEST_CXX_LIBRARIES "$<$<BOOL:$<TARGET_NAME_IF_EXISTS:${cxx_target}>>:$<TARGET_LINKER_FILE:${cxx_target}>>")
|
||||
list(APPEND SANITIZER_TEST_CXX_LIBRARIES "$<$<TARGET_EXISTS:${cxx_target}>:$<TARGET_LINKER_FILE:${cxx_target}>>")
|
||||
list(APPEND SANITIZER_TEST_CXX_CFLAGS "$<$<TARGET_EXISTS:cxx-headers>:-isystem$<JOIN:$<TARGET_PROPERTY:cxx-headers,INTERFACE_INCLUDE_DIRECTORIES>,$<SEMICOLON>-isystem>>")
|
||||
# We are using the in tree libc++ so avoid including the default one.
|
||||
append_list_if(COMPILER_RT_HAS_NOSTDINCXX_FLAG -nostdinc++ COMPILER_RT_UNITTEST_CFLAGS)
|
||||
append_list_if(COMPILER_RT_HAS_NOSTDLIBXX_FLAG -nostdlib++ COMPILER_RT_UNITTEST_LINK_FLAGS)
|
||||
else()
|
||||
append_list_if(COMPILER_RT_HAS_LIBCXX -lc++ SANITIZER_TEST_CXX_LIBRARIES)
|
||||
endif()
|
||||
|
@ -591,17 +606,6 @@ elseif (SANITIZER_TEST_CXX_LIBNAME STREQUAL "libstdc++")
|
|||
append_list_if(COMPILER_RT_HAS_LIBSTDCXX -lstdc++ SANITIZER_TEST_CXX_LIBRARIES)
|
||||
endif()
|
||||
|
||||
# TODO: There's a lot of duplication across lib/*/tests/CMakeLists.txt files,
|
||||
# move some of the common flags to COMPILER_RT_UNITTEST_CFLAGS.
|
||||
|
||||
# Unittests need access to C++ standard library.
|
||||
string(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS " ${stdlib_flag}")
|
||||
|
||||
# When cross-compiling, COMPILER_RT_TEST_COMPILER_CFLAGS help in compilation
|
||||
# and linking of unittests.
|
||||
string(REPLACE " " ";" COMPILER_RT_UNITTEST_CFLAGS "${COMPILER_RT_TEST_COMPILER_CFLAGS}")
|
||||
set(COMPILER_RT_UNITTEST_LINK_FLAGS ${COMPILER_RT_UNITTEST_CFLAGS})
|
||||
|
||||
# Unittests support.
|
||||
set(COMPILER_RT_GTEST_PATH ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest)
|
||||
set(COMPILER_RT_GTEST_SOURCE ${COMPILER_RT_GTEST_PATH}/src/gtest-all.cc)
|
||||
|
|
|
@ -106,7 +106,8 @@ function(clang_compile object_file source)
|
|||
-o "${object_file}"
|
||||
${source_rpath}
|
||||
MAIN_DEPENDENCY ${source}
|
||||
DEPENDS ${SOURCE_DEPS})
|
||||
DEPENDS ${SOURCE_DEPS}
|
||||
COMMAND_EXPAND_LISTS)
|
||||
endfunction()
|
||||
|
||||
# On Darwin, there are no system-wide C++ headers and the just-built clang is
|
||||
|
|
|
@ -23,6 +23,7 @@ set(ASAN_UNITTEST_HEADERS
|
|||
set(ASAN_UNITTEST_COMMON_CFLAGS
|
||||
${COMPILER_RT_UNITTEST_CFLAGS}
|
||||
${COMPILER_RT_GTEST_CFLAGS}
|
||||
${SANITIZER_TEST_CXX_CFLAGS}
|
||||
-I${COMPILER_RT_SOURCE_DIR}/include
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib/asan
|
||||
|
@ -36,7 +37,8 @@ append_list_if(COMPILER_RT_HAS_WVARIADIC_MACROS_FLAG -Wno-variadic-macros ASAN_U
|
|||
# This will ensure the target linker is used
|
||||
# during cross compilation
|
||||
set(ASAN_UNITTEST_COMMON_LINK_FLAGS
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS})
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS}
|
||||
${SANITIZER_TEST_CXX_LIBRARIES})
|
||||
|
||||
# -gline-tables-only must be enough for ASan, so use it if possible.
|
||||
if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
|
||||
|
|
|
@ -3,6 +3,7 @@ include(CompilerRTCompile)
|
|||
set(GWP_ASAN_UNITTEST_CFLAGS
|
||||
${COMPILER_RT_UNITTEST_CFLAGS}
|
||||
${COMPILER_RT_GTEST_CFLAGS}
|
||||
${SANITIZER_TEST_CXX_CFLAGS}
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib/
|
||||
-O2
|
||||
-g
|
||||
|
@ -33,7 +34,9 @@ set(GWP_ASAN_UNIT_TEST_HEADERS
|
|||
add_custom_target(GwpAsanUnitTests)
|
||||
set_target_properties(GwpAsanUnitTests PROPERTIES FOLDER "Compiler-RT Tests")
|
||||
|
||||
set(GWP_ASAN_UNITTEST_LINK_FLAGS ${COMPILER_RT_UNITTEST_LINK_FLAGS} -ldl)
|
||||
set(GWP_ASAN_UNITTEST_LINK_FLAGS
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS} -ldl
|
||||
${SANITIZER_TEST_CXX_LIBRARIES})
|
||||
list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS --driver-mode=g++)
|
||||
if(NOT WIN32)
|
||||
list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS -pthread)
|
||||
|
|
|
@ -13,6 +13,7 @@ set(INTERCEPTION_TEST_HEADERS)
|
|||
set(INTERCEPTION_TEST_CFLAGS_COMMON
|
||||
${COMPILER_RT_UNITTEST_CFLAGS}
|
||||
${COMPILER_RT_GTEST_CFLAGS}
|
||||
${SANITIZER_TEST_CXX_CFLAGS}
|
||||
-I${COMPILER_RT_SOURCE_DIR}/include
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib/interception
|
||||
|
@ -21,7 +22,8 @@ set(INTERCEPTION_TEST_CFLAGS_COMMON
|
|||
-Werror=sign-compare)
|
||||
|
||||
set(INTERCEPTION_TEST_LINK_FLAGS_COMMON
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS})
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS}
|
||||
${SANITIZER_TEST_CXX_LIBRARIES})
|
||||
|
||||
# -gline-tables-only must be enough for these tests, so use it if possible.
|
||||
if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
|
||||
|
|
|
@ -6,6 +6,7 @@ set(MEMPROF_UNITTEST_CFLAGS
|
|||
${COMPILER_RT_UNITTEST_CFLAGS}
|
||||
${COMPILER_RT_GTEST_CFLAGS}
|
||||
${COMPILER_RT_GMOCK_CFLAGS}
|
||||
${SANITIZER_TEST_CXX_CFLAGS}
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib/
|
||||
-O2
|
||||
-g
|
||||
|
|
|
@ -37,7 +37,7 @@ set(ORC_TEST_ARCH ${ORC_SUPPORTED_ARCH})
|
|||
set(ORC_UNITTEST_LINK_FLAGS
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS}
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
${SANITIZER_TEST_CXX_LIBRARIES}
|
||||
${COMPILER_RT_CXX_LINK_LIBS}
|
||||
)
|
||||
|
||||
if(APPLE)
|
||||
|
|
|
@ -62,6 +62,7 @@ set(SANITIZER_TEST_CFLAGS_COMMON
|
|||
${COMPILER_RT_UNITTEST_CFLAGS}
|
||||
${COMPILER_RT_GTEST_CFLAGS}
|
||||
${COMPILER_RT_GMOCK_CFLAGS}
|
||||
${SANITIZER_TEST_CXX_CFLAGS}
|
||||
-I${COMPILER_RT_SOURCE_DIR}/include
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common
|
||||
|
@ -71,7 +72,9 @@ set(SANITIZER_TEST_CFLAGS_COMMON
|
|||
-Wno-gnu-zero-variadic-macro-arguments
|
||||
)
|
||||
|
||||
set(SANITIZER_TEST_LINK_FLAGS_COMMON ${COMPILER_RT_UNITTEST_LINK_FLAGS})
|
||||
set(SANITIZER_TEST_LINK_FLAGS_COMMON
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS}
|
||||
${SANITIZER_TEST_CXX_LIBRARIES})
|
||||
|
||||
# -gline-tables-only must be enough for these tests, so use it if possible.
|
||||
if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
|
||||
|
|
|
@ -7,6 +7,7 @@ set_target_properties(ScudoUnitTests PROPERTIES
|
|||
set(SCUDO_UNITTEST_CFLAGS
|
||||
${COMPILER_RT_UNITTEST_CFLAGS}
|
||||
${COMPILER_RT_GTEST_CFLAGS}
|
||||
${SANITIZER_TEST_CXX_CFLAGS}
|
||||
-I${COMPILER_RT_SOURCE_DIR}/include
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib/scudo/standalone
|
||||
|
@ -33,15 +34,14 @@ endif()
|
|||
set(SCUDO_TEST_ARCH ${SCUDO_STANDALONE_SUPPORTED_ARCH})
|
||||
|
||||
# gtests requires c++
|
||||
set(LINK_FLAGS
|
||||
set(SCUDO_UNITTEST_LINK_FLAGS
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS}
|
||||
${SANITIZER_TEST_CXX_LIBRARIES}
|
||||
)
|
||||
list(APPEND LINK_FLAGS -pthread -no-pie)
|
||||
${SANITIZER_TEST_CXX_LIBRARIES})
|
||||
list(APPEND SCUDO_UNITTEST_LINK_FLAGS -pthread -no-pie)
|
||||
# Linking against libatomic is required with some compilers
|
||||
check_library_exists(atomic __atomic_load_8 "" COMPILER_RT_HAS_LIBATOMIC)
|
||||
if (COMPILER_RT_HAS_LIBATOMIC)
|
||||
list(APPEND LINK_FLAGS -latomic)
|
||||
list(APPEND SCUDO_UNITTEST_LINK_FLAGS -latomic)
|
||||
endif()
|
||||
|
||||
set(SCUDO_TEST_HEADERS
|
||||
|
@ -76,7 +76,7 @@ macro(add_scudo_unittest testname)
|
|||
DEPS llvm_gtest scudo_standalone
|
||||
RUNTIME ${RUNTIME}
|
||||
CFLAGS ${SCUDO_UNITTEST_CFLAGS}
|
||||
LINK_FLAGS ${LINK_FLAGS})
|
||||
LINK_FLAGS ${SCUDO_UNITTEST_LINK_FLAGS})
|
||||
endforeach()
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -7,6 +7,7 @@ set_target_properties(TsanUnitTests PROPERTIES
|
|||
set(TSAN_UNITTEST_CFLAGS
|
||||
${COMPILER_RT_UNITTEST_CFLAGS}
|
||||
${COMPILER_RT_GTEST_CFLAGS}
|
||||
${SANITIZER_TEST_CXX_CFLAGS}
|
||||
-I${COMPILER_RT_SOURCE_DIR}/include
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib
|
||||
-I${COMPILER_RT_SOURCE_DIR}/lib/tsan/rtl
|
||||
|
@ -24,10 +25,9 @@ append_list_if(COMPILER_RT_HAS_MSSE4_2_FLAG -msse4.2 TSAN_UNITTEST_CFLAGS)
|
|||
|
||||
set(TSAN_TEST_ARCH ${TSAN_SUPPORTED_ARCH})
|
||||
|
||||
set(LINK_FLAGS
|
||||
set(TSAN_UNITTEST_LINK_FLAGS
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS}
|
||||
${SANITIZER_TEST_CXX_LIBRARIES}
|
||||
)
|
||||
${SANITIZER_TEST_CXX_LIBRARIES})
|
||||
|
||||
if(APPLE)
|
||||
|
||||
|
@ -48,13 +48,13 @@ if(APPLE)
|
|||
darwin_filter_host_archs(TSAN_SUPPORTED_ARCH TSAN_TEST_ARCH)
|
||||
list(APPEND TSAN_UNITTEST_CFLAGS ${DARWIN_osx_CFLAGS})
|
||||
|
||||
list(APPEND LINK_FLAGS ${DARWIN_osx_LINK_FLAGS})
|
||||
add_weak_symbols("ubsan" LINK_FLAGS)
|
||||
add_weak_symbols("sanitizer_common" LINK_FLAGS)
|
||||
list(APPEND TSAN_UNITTEST_LINK_FLAGS ${DARWIN_osx_LINK_FLAGS})
|
||||
add_weak_symbols("ubsan" TSAN_UNITTEST_LINK_FLAGS)
|
||||
add_weak_symbols("sanitizer_common" TSAN_UNITTEST_LINK_FLAGS)
|
||||
else()
|
||||
list(APPEND LINK_FLAGS -fsanitize=thread)
|
||||
list(APPEND LINK_FLAGS -lm)
|
||||
list(APPEND LINK_FLAGS ${COMPILER_RT_TEST_LIBDISPATCH_CFLAGS})
|
||||
list(APPEND TSAN_UNITTEST_LINK_FLAGS -fsanitize=thread)
|
||||
list(APPEND TSAN_UNITTEST_LINK_FLAGS -lm)
|
||||
list(APPEND TSAN_UNITTEST_LINK_FLAGS ${COMPILER_RT_TEST_LIBDISPATCH_CFLAGS})
|
||||
endif()
|
||||
|
||||
set(TSAN_RTL_HEADERS)
|
||||
|
@ -83,7 +83,7 @@ macro(add_tsan_unittest testname)
|
|||
COMPILE_DEPS ${TEST_HEADERS} ${TSAN_RTL_HEADERS}
|
||||
DEPS ${TSAN_DEPS}
|
||||
CFLAGS ${TSAN_UNITTEST_CFLAGS}
|
||||
LINK_FLAGS ${LINK_FLAGS})
|
||||
LINK_FLAGS ${TSAN_UNITTEST_LINK_FLAGS})
|
||||
endforeach()
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -50,7 +50,7 @@ set(XRAY_TEST_ARCH ${XRAY_SUPPORTED_ARCH})
|
|||
set(XRAY_UNITTEST_LINK_FLAGS
|
||||
${COMPILER_RT_UNITTEST_LINK_FLAGS}
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
${SANITIZER_TEST_CXX_LIBRARIES}
|
||||
${COMPILER_RT_CXX_LINK_LIBS}
|
||||
)
|
||||
|
||||
if (NOT APPLE)
|
||||
|
|
Loading…
Reference in New Issue