From: Kefu Chai Date: Mon, 31 Aug 2020 08:09:21 +0000 (+0800) Subject: cmake: expose Sanitizers_COMPILE_OPTIONS as a list X-Git-Tag: wip-pdonnell-testing-20200918.022351~193^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=fc6f35a840b328b03b5b483bc4891ec59d4232ec;p=ceph-ci.git cmake: expose Sanitizers_COMPILE_OPTIONS as a list * cmake/modules/FindSanitizers.cmake: do not pollute CMAKE_REQUIRED_FLAGS * cmake/modules/FindSanitizers.cmake: expose Sanitizers_COMPILE_OPTIONS as a list * CMakeLists.txt: append Sanitizers_COMPILE_OPTIONS to *_LINKER_FLAGS after replacing ";" with " " in it. Signed-off-by: Kefu Chai --- diff --git a/CMakeLists.txt b/CMakeLists.txt index f444ed724c0..0314eae50fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -543,8 +543,9 @@ endif() if(sanitizers) find_package(Sanitizers REQUIRED ${sanitizers}) add_compile_options(${Sanitizers_COMPILE_OPTIONS}) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${Sanitizers_COMPILE_OPTIONS}") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${Sanitizers_COMPILE_OPTIONS}") + string(REPLACE ";" " " sanitiers_compile_flags "${Sanitizers_COMPILE_OPTIONS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${sanitiers_compile_flags}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${sanitiers_compile_flags}") endif() # Rocksdb diff --git a/cmake/modules/FindSanitizers.cmake b/cmake/modules/FindSanitizers.cmake index 833df6fddb5..fafd4812405 100644 --- a/cmake/modules/FindSanitizers.cmake +++ b/cmake/modules/FindSanitizers.cmake @@ -44,13 +44,15 @@ if(Sanitizers_COMPILE_OPTIONS) "-fno-omit-frame-pointer") endif() -string (REPLACE ";" " " Sanitizers_COMPILE_OPTIONS "${Sanitizers_COMPILE_OPTIONS}") - include(CheckCXXSourceCompiles) -set(CMAKE_REQUIRED_FLAGS ${Sanitizers_COMPILE_OPTIONS}) +include(CMakePushCheckState) + +cmake_push_check_state() +string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${Sanitizers_COMPILE_OPTIONS}") set(CMAKE_REQUIRED_LIBRARIES ${Sanitizers_COMPILE_OPTIONS}) check_cxx_source_compiles("int main() {}" Sanitizers_ARE_SUPPORTED) +cmake_pop_check_state() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Sanitizers