From 27e6fe015c8d701aaeffd2ccd379706caccba891 Mon Sep 17 00:00:00 2001 From: louist103 <35883445+louist103@users.noreply.github.com> Date: Sat, 25 Jul 2026 14:05:12 +0000 Subject: Add ASAN cmake option (#6981) --- CMakeLists.txt | 1 + soh/CMakeLists.txt | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index d92b7379b..3cc6fbf87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ include(CMake/lus-cvars.cmake) set(SPDLOG_LEVEL_TRACE 0) set(SPDLOG_LEVEL_OFF 6) set(SPDLOG_MIN_CUTOFF SPDLOG_LEVEL_TRACE CACHE STRING "cutoff at trace") +option(USE_ASAN "Use Address Sanitizer" OFF) option(SUPPRESS_WARNINGS "Suppress warnings in LUS and src (decomp)" ON) if(SUPPRESS_WARNINGS) diff --git a/soh/CMakeLists.txt b/soh/CMakeLists.txt index 615fdeafe..27184d7f4 100644 --- a/soh/CMakeLists.txt +++ b/soh/CMakeLists.txt @@ -715,6 +715,33 @@ else() ) endif() +if(USE_ASAN) + target_compile_options(libultraship PRIVATE -fsanitize=address) + target_link_options(libultraship PRIVATE -fsanitize=address) + target_compile_options(soh PRIVATE -fsanitize=address) + target_link_options(soh PRIVATE -fsanitize=address) + target_link_options(ZAPD PRIVATE -fsanitize=address) + target_link_options(OTRExporter PRIVATE -fsanitize=address) + target_compile_options(ZAPD PRIVATE -fsanitize=address) + target_compile_options(OTRExporter PRIVATE -fsanitize=address) + if (MSVC) + target_compile_definitions(ImGui PRIVATE _DISABLE_VECTOR_ANNOTATION) + target_compile_definitions(ImGui PRIVATE _DISABLE_STRING_ANNOTATION) + target_compile_definitions(libultraship PRIVATE _DISABLE_VECTOR_ANNOTATION) + target_compile_definitions(libultraship PRIVATE _DISABLE_STRING_ANNOTATION) + + target_compile_definitions(soh PRIVATE _DISABLE_VECTOR_ANNOTATION) + target_compile_definitions(soh PRIVATE _DISABLE_STRING_ANNOTATION) + target_compile_options(libultraship PRIVATE $<$:/Zi;>) + target_compile_options(soh PRIVATE $<$:/Zi;>) + # The default stack size on Windows is 1MB. ASAN uses a lot more stack so boost it to 16 + set_target_properties(soh PROPERTIES + LINK_FLAGS "/STACK:16777216" + ) + endif() +endif() + + if(NOT CMAKE_SYSTEM_NAME MATCHES "Darwin|NintendoSwitch|CafeOS") INSTALL(TARGETS soh DESTINATION . COMPONENT ship) endif() -- cgit v1.2.3