Only test sanitizers that are built when COMPILER_RT_SANITIZERS_TO_BUILD is used

Summary: This allows check-all to be used when only a subset of the sanitizers are built.

Reviewers: beanz, compnerd

Subscribers: llvm-commits, mgorny

Differential Revision: https://reviews.llvm.org/D34644

llvm-svn: 306415
This commit is contained in:
Francis Ricci 2017-06-27 15:22:56 +00:00
parent 13759a7ed6
commit 80296ee7f3
2 changed files with 33 additions and 43 deletions

View File

@ -28,7 +28,6 @@ function(compiler_rt_build_runtime runtime)
endfunction()
function(compiler_rt_build_sanitizer sanitizer)
string(TOUPPER ${sanitizer} sanitizer_uppercase)
string(TOLOWER ${sanitizer} sanitizer_lowercase)
list(FIND COMPILER_RT_SANITIZERS_TO_BUILD ${sanitizer_lowercase} result)
if(NOT ${result} EQUAL -1)

View File

@ -35,6 +35,21 @@ if(NOT ANDROID)
endif()
endif()
function(compiler_rt_test_runtime runtime)
string(TOUPPER ${runtime} runtime_uppercase)
if(COMPILER_RT_HAS_${runtime_uppercase})
add_subdirectory(${runtime})
endif()
endfunction()
function(compiler_rt_test_sanitizer sanitizer)
string(TOLOWER ${sanitizer} sanitizer_lowercase)
list(FIND COMPILER_RT_SANITIZERS_TO_BUILD ${sanitizer_lowercase} result)
if(NOT ${result} EQUAL -1)
compiler_rt_test_runtime(${sanitizer})
endif()
endfunction()
# Run sanitizer tests only if we're sure that clang would produce
# working binaries.
if(COMPILER_RT_CAN_EXECUTE_TESTS)
@ -42,49 +57,25 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS)
add_subdirectory(builtins)
endif()
if(COMPILER_RT_BUILD_SANITIZERS)
if(COMPILER_RT_HAS_ASAN)
add_subdirectory(asan)
endif()
if(COMPILER_RT_HAS_DFSAN)
add_subdirectory(dfsan)
endif()
if (COMPILER_RT_HAS_INTERCEPTION)
add_subdirectory(interception)
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()
if(COMPILER_RT_HAS_ESAN)
add_subdirectory(esan)
endif()
if(COMPILER_RT_HAS_SCUDO)
add_subdirectory(scudo)
endif()
compiler_rt_test_runtime(interception)
compiler_rt_test_runtime(lsan)
compiler_rt_test_runtime(ubsan)
compiler_rt_test_runtime(sanitizer_common)
compiler_rt_test_sanitizer(asan)
compiler_rt_test_sanitizer(dfsan)
compiler_rt_test_sanitizer(msan)
compiler_rt_test_sanitizer(tsan)
compiler_rt_test_sanitizer(safestack)
compiler_rt_test_sanitizer(cfi)
compiler_rt_test_sanitizer(esan)
compiler_rt_test_sanitizer(scudo)
compiler_rt_test_runtime(profile)
endif()
if(COMPILER_RT_BUILD_XRAY AND COMPILER_RT_HAS_XRAY)
add_subdirectory(xray)
if(COMPILER_RT_BUILD_XRAY)
compiler_rt_test_runtime(xray)
endif()
endif()