diff options
author | Chris Bieneman <beanz@apple.com> | 2015-12-10 00:40:58 +0000 |
---|---|---|
committer | Chris Bieneman <beanz@apple.com> | 2015-12-10 00:40:58 +0000 |
commit | b336cc19d8bfed34eb80b72947d5274bcaf1bbe4 (patch) | |
tree | 231b29661563f162558f6f36dd982b96ba83a362 | |
parent | 4c6b6989f833c5d6738944852bd9327203c12692 (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.cmake | 19 | ||||
-rw-r--r-- | cmake/config-ix.cmake | 90 | ||||
-rw-r--r-- | lib/CMakeLists.txt | 41 | ||||
-rw-r--r-- | lib/lsan/CMakeLists.txt | 1 | ||||
-rw-r--r-- | lib/tsan/CMakeLists.txt | 2 | ||||
-rw-r--r-- | lib/ubsan/CMakeLists.txt | 2 | ||||
-rw-r--r-- | test/CMakeLists.txt | 35 | ||||
-rw-r--r-- | test/cfi/CMakeLists.txt | 6 | ||||
-rw-r--r-- | test/interception/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/ubsan/CMakeLists.txt | 14 |
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() |