From 271e8b8adce75db9ebd5c23bbec57c186d5b7956 Mon Sep 17 00:00:00 2001 From: Fabio Arnold Date: Sat, 21 Mar 2026 11:32:50 +0100 Subject: [PATCH] CMake: add option for sanitizers --- CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a00879fe..d0e99edf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,6 +76,14 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO ON) +option(ENABLE_SANITIZERS "Enable AddressSanitizer and UndefinedBehaviorSanitizer" OFF) +if (ENABLE_SANITIZERS) + add_compile_options(-fsanitize=address,undefined -fno-sanitize=vptr -fno-omit-frame-pointer) + add_link_options(-fsanitize=address,undefined -fno-sanitize=vptr) + # metal-cpp headers are incompatible with ASan/UBSan (Protocol ambiguity in objc/runtime.h) + add_compile_options($<$:-fno-sanitize=address,undefined>) +endif() + if (MSVC) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT CemuBin) # floating point model: precise, fiber safe optimizations