fix(build): correctly disable sanitizers in zig build script when WHOA_UB_SAN is false or release mode is not debug

This commit is contained in:
superp00t 2024-07-22 02:05:52 -04:00
parent 1b4f1dba86
commit b93c615368
2 changed files with 6 additions and 2 deletions

View File

@ -52,7 +52,7 @@ else()
endif()
if (WHOA_BUILD_GLSDL)
add_definitions(-DWHOA_BUILD_GLSDL)
endif()
endif()
# FMOD
option(WHOA_BUILD_FMOD "Disable/Enable the use of the FMOD sound API. This introduces a dependency on a proprietary FMOD dynamically linked library." 0)
@ -67,6 +67,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
# Allow strange alignments
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-sanitize=alignment")
# Make encountering UB an unrecoverable error
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-sanitize-recover=all")
else()
# Disable UBsan completely
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-sanitize=undefined")

View File

@ -111,9 +111,11 @@ pub fn build(b: *std.Build) void {
if (ub_san) {
// Disable UBsan alignment checks only
whoa_compiler_flags_list.append("-fno-sanitize=alignment") catch {};
whoa_compiler_flags_list.append("-fno-sanitize=float-cast-overflow") catch {};
whoa_compiler_flags_list.append("-fno-sanitize=signed-integer-overflow") catch {};
} else {
// Disable UBsan
whoa_compiler_flags_list.append("-fsanitize=undefined") catch {};
whoa_compiler_flags_list.append("-fno-sanitize=all") catch {};
}
var build_gll = false;