[compiler-rt] 48a3895 - [CMake] Use generator expression to get in-tree libc++ path
Petr Hosek via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 26 14:12:55 PST 2022
Author: Petr Hosek
Date: 2022-01-26T14:12:48-08:00
New Revision: 48a38954c92dfff0083bdf094f3616fb274b5f8a
URL: https://github.com/llvm/llvm-project/commit/48a38954c92dfff0083bdf094f3616fb274b5f8a
DIFF: https://github.com/llvm/llvm-project/commit/48a38954c92dfff0083bdf094f3616fb274b5f8a.diff
LOG: [CMake] Use generator expression to get in-tree libc++ path
When using the in-tree libc++, we should be using the full path to
ensure that we're using the right library and not accidentally pick up
the system library.
Differential Revision: https://reviews.llvm.org/D118200
Added:
Modified:
compiler-rt/CMakeLists.txt
compiler-rt/lib/memprof/tests/CMakeLists.txt
compiler-rt/lib/orc/unittests/CMakeLists.txt
compiler-rt/lib/scudo/standalone/tests/CMakeLists.txt
compiler-rt/lib/tsan/tests/CMakeLists.txt
compiler-rt/lib/xray/tests/CMakeLists.txt
Removed:
################################################################################
diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt
index 063d41bfc0fdd..3a41aa43e4066 100644
--- a/compiler-rt/CMakeLists.txt
+++ b/compiler-rt/CMakeLists.txt
@@ -532,16 +532,17 @@ endif()
if (SANITIZER_TEST_CXX_LIBNAME STREQUAL "libc++")
if (SANITIZER_TEST_CXX_INTREE)
- if (SANITIZER_USE_STATIC_TEST_CXX AND (TARGET cxx_static OR HAVE_LIBCXX))
- list(APPEND SANITIZER_TEST_CXX_LIBRARIES cxx_static)
- elseif (TARGET cxx_shared OR HAVE_LIBCXX)
- list(APPEND SANITIZER_TEST_CXX_LIBRARIES cxx_shared)
+ if (SANITIZER_USE_STATIC_TEST_CXX)
+ set(cxx_target cxx_static)
+ 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}>>")
else()
- append_list_if(COMPILER_RT_HAS_LIBCXX c++ SANITIZER_TEST_CXX_LIBRARIES)
+ append_list_if(COMPILER_RT_HAS_LIBCXX -lc++ SANITIZER_TEST_CXX_LIBRARIES)
endif()
elseif (SANITIZER_TEST_CXX_LIBNAME STREQUAL "libstdc++")
- append_list_if(COMPILER_RT_HAS_LIBSTDCXX stdc++ SANITIZER_TEST_CXX_LIBRARIES)
+ 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,
diff --git a/compiler-rt/lib/memprof/tests/CMakeLists.txt b/compiler-rt/lib/memprof/tests/CMakeLists.txt
index 688983e3a3ca4..9dcad644d0984 100644
--- a/compiler-rt/lib/memprof/tests/CMakeLists.txt
+++ b/compiler-rt/lib/memprof/tests/CMakeLists.txt
@@ -36,9 +36,8 @@ if(NOT WIN32)
list(APPEND MEMPROF_UNITTEST_LINK_FLAGS -pthread)
endif()
-foreach(lib ${SANITIZER_TEST_CXX_LIBRARIES})
- list(APPEND MEMPROF_UNITTEST_LINK_FLAGS -l${lib})
-endforeach()
+set(MEMPROF_UNITTEST_LINK_LIBRARIES ${SANITIZER_TEST_CXX_LIBRARIES})
+list(APPEND MEMPROF_UNITTEST_LINK_LIBRARIES "dl")
if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST MEMPROF_SUPPORTED_ARCH)
# MemProf unit tests are only run on the host machine.
@@ -55,7 +54,7 @@ if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST MEMPROF_SUPPORTED_ARCH)
$<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>)
set_target_compile_flags(MemProfUnitTests ${MEMPROF_UNITTEST_CFLAGS})
set_target_link_flags(MemProfUnitTests ${MEMPROF_UNITTEST_LINK_FLAGS})
- target_link_libraries(MemProfUnitTests dl)
+ target_link_libraries(MemProfUnitTests ${MEMPROF_UNITTEST_LINK_LIBRARIES})
if (TARGET cxx-headers OR HAVE_LIBCXX)
add_dependencies(MemProfUnitTests cxx-headers)
diff --git a/compiler-rt/lib/orc/unittests/CMakeLists.txt b/compiler-rt/lib/orc/unittests/CMakeLists.txt
index 95431e026d3be..3b492196dd620 100644
--- a/compiler-rt/lib/orc/unittests/CMakeLists.txt
+++ b/compiler-rt/lib/orc/unittests/CMakeLists.txt
@@ -37,6 +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}
)
if(APPLE)
@@ -51,10 +52,6 @@ else()
append_list_if(COMPILER_RT_HAS_LIBEXECINFO -lexecinfo ORC_UNITTEST_LINK_FLAGS)
endif()
-foreach(lib ${SANITIZER_TEST_CXX_LIBRARIES})
- list(APPEND ORC_UNITTEST_LINK_FLAGS -l${lib})
-endforeach()
-
set(ORC_DEPS gtest orc)
# ORC uses C++ standard library headers.
if (TARGET cxx-headers OR HAVE_LIBCXX)
diff --git a/compiler-rt/lib/scudo/standalone/tests/CMakeLists.txt b/compiler-rt/lib/scudo/standalone/tests/CMakeLists.txt
index eaa47a04a179a..6d0936cbb5c1e 100644
--- a/compiler-rt/lib/scudo/standalone/tests/CMakeLists.txt
+++ b/compiler-rt/lib/scudo/standalone/tests/CMakeLists.txt
@@ -33,10 +33,10 @@ endif()
set(SCUDO_TEST_ARCH ${SCUDO_STANDALONE_SUPPORTED_ARCH})
# gtests requires c++
-set(LINK_FLAGS ${COMPILER_RT_UNITTEST_LINK_FLAGS})
-foreach(lib ${SANITIZER_TEST_CXX_LIBRARIES})
- list(APPEND LINK_FLAGS -l${lib})
-endforeach()
+set(LINK_FLAGS
+ ${COMPILER_RT_UNITTEST_LINK_FLAGS}
+ ${SANITIZER_TEST_CXX_LIBRARIES}
+ )
list(APPEND LINK_FLAGS -pthread)
# Linking against libatomic is required with some compilers
check_library_exists(atomic __atomic_load_8 "" COMPILER_RT_HAS_LIBATOMIC)
diff --git a/compiler-rt/lib/tsan/tests/CMakeLists.txt b/compiler-rt/lib/tsan/tests/CMakeLists.txt
index d487660da935e..0a49c238403f4 100644
--- a/compiler-rt/lib/tsan/tests/CMakeLists.txt
+++ b/compiler-rt/lib/tsan/tests/CMakeLists.txt
@@ -24,10 +24,10 @@ append_list_if(COMPILER_RT_HAS_MSSE4_2_FLAG -msse4.2 TSAN_UNITTEST_CFLAGS)
set(TSAN_TEST_ARCH ${TSAN_SUPPORTED_ARCH})
-set(LINK_FLAGS ${COMPILER_RT_UNITTEST_LINK_FLAGS})
-foreach(lib ${SANITIZER_TEST_CXX_LIBRARIES})
- list(APPEND LINK_FLAGS -l${lib})
-endforeach()
+set(LINK_FLAGS
+ ${COMPILER_RT_UNITTEST_LINK_FLAGS}
+ ${SANITIZER_TEST_CXX_LIBRARIES}
+ )
if(APPLE)
diff --git a/compiler-rt/lib/xray/tests/CMakeLists.txt b/compiler-rt/lib/xray/tests/CMakeLists.txt
index 96a9db1ef8777..99884b05d77e4 100644
--- a/compiler-rt/lib/xray/tests/CMakeLists.txt
+++ b/compiler-rt/lib/xray/tests/CMakeLists.txt
@@ -50,6 +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}
)
if (NOT APPLE)
@@ -82,10 +83,6 @@ if (NOT APPLE)
append_list_if(COMPILER_RT_HAS_LIBEXECINFO -lexecinfo XRAY_UNITTEST_LINK_FLAGS)
endif()
-foreach(lib ${SANITIZER_TEST_CXX_LIBRARIES})
- list(APPEND XRAY_UNITTEST_LINK_FLAGS -l${lib})
-endforeach()
-
macro(add_xray_unittest testname)
cmake_parse_arguments(TEST "" "" "SOURCES;HEADERS" ${ARGN})
if(UNIX AND NOT APPLE)
More information about the llvm-commits
mailing list