diff options
Diffstat (limited to 'lib/CMakeLists.txt')
-rw-r--r-- | lib/CMakeLists.txt | 66 |
1 files changed, 46 insertions, 20 deletions
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index f07ab1e1872b..b620828beb2b 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -1,22 +1,36 @@ # First, add the subdirectories which contain feature-based runtime libraries # and several convenience helper libraries. -if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux") + +# Don't build sanitizers in the bootstrap build. +if(LLVM_USE_SANITIZER STREQUAL "") # AddressSanitizer is supported on Linux and Mac OS X. - # Windows support is work in progress. - add_subdirectory(asan) - add_subdirectory(interception) - add_subdirectory(sanitizer_common) - if(NOT ANDROID) + # 32-bit Windows support is experimental. + if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux") + set(SUPPORTS_BUILDING_ASAN TRUE) + elseif(CMAKE_SYSTEM_NAME MATCHES "Windows" + AND MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 4) + set(SUPPORTS_BUILDING_ASAN TRUE) + else() + set(SUPPORTS_BUILDING_ASAN FALSE) + endif() + if(SUPPORTS_BUILDING_ASAN) + add_subdirectory(asan) + add_subdirectory(interception) + add_subdirectory(sanitizer_common) + endif() + if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND NOT ANDROID) + # LSan, UBsan and profile can be built on Mac OS and Linux. + add_subdirectory(lsan) add_subdirectory(profile) add_subdirectory(ubsan) endif() -endif() -if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND NOT ANDROID) - # ThreadSanitizer and MemorySanitizer are supported on Linux only. - add_subdirectory(tsan) - add_subdirectory(msan) - add_subdirectory(msandr) - add_subdirectory(lsan) + if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT ANDROID) + # ThreadSanitizer and MemorySanitizer are supported on Linux only. + add_subdirectory(tsan) + add_subdirectory(msan) + add_subdirectory(msandr) + add_subdirectory(dfsan) + endif() endif() # The top-level lib directory contains a large amount of C code which provides @@ -181,10 +195,22 @@ set(i386_SOURCES i386/umoddi3.S ${GENERIC_SOURCES}) -foreach(arch x86_64 i386) - if(CAN_TARGET_${arch}) - add_compiler_rt_static_runtime(clang_rt.${arch} ${arch} - SOURCES ${${arch}_SOURCES} - CFLAGS "-std=c99") - endif() -endforeach() +if (NOT WIN32) + foreach(arch x86_64 i386) + if(CAN_TARGET_${arch}) + add_compiler_rt_static_runtime(clang_rt.${arch} ${arch} + SOURCES ${${arch}_SOURCES} + CFLAGS "-std=c99") + endif() + endforeach() +endif() + +# Generate configs for running lit and unit tests. +configure_lit_site_cfg( + ${CMAKE_CURRENT_SOURCE_DIR}/lit.common.configured.in + ${CMAKE_CURRENT_BINARY_DIR}/lit.common.configured) + +configure_lit_site_cfg( + ${CMAKE_CURRENT_SOURCE_DIR}/lit.common.unit.configured.in + ${CMAKE_CURRENT_BINARY_DIR}/lit.common.unit.configured) + |