From 67f74d9ededcbdf1e2cc8db99c2d81c0c8dd1402 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 26 Aug 2023 09:51:06 -0500 Subject: [PATCH] Address sanitizer options --- CMakeLists.txt | 2 ++ scwx-qt/scwx-qt.cmake | 15 +++++++++++++++ wxdata/wxdata.cmake | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c9b28bf5..e26575bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBOOST_ALL_NO_LIB") set(SCWX_DIR ${PROJECT_SOURCE_DIR}) set(SCWX_VERSION "0.2.2") +option(SCWX_ADDRESS_SANITIZER "Build with Address Sanitizer" OFF) + add_subdirectory(external) add_subdirectory(wxdata) add_subdirectory(scwx-qt) diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index 225d2b19..96f125ee 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -399,6 +399,21 @@ target_compile_options(supercell-wx PRIVATE $<$>:-Wall -Wextra -Wpedantic -Werror> ) +# Address Sanitizer options +if (SCWX_ADDRESS_SANITIZER) + target_compile_options(scwx-qt PRIVATE + $<$:/fsanitize=address> + $<$>:-fsanitize=address -fsanitize-recover=address> + ) + target_compile_options(supercell-wx PRIVATE + $<$:/fsanitize=address> + $<$>:-fsanitize=address -fsanitize-recover=address> + ) + target_link_options(supercell-wx PRIVATE + $<$>:-fsanitize=address> + ) +endif() + if (MSVC) # Produce PDB file for debug target_compile_options(scwx-qt PRIVATE "$<$:/Zi>") diff --git a/wxdata/wxdata.cmake b/wxdata/wxdata.cmake index b6c4fb1c..578f522a 100644 --- a/wxdata/wxdata.cmake +++ b/wxdata/wxdata.cmake @@ -265,3 +265,11 @@ endif() set_target_properties(wxdata PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF) + +# Address Sanitizer options +if (SCWX_ADDRESS_SANITIZER) + target_compile_options(wxdata PRIVATE + $<$:/fsanitize=address> + $<$>:-fsanitize=address -fsanitize-recover=address> + ) +endif()