Add ASAN cmake option (#6981)

This commit is contained in:
louist103
2026-07-25 14:05:12 +00:00
committed by GitHub
parent 90c6b34e8f
commit 27e6fe015c
2 changed files with 28 additions and 0 deletions
+1
View File
@@ -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)
+27
View File
@@ -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()