| # First, add the subdirectories which contain feature-based runtime libraries |
| # and several convenience helper libraries. |
| |
| include(AddCompilerRT) |
| include(SanitizerUtils) |
| # Don't build sanitizers in the bootstrap build. |
| if(NOT LLVM_USE_SANITIZER) |
| # AddressSanitizer is supported on Linux, FreeBSD and Mac OS X. |
| # 32-bit Windows support is experimental. |
| if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux|FreeBSD") |
| 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|FreeBSD" AND NOT ANDROID) |
| # LSan, UBsan and profile can be built on Mac OS, FreeBSD and Linux. |
| add_subdirectory(lsan) |
| add_subdirectory(profile) |
| add_subdirectory(ubsan) |
| endif() |
| if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT ANDROID) |
| # ThreadSanitizer and MemorySanitizer are supported on Linux only. |
| add_subdirectory(tsan) |
| add_subdirectory(tsan/dd) |
| add_subdirectory(msan) |
| add_subdirectory(msandr) |
| add_subdirectory(dfsan) |
| endif() |
| endif() |
| |
| add_subdirectory(builtins) |