summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Bieneman <beanz@apple.com>2015-12-10 00:40:58 +0000
committerChris Bieneman <beanz@apple.com>2015-12-10 00:40:58 +0000
commitb336cc19d8bfed34eb80b72947d5274bcaf1bbe4 (patch)
tree231b29661563f162558f6f36dd982b96ba83a362
parent4c6b6989f833c5d6738944852bd9327203c12692 (diff)
Revert "[CMake] Provide options for toggling on and off various runtime libraries."
This reverts r255170. This change caused a bunch of bot failures and needs to be revised. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@255184 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--cmake/Modules/CompilerRTUtils.cmake19
-rw-r--r--cmake/config-ix.cmake90
-rw-r--r--lib/CMakeLists.txt41
-rw-r--r--lib/lsan/CMakeLists.txt1
-rw-r--r--lib/tsan/CMakeLists.txt2
-rw-r--r--lib/ubsan/CMakeLists.txt2
-rw-r--r--test/CMakeLists.txt35
-rw-r--r--test/cfi/CMakeLists.txt6
-rw-r--r--test/interception/CMakeLists.txt1
-rw-r--r--test/ubsan/CMakeLists.txt14
10 files changed, 113 insertions, 98 deletions
diff --git a/cmake/Modules/CompilerRTUtils.cmake b/cmake/Modules/CompilerRTUtils.cmake
index f9c7f0fed..cf690f4a3 100644
--- a/cmake/Modules/CompilerRTUtils.cmake
+++ b/cmake/Modules/CompilerRTUtils.cmake
@@ -36,16 +36,6 @@ macro(append_list_if condition value)
endif()
endmacro()
-# Appends values to list if it isn't already there
-macro(append_list_unique list)
- foreach(val ${ARGN})
- list(FIND ${list} ${val} idx)
- if(idx EQUAL -1)
- list(APPEND ${list} ${val})
- endif()
- endforeach()
-endmacro()
-
# Appends value to all strings in ARGN, if the condition is true.
macro(append_string_if condition value)
if(${condition})
@@ -77,12 +67,3 @@ macro(list_union output input1 input2)
endif()
endforeach()
endmacro()
-
-macro(check_list_contains outvar list input)
- list(FIND ${list} ${input} idx)
- if(idx GREATER -1)
- set(${outvar} True)
- else()
- set(${outvar} False)
- endif()
-endmacro()
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake
index 2d1bbbbc3..700422b7c 100644
--- a/cmake/config-ix.cmake
+++ b/cmake/config-ix.cmake
@@ -505,82 +505,78 @@ endif()
if (SANITIZER_COMMON_SUPPORTED_ARCH AND NOT LLVM_USE_SANITIZER AND
(OS_NAME MATCHES "Android|Darwin|Linux|FreeBSD" OR
(OS_NAME MATCHES "Windows" AND MSVC)))
- list(APPEND DEFAULT_RUNTIMES sanitizer_common)
+ set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE)
+else()
+ set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE)
endif()
-if (NOT OS_NAME MATCHES "Windows" OR CMAKE_SIZEOF_VOID_P EQUAL 4)
- list(APPEND DEFAULT_RUNTIMES interception)
- list(APPEND REQUIRES_COMMON interception)
+if (COMPILER_RT_HAS_SANITIZER_COMMON AND
+ (NOT OS_NAME MATCHES "Windows" OR CMAKE_SIZEOF_VOID_P EQUAL 4))
+ set(COMPILER_RT_HAS_INTERCEPTION TRUE)
+else()
+ set(COMPILER_RT_HAS_INTERCEPTION FALSE)
endif()
-if (ASAN_SUPPORTED_ARCH AND
+if (COMPILER_RT_HAS_SANITIZER_COMMON AND ASAN_SUPPORTED_ARCH AND
(NOT OS_NAME MATCHES "Windows" OR CMAKE_SIZEOF_VOID_P EQUAL 4))
- list(APPEND DEFAULT_RUNTIMES asan)
- list(APPEND REQUIRES_COMMON asan)
+ set(COMPILER_RT_HAS_ASAN TRUE)
+else()
+ set(COMPILER_RT_HAS_ASAN FALSE)
endif()
if (OS_NAME MATCHES "Linux|FreeBSD|Windows")
- set(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME On)
+ set(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME TRUE)
+else()
+ set(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME FALSE)
endif()
# TODO: Add builtins support.
-if (DFSAN_SUPPORTED_ARCH AND
+if (COMPILER_RT_HAS_SANITIZER_COMMON AND DFSAN_SUPPORTED_ARCH AND
OS_NAME MATCHES "Linux")
- list(APPEND DEFAULT_RUNTIMES dfsan)
- list(APPEND REQUIRES_COMMON dfsan)
+ set(COMPILER_RT_HAS_DFSAN TRUE)
+else()
+ set(COMPILER_RT_HAS_DFSAN FALSE)
endif()
-if (LSAN_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux|FreeBSD")
- list(APPEND DEFAULT_RUNTIMES lsan)
- list(APPEND REQUIRES_COMMON lsan)
+if (COMPILER_RT_HAS_SANITIZER_COMMON AND LSAN_SUPPORTED_ARCH AND
+ OS_NAME MATCHES "Linux|FreeBSD")
+ set(COMPILER_RT_HAS_LSAN TRUE)
+else()
+ set(COMPILER_RT_HAS_LSAN FALSE)
endif()
-if (MSAN_SUPPORTED_ARCH AND
+if (COMPILER_RT_HAS_SANITIZER_COMMON AND MSAN_SUPPORTED_ARCH AND
OS_NAME MATCHES "Linux")
- list(APPEND DEFAULT_RUNTIMES msan)
- list(APPEND REQUIRES_COMMON msan)
+ set(COMPILER_RT_HAS_MSAN TRUE)
+else()
+ set(COMPILER_RT_HAS_MSAN FALSE)
endif()
if (PROFILE_SUPPORTED_ARCH AND
OS_NAME MATCHES "Darwin|Linux|FreeBSD")
- list(APPEND DEFAULT_RUNTIMES profile)
+ set(COMPILER_RT_HAS_PROFILE TRUE)
+else()
+ set(COMPILER_RT_HAS_PROFILE FALSE)
endif()
-if (TSAN_SUPPORTED_ARCH AND
+if (COMPILER_RT_HAS_SANITIZER_COMMON AND TSAN_SUPPORTED_ARCH AND
OS_NAME MATCHES "Darwin|Linux|FreeBSD")
- list(APPEND DEFAULT_RUNTIMES tsan)
- list(APPEND REQUIRES_COMMON tsan)
+ set(COMPILER_RT_HAS_TSAN TRUE)
+else()
+ set(COMPILER_RT_HAS_TSAN FALSE)
endif()
-if (UBSAN_SUPPORTED_ARCH AND
+if (COMPILER_RT_HAS_SANITIZER_COMMON AND UBSAN_SUPPORTED_ARCH AND
OS_NAME MATCHES "Darwin|Linux|FreeBSD|Windows")
- list(APPEND DEFAULT_RUNTIMES ubsan)
- list(APPEND REQUIRES_COMMON ubsan)
+ set(COMPILER_RT_HAS_UBSAN TRUE)
+else()
+ set(COMPILER_RT_HAS_UBSAN FALSE)
endif()
-list(APPEND DEFAULT_RUNTIMES cfi)
-if (SAFESTACK_SUPPORTED_ARCH AND
+if (COMPILER_RT_HAS_SANITIZER_COMMON AND SAFESTACK_SUPPORTED_ARCH AND
OS_NAME MATCHES "Darwin|Linux|FreeBSD")
- list(APPEND DEFAULT_RUNTIMES safestack)
- list(APPEND REQUIRES_COMMON safestack)
-endif()
-
-set(COMPILER_RT_RUNTIMES_TO_BUILD "all"
- CACHE STRING "Semicolon-separated list of runtimes to build, or \"all\".")
-
-if(COMPILER_RT_RUNTIMES_TO_BUILD STREQUAL "all")
- set(COMPILER_RT_RUNTIMES_TO_BUILD ${DEFAULT_RUNTIMES})
-endif()
-
-# Several of the runtimes produce object libraries that are consumed by other
-# runtimes (i.e. asan relies on ubsan). If you're building a library that relies
-# on common bits we need to build this full set of libraries.
-list_union(SHOULD_BUILD_COMMON REQUIRES_COMMON COMPILER_RT_RUNTIMES_TO_BUILD)
-
-if(SHOULD_BUILD_COMMON)
- append_list_unique(COMPILER_RT_RUNTIMES_TO_BUILD sanitizer_common)
- append_list_unique(COMPILER_RT_RUNTIMES_TO_BUILD lsan)
- append_list_unique(COMPILER_RT_RUNTIMES_TO_BUILD ubsan)
- append_list_unique(COMPILER_RT_RUNTIMES_TO_BUILD interception)
+ set(COMPILER_RT_HAS_SAFESTACK TRUE)
+else()
+ set(COMPILER_RT_HAS_SAFESTACK FALSE)
endif()
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index d461dffc1..9215b080b 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -9,9 +9,40 @@ if(COMPILER_RT_BUILD_BUILTINS)
endif()
if(COMPILER_RT_BUILD_SANITIZERS)
- message(STATUS "Adding runtimes...")
- foreach(runtime ${COMPILER_RT_RUNTIMES_TO_BUILD})
- message(STATUS "Adding runtime: ${runtime}")
- add_subdirectory(${runtime})
- endforeach()
+ if(COMPILER_RT_HAS_INTERCEPTION)
+ add_subdirectory(interception)
+ endif()
+
+ if(COMPILER_RT_HAS_SANITIZER_COMMON)
+ add_subdirectory(sanitizer_common)
+ add_subdirectory(lsan)
+ add_subdirectory(ubsan)
+ endif()
+
+ add_subdirectory(cfi)
+
+ if(COMPILER_RT_HAS_ASAN)
+ add_subdirectory(asan)
+ endif()
+
+ if(COMPILER_RT_HAS_DFSAN)
+ add_subdirectory(dfsan)
+ endif()
+
+ if(COMPILER_RT_HAS_MSAN)
+ add_subdirectory(msan)
+ endif()
+
+ if(COMPILER_RT_HAS_PROFILE)
+ add_subdirectory(profile)
+ endif()
+
+ if(COMPILER_RT_HAS_TSAN)
+ add_subdirectory(tsan)
+ add_subdirectory(tsan/dd)
+ endif()
+
+ if(COMPILER_RT_HAS_SAFESTACK)
+ add_subdirectory(safestack)
+ endif()
endif()
diff --git a/lib/lsan/CMakeLists.txt b/lib/lsan/CMakeLists.txt
index a04aa629e..20e409321 100644
--- a/lib/lsan/CMakeLists.txt
+++ b/lib/lsan/CMakeLists.txt
@@ -24,7 +24,6 @@ add_compiler_rt_object_libraries(RTLSanCommon
SOURCES ${LSAN_COMMON_SOURCES}
CFLAGS ${LSAN_CFLAGS})
-check_list_contains(COMPILER_RT_HAS_LSAN COMPILER_RT_RUNTIMES_TO_BUILD lsan)
if(COMPILER_RT_HAS_LSAN)
foreach(arch ${LSAN_SUPPORTED_ARCH})
add_compiler_rt_runtime(clang_rt.lsan
diff --git a/lib/tsan/CMakeLists.txt b/lib/tsan/CMakeLists.txt
index 176e855bf..0e60cd346 100644
--- a/lib/tsan/CMakeLists.txt
+++ b/lib/tsan/CMakeLists.txt
@@ -213,5 +213,3 @@ endif()
if(COMPILER_RT_INCLUDE_TESTS)
add_subdirectory(tests)
endif()
-
-add_subdirectory(dd)
diff --git a/lib/ubsan/CMakeLists.txt b/lib/ubsan/CMakeLists.txt
index c447042c2..5ece9a62c 100644
--- a/lib/ubsan/CMakeLists.txt
+++ b/lib/ubsan/CMakeLists.txt
@@ -1,7 +1,5 @@
# Build for the undefined behavior sanitizer runtime support library.
-check_list_contains(COMPILER_RT_HAS_UBSAN COMPILER_RT_RUNTIMES_TO_BUILD ubsan)
-
set(UBSAN_SOURCES
ubsan_diag.cc
ubsan_init.cc
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 1a7215774..e5c51c8cd 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -36,9 +36,37 @@ endif()
# Run sanitizer tests only if we're sure that clang would produce
# working binaries.
if(COMPILER_RT_CAN_EXECUTE_TESTS)
- foreach(runtime ${COMPILER_RT_RUNTIMES_TO_BUILD})
- add_subdirectory(${runtime})
- endforeach()
+ if(COMPILER_RT_HAS_ASAN)
+ add_subdirectory(asan)
+ endif()
+ if(COMPILER_RT_HAS_DFSAN)
+ add_subdirectory(dfsan)
+ endif()
+ if(COMPILER_RT_HAS_LSAN)
+ add_subdirectory(lsan)
+ endif()
+ if(COMPILER_RT_HAS_MSAN)
+ add_subdirectory(msan)
+ endif()
+ if(COMPILER_RT_HAS_PROFILE)
+ add_subdirectory(profile)
+ endif()
+ if(COMPILER_RT_HAS_SANITIZER_COMMON)
+ add_subdirectory(sanitizer_common)
+ endif()
+ if(COMPILER_RT_HAS_TSAN)
+ add_subdirectory(tsan)
+ endif()
+ if(COMPILER_RT_HAS_UBSAN)
+ add_subdirectory(ubsan)
+ endif()
+ # CFI tests require diagnostic mode, which is implemented in UBSan.
+ if(COMPILER_RT_HAS_UBSAN)
+ add_subdirectory(cfi)
+ endif()
+ if(COMPILER_RT_HAS_SAFESTACK)
+ add_subdirectory(safestack)
+ endif()
endif()
if(COMPILER_RT_STANDALONE_BUILD)
@@ -51,4 +79,3 @@ if(COMPILER_RT_STANDALONE_BUILD)
${LLVM_LIT_TESTSUITES}
DEPENDS ${LLVM_LIT_DEPENDS})
endif()
-
diff --git a/test/cfi/CMakeLists.txt b/test/cfi/CMakeLists.txt
index e7db8e8d0..09672953b 100644
--- a/test/cfi/CMakeLists.txt
+++ b/test/cfi/CMakeLists.txt
@@ -1,9 +1,3 @@
-check_list_contains(HAS_UBSAN COMPILER_RT_RUNTIMES_TO_BUILD ubsan)
-# CFI tests require diagnostic mode, which is implemented in UBSan.
-if(NOT HAS_UBSAN)
- return()
-endif()
-
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
diff --git a/test/interception/CMakeLists.txt b/test/interception/CMakeLists.txt
deleted file mode 100644
index 0c0dfdb5b..000000000
--- a/test/interception/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-# Placeholder to avoid special casing.
diff --git a/test/ubsan/CMakeLists.txt b/test/ubsan/CMakeLists.txt
index f61b0b303..0938ea2b1 100644
--- a/test/ubsan/CMakeLists.txt
+++ b/test/ubsan/CMakeLists.txt
@@ -20,10 +20,6 @@ if(APPLE)
darwin_filter_host_archs(UBSAN_SUPPORTED_ARCH UBSAN_TEST_ARCH)
endif()
-check_list_contains(HAS_ASAN COMPILER_RT_RUNTIMES_TO_BUILD asan)
-check_list_contains(HAS_MSAN COMPILER_RT_RUNTIMES_TO_BUILD msan)
-check_list_contains(HAS_TSAN COMPILER_RT_RUNTIMES_TO_BUILD tsan)
-
foreach(arch ${UBSAN_TEST_ARCH})
set(UBSAN_TEST_TARGET_ARCH ${arch})
if(${arch} MATCHES "arm|aarch64")
@@ -35,17 +31,13 @@ foreach(arch ${UBSAN_TEST_ARCH})
endif()
add_ubsan_testsuite("Standalone" ubsan ${arch})
- check_list_contains(ASAN_HAS_ARCH ASAN_SUPPORTED_ARCH ${arch})
- check_list_contains(MSAN_HAS_ARCH MSAN_SUPPORTED_ARCH ${arch})
- check_list_contains(TSAN_HAS_ARCH TSAN_SUPPORTED_ARCH ${arch})
-
- if(HAS_ASAN AND ASAN_HAS_ARCH)
+ if(COMPILER_RT_HAS_ASAN AND ";${ASAN_SUPPORTED_ARCH};" MATCHES ";${arch};")
add_ubsan_testsuite("AddressSanitizer" asan ${arch})
endif()
- if(HAS_MSAN AND MSAN_HAS_ARCH)
+ if(COMPILER_RT_HAS_MSAN AND ";${MSAN_SUPPORTED_ARCH};" MATCHES ";${arch};")
add_ubsan_testsuite("MemorySanitizer" msan ${arch})
endif()
- if(HAS_TSAN AND TSAN_HAS_ARCH)
+ if(COMPILER_RT_HAS_TSAN AND ";${TSAN_SUPPORTED_ARCH};" MATCHES ";${arch};")
add_ubsan_testsuite("ThreadSanitizer" tsan ${arch})
endif()
endforeach()