mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-26 13:26:22 +00:00
[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 llvm-svn: 335704
This commit is contained in:
parent
a1efebc31c
commit
7e5e3edc95
@ -46,7 +46,9 @@ foreach(target x86_64;aarch64)
|
||||
set(BUILTINS_${target}-fuchsia_CMAKE_SYSROOT ${FUCHSIA_${target}_SYSROOT} CACHE PATH "")
|
||||
endforeach()
|
||||
|
||||
set(LLVM_RUNTIME_TARGETS "default;x86_64-fuchsia;aarch64-fuchsia;x86_64-fuchsia-asan:x86_64-fuchsia;aarch64-fuchsia-asan:aarch64-fuchsia" CACHE STRING "")
|
||||
set(LLVM_RUNTIME_TARGETS "default;x86_64-fuchsia;aarch64-fuchsia" CACHE STRING "")
|
||||
set(LLVM_RUNTIME_SANITIZERS "Address" CACHE STRING "")
|
||||
set(LLVM_RUNTIME_SANITIZER_Address_TARGETS "x86_64-fuchsia;aarch64-fuchsia" CACHE STRING "")
|
||||
|
||||
# Set the default target runtimes options.
|
||||
if(NOT APPLE)
|
||||
@ -81,11 +83,6 @@ foreach(target x86_64;aarch64)
|
||||
set(RUNTIMES_${target}-fuchsia_LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "")
|
||||
set(RUNTIMES_${target}-fuchsia_LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
|
||||
set(RUNTIMES_${target}-fuchsia_SANITIZER_USE_COMPILER_RT ON CACHE BOOL "")
|
||||
|
||||
set(RUNTIMES_${target}-fuchsia-asan_LLVM_USE_SANITIZER Address CACHE STRING "")
|
||||
set(RUNTIMES_${target}-fuchsia-asan_LLVM_RUNTIMES_PREFIX "${target}-fuchsia/" CACHE STRING "")
|
||||
set(RUNTIMES_${target}-fuchsia-asan_LLVM_RUNTIMES_LIBDIR_SUFFIX "/asan" CACHE STRING "")
|
||||
set(RUNTIMES_${target}-fuchsia-asan_LIBCXX_INSTALL_HEADERS OFF CACHE BOOL "")
|
||||
endforeach()
|
||||
|
||||
# Setup toolchain.
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user