forked from qt-creator/qt-creator
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 <cristian.adam@qt.io>
This commit is contained in:
@@ -290,7 +290,7 @@ function(add_qtc_library name)
|
|||||||
qtc_enable_separate_debug_info(${name} "${IDE_LIBRARY_PATH}")
|
qtc_enable_separate_debug_info(${name} "${IDE_LIBRARY_PATH}")
|
||||||
|
|
||||||
if (WITH_SANITIZE)
|
if (WITH_SANITIZE)
|
||||||
qtc_enable_sanitize(${SANITIZE_FLAGS})
|
qtc_enable_sanitize("${name}" ${SANITIZE_FLAGS})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NAMELINK_OPTION AND NOT QTC_STATIC_BUILD)
|
if (NAMELINK_OPTION AND NOT QTC_STATIC_BUILD)
|
||||||
@@ -460,7 +460,7 @@ function(add_qtc_plugin target_name)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WITH_SANITIZE)
|
if (WITH_SANITIZE)
|
||||||
qtc_enable_sanitize(${SANITIZE_FLAGS})
|
qtc_enable_sanitize("${name}" ${SANITIZE_FLAGS})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
extend_qtc_target(${target_name}
|
extend_qtc_target(${target_name}
|
||||||
@@ -674,6 +674,10 @@ function(add_qtc_executable name)
|
|||||||
|
|
||||||
add_executable("${name}" ${_arg_SOURCES})
|
add_executable("${name}" ${_arg_SOURCES})
|
||||||
|
|
||||||
|
if (WITH_SANITIZE)
|
||||||
|
qtc_enable_sanitize("${name}" ${SANITIZE_FLAGS})
|
||||||
|
endif()
|
||||||
|
|
||||||
extend_qtc_target("${name}"
|
extend_qtc_target("${name}"
|
||||||
INCLUDES "${CMAKE_BINARY_DIR}/src" ${_arg_INCLUDES}
|
INCLUDES "${CMAKE_BINARY_DIR}/src" ${_arg_INCLUDES}
|
||||||
DEFINES ${default_defines_copy} ${TEST_DEFINES} ${_arg_DEFINES}
|
DEFINES ${default_defines_copy} ${TEST_DEFINES} ${_arg_DEFINES}
|
||||||
|
@@ -168,11 +168,12 @@ function(qtc_enable_release_for_debug_configuration)
|
|||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" PARENT_SCOPE)
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" PARENT_SCOPE)
|
||||||
endfunction()
|
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")
|
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()
|
endif()
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(qtc_add_link_flags_no_undefined target)
|
function(qtc_add_link_flags_no_undefined target)
|
||||||
|
Reference in New Issue
Block a user