summaryrefslogtreecommitdiff
path: root/runtimes
diff options
context:
space:
mode:
authorPetr Hosek <phosek@chromium.org>2018-06-27 03:35:53 +0000
committerPetr Hosek <phosek@chromium.org>2018-06-27 03:35:53 +0000
commit70b7a2fd32c771bc3ae5a64ece090f798ebd51d5 (patch)
treed918fd9f60096eea319bfb626cc9708f45244d93 /runtimes
parentc2fa8e709e993bd4cec0f48dfe93c2c75ec4328b (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.txt36
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