From f6f40266ba57ab2df99b897c375f85f0a8a97856 Mon Sep 17 00:00:00 2001 From: Levent Kaya Date: Wed, 5 Nov 2025 22:11:58 +0300 Subject: [feature] basic structure --- cmake/Sanitizer.cmake | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 cmake/Sanitizer.cmake (limited to 'cmake/Sanitizer.cmake') diff --git a/cmake/Sanitizer.cmake b/cmake/Sanitizer.cmake new file mode 100644 index 0000000..6e633a9 --- /dev/null +++ b/cmake/Sanitizer.cmake @@ -0,0 +1,28 @@ +# cmake/Sanitizers.cmake +# +# Adds sanitizers compile/link flags when requested. +# Usage: include(Sanitizers) ; enable_sanitizers() + +function(enable_sanitizers target) + if (NOT BOLTDBG_ENABLE_ASAN) + message(VERBOSE "Sanitizers disabled (BOLTDBG_ENABLE_ASAN=OFF)") + return() + endif() + + if (MSVC) + message(WARNING "AddressSanitizer is not fully supported on MSVC. Skipping.") + return() + endif() + + # AddressSanitizer + UndefinedBehaviorSanitizer recommended combo + target_compile_options(${target} PRIVATE -fsanitize=address,undefined -fno-omit-frame-pointer) + target_link_options(${target} PRIVATE -fsanitize=address,undefined) + + # Optional: ThreadSanitizer for race conditions (enable manually if needed) + # target_compile_options(${target} PRIVATE -fsanitize=thread -fno-omit-frame-pointer) + # target_link_options(${target} PRIVATE -fsanitize=thread) + + # Recommended debug symbols + target_compile_options(${target} PRIVATE -g) + message(STATUS "Enabled AddressSanitizer and UndefinedBehaviorSanitizer for target ${target}") +endfunction() -- cgit v1.2.3