From 66eca4cb4b183f0f8a0033347bb2426e108cebb7 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 20 Sep 2022 00:05:32 -0700 Subject: [PATCH] CMake: Fix WITH_SANITIZE Adding qtc_enable_sanitize to add_qtc_executable to also instrument applications Changing qtc_enable_sanitize to use target_compile_options instead of trying to modify CMAKE_CXX_FLAGS_DEBUG and hoping that nobody else overwrites it, which previously erased the added flags. Adds support for MSVC /fsanitize Change-Id: Ida80cfd7ef7ea91b2d6473fdc047cb7132cdfec6 Reviewed-by: Cristian Adam --- cmake/QtCreatorAPI.cmake | 8 ++++++-- cmake/QtCreatorAPIInternal.cmake | 7 ++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index f772e3d9e56..52ba2f44026 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -290,7 +290,7 @@ function(add_qtc_library name) qtc_enable_separate_debug_info(${name} "${IDE_LIBRARY_PATH}") if (WITH_SANITIZE) - qtc_enable_sanitize(${SANITIZE_FLAGS}) + qtc_enable_sanitize("${name}" ${SANITIZE_FLAGS}) endif() if (NAMELINK_OPTION AND NOT QTC_STATIC_BUILD) @@ -460,7 +460,7 @@ function(add_qtc_plugin target_name) endif() if (WITH_SANITIZE) - qtc_enable_sanitize(${SANITIZE_FLAGS}) + qtc_enable_sanitize("${name}" ${SANITIZE_FLAGS}) endif() extend_qtc_target(${target_name} @@ -674,6 +674,10 @@ function(add_qtc_executable name) add_executable("${name}" ${_arg_SOURCES}) + if (WITH_SANITIZE) + qtc_enable_sanitize("${name}" ${SANITIZE_FLAGS}) + endif() + extend_qtc_target("${name}" INCLUDES "${CMAKE_BINARY_DIR}/src" ${_arg_INCLUDES} DEFINES ${default_defines_copy} ${TEST_DEFINES} ${_arg_DEFINES} diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 359fed79398..4efb59c988d 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -168,11 +168,12 @@ function(qtc_enable_release_for_debug_configuration) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" PARENT_SCOPE) endfunction() -function(qtc_enable_sanitize _sanitize_flags) +function(qtc_enable_sanitize _target _sanitize_flags) + target_compile_options("${_target}" PUBLIC -fsanitize=${SANITIZE_FLAGS}) + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=${_sanitize_flags}") + target_link_options("${_target}" PUBLIC -fsanitize=${SANITIZE_FLAGS}) endif() - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" PARENT_SCOPE) endfunction() function(qtc_add_link_flags_no_undefined target)