From 80296ee7f376366c410b2140bce459eb9d5169d7 Mon Sep 17 00:00:00 2001 From: Francis Ricci Date: Tue, 27 Jun 2017 15:22:56 +0000 Subject: 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 --- compiler-rt/lib/CMakeLists.txt | 1 - compiler-rt/test/CMakeLists.txt | 75 ++++++++++++++++++----------------------- 2 files changed, 33 insertions(+), 43 deletions(-) (limited to 'compiler-rt') diff --git a/compiler-rt/lib/CMakeLists.txt b/compiler-rt/lib/CMakeLists.txt index 4ab1e933af3..7000efb6bf8 100644 --- a/compiler-rt/lib/CMakeLists.txt +++ b/compiler-rt/lib/CMakeLists.txt @@ -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) diff --git a/compiler-rt/test/CMakeLists.txt b/compiler-rt/test/CMakeLists.txt index 7685fb3f426..8ef66c3c0bb 100644 --- a/compiler-rt/test/CMakeLists.txt +++ b/compiler-rt/test/CMakeLists.txt @@ -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() -- cgit v1.2.1