summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouist103 <35883445+louist103@users.noreply.github.com>2026-07-25 14:05:12 +0000
committerGitHub <noreply@github.com>2026-07-25 14:05:12 +0000
commit27e6fe015c8d701aaeffd2ccd379706caccba891 (patch)
tree014edf08bd0d1db454e7e50eebb767322385c9bb
parent90c6b34e8f53652279fc1ca0b3c4300ff8891e87 (diff)
Add ASAN cmake option (#6981)
-rw-r--r--CMakeLists.txt1
-rw-r--r--soh/CMakeLists.txt27
2 files changed, 28 insertions, 0 deletions
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 $<$<CONFIG:Debug>:/Zi;>)
+ target_compile_options(soh PRIVATE $<$<CONFIG:Debug>:/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()