Index: clang/cmake/caches/Fuchsia-stage2.cmake =================================================================== --- clang/cmake/caches/Fuchsia-stage2.cmake +++ clang/cmake/caches/Fuchsia-stage2.cmake @@ -46,7 +46,9 @@ 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) @@ -84,11 +86,6 @@ set(RUNTIMES_${target}-fuchsia_LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") set(RUNTIMES_${target}-fuchsia_LIBCXX_ENABLE_STATIC OFF 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. Index: llvm/runtimes/CMakeLists.txt =================================================================== --- llvm/runtimes/CMakeLists.txt +++ llvm/runtimes/CMakeLists.txt @@ -504,15 +504,7 @@ 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} ) @@ -525,6 +517,32 @@ 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