diff options
author | Petr Hosek <phosek@chromium.org> | 2018-06-27 03:35:53 +0000 |
---|---|---|
committer | Petr Hosek <phosek@chromium.org> | 2018-06-27 03:35:53 +0000 |
commit | 70b7a2fd32c771bc3ae5a64ece090f798ebd51d5 (patch) | |
tree | d918fd9f60096eea319bfb626cc9708f45244d93 /runtimes | |
parent | c2fa8e709e993bd4cec0f48dfe93c2c75ec4328b (diff) |
[CMake] Provide direct support for building sanitized runtimes
This avoids having to rely on magic separators and special parsing.
Differential Revision: https://reviews.llvm.org/D48061
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@335704 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'runtimes')
-rw-r--r-- | runtimes/CMakeLists.txt | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt index 35e17a2f6a5..3feac4fa9bf 100644 --- a/runtimes/CMakeLists.txt +++ b/runtimes/CMakeLists.txt @@ -507,15 +507,7 @@ else() # if this is included from LLVM's CMake endif() foreach(name ${LLVM_RUNTIME_TARGETS}) - set(target ${name}) - string(REPLACE ":" ";" target_list ${target}) - list(GET target_list 0 name) - list(LENGTH target_list target_list_len) - if(${target_list_len} GREATER 1) - list(GET target_list 1 target) - endif() - - runtime_register_target(${name} ${target} + runtime_register_target(${name} ${name} DEPS ${deps} ) @@ -528,6 +520,32 @@ else() # if this is included from LLVM's CMake add_dependencies(runtimes-test-depends runtimes-test-depends-${name}) endif() endforeach() + + foreach(sanitizer ${LLVM_RUNTIME_SANITIZERS}) + if (sanitizer STREQUAL "Address") + set(sanitizer_name "asan") + elseif (sanitizer STREQUAL "Memory") + set(sanitizer_name "msan") + elseif (sanitizer STREQUAL "Thread") + set(sanitizer_name "tsan") + elseif (sanitizer STREQUAL "Undefined") + set(sanitizer_name "ubsan") + else() + message(FATAL_ERROR "Unsupported value of LLVM_RUNTIME_TARGET_SANITIZERS: ${sanitizers}") + endif() + foreach(name ${LLVM_RUNTIME_SANITIZER_${sanitizer}_TARGETS}) + runtime_register_target(${name}-${sanitizer_name} ${name} + DEPS runtimes-${name} + CMAKE_ARGS -DLLVM_USE_SANITIZER=${sanitizer} + -DLLVM_RUNTIMES_PREFIX=${name}/ + -DLLVM_RUNTIMES_LIBDIR_SUFFIX=/${sanitizer_name} + ) + add_dependencies(runtimes runtimes-${name}-${sanitizer_name}) + add_dependencies(runtimes-configure runtimes-${name}-${sanitizer_name}-configure) + add_dependencies(install-runtimes install-runtimes-${name}-${sanitizer_name}) + add_dependencies(install-runtimes-stripped install-runtimes-${name}-${sanitizer_name}-stripped) + endforeach() + endforeach() endif() # TODO: This is a hack needed because the libcxx headers are copied into the |