From: Petr Hosek Date: Mon, 22 Apr 2019 23:31:39 +0000 (+0000) Subject: [CMake] Replace the sanitizer support in runtimes build with multilib X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2bed43d4e5041b8fd395c5069ed382c5cff85e3c;p=llvm [CMake] Replace the sanitizer support in runtimes build with multilib This is a more generic solution; while the sanitizer support can be used only for sanitizer instrumented builds, the multilib support can be used to build other variants such as noexcept which is what we would like to use in Fuchsia. The name CMake target name uses the target name, same as for the regular runtimes build and the name of the multilib, concatenated with '+'. The libraries are installed in a subdirectory named after the multilib. Differential Revision: https://reviews.llvm.org/D60926 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358935 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt index 1866b256b4f..f7ccb550635 100644 --- a/runtimes/CMakeLists.txt +++ b/runtimes/CMakeLists.txt @@ -70,7 +70,7 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) get_compiler_rt_path(compiler_rt_path) if(compiler_rt_path) list(REMOVE_ITEM runtimes ${compiler_rt_path}) - if(NOT LLVM_BUILD_COMPILER_RT) + if(NOT DEFINED LLVM_BUILD_COMPILER_RT OR LLVM_BUILD_COMPILER_RT) list(INSERT runtimes 0 ${compiler_rt_path}) endif() endif() @@ -242,7 +242,8 @@ else() # if this is included from LLVM's CMake get_cmake_property(variableNames VARIABLES) foreach(variableName ${variableNames}) - if(variableName MATCHES "^BUILTINS_${target}") + string(FIND "${variableName}" "BUILTINS_${target}" out) + if("${out}" EQUAL 0) string(REPLACE "BUILTINS_${target}_" "" new_name ${variableName}) list(APPEND ${target}_extra_args "-D${new_name}=${${variableName}}") endif() @@ -425,10 +426,13 @@ else() # if this is included from LLVM's CMake get_cmake_property(variableNames VARIABLES) foreach(variableName ${variableNames}) - if(variableName MATCHES "^RUNTIMES_${name}") + string(FIND "${variableName}" "RUNTIMES_${name}_" out) + if("${out}" EQUAL 0) string(REPLACE "RUNTIMES_${name}_" "" new_name ${variableName}) list(APPEND ${name}_extra_args "-D${new_name}=${${variableName}}") - elseif(variableName MATCHES "^RUNTIMES_${target}") + endif() + string(FIND "${variableName}" "RUNTIMES_${target}_" out) + if("${out}" EQUAL 0) string(REPLACE "RUNTIMES_${target}_" "" new_name ${variableName}) list(APPEND ${name}_extra_args "-D${new_name}=${${variableName}}") endif() @@ -510,28 +514,16 @@ else() # if this is included from LLVM's CMake 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} + foreach(multilib ${LLVM_RUNTIME_MULTILIBS}) + foreach(name ${LLVM_RUNTIME_MULTILIB_${multilib}_TARGETS}) + runtime_register_target(${name}+${multilib} ${name} DEPENDS 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) + CMAKE_ARGS -DLLVM_RUNTIMES_PREFIX=${name}/ + -DLLVM_RUNTIMES_LIBDIR_SUFFIX=/${multilib}) + add_dependencies(runtimes runtimes-${name}+${multilib}) + add_dependencies(runtimes-configure runtimes-${name}+${multilib}-configure) + add_dependencies(install-runtimes install-runtimes-${name}+${multilib}) + add_dependencies(install-runtimes-stripped install-runtimes-${name}+${multilib}-stripped) endforeach() endforeach() endif()