CMakeLists: fix ASan compile options

Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com>
This commit is contained in:
Octol1ttle
2025-12-26 19:57:44 +05:00
parent 8e3be68c65
commit 1fdc33669b

View File

@@ -105,24 +105,22 @@ option(DEBUG_ADDRESS_SANITIZER "Enable Address Sanitizer in Debug builds" OFF)
# If this is a Debug build turn on address sanitiser # If this is a Debug build turn on address sanitiser
if (DEBUG_ADDRESS_SANITIZER) if (DEBUG_ADDRESS_SANITIZER)
message(STATUS "Address Sanitizer enabled for Debug builds, Turn it off with -DDEBUG_ADDRESS_SANITIZER=off") message(STATUS "Address Sanitizer enabled for Debug builds, Turn it off with -DDEBUG_ADDRESS_SANITIZER=off")
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") set(USE_ASAN_COMPILE_OPTIONS $<AND:$<CONFIG:Debug,RelWithDebInfo>,$<COMPILE_LANGUAGE:C,CXX>>)
# using clang with clang-cl front end if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
message(STATUS "Address Sanitizer available on Clang MSVC frontend") message(STATUS "Using Address Sanitizer compile options for MSVC frontend")
add_compile_options($<$<AND:$<CONFIG:Debug,RelWithDebInfo>,$<COMPILE_LANGUAGE:C,CXX>>:/fsanitize=address /Oy->) add_compile_options(
else() $<${USE_ASAN_COMPILE_OPTIONS}:/fsanitize=address>
# AppleClang and Clang $<${USE_ASAN_COMPILE_OPTIONS}:/Oy->
message(STATUS "Address Sanitizer available on Clang") )
add_compile_options($<$<AND:$<CONFIG:Debug,RelWithDebInfo>,$<COMPILE_LANGUAGE:C,CXX>>:-fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=null>) elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
endif() message(STATUS "Using Address Sanitizer compile options for GCC/Clang")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") add_compile_options(
# GCC $<${USE_ASAN_COMPILE_OPTIONS}:-fsanitize=address,undefined>
message(STATUS "Address Sanitizer available on GCC") $<${USE_ASAN_COMPILE_OPTIONS}:-fno-omit-frame-pointer>
add_compile_options($<$<AND:$<CONFIG:Debug,RelWithDebInfo>,$<COMPILE_LANGUAGE:C,CXX>>:-fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=null>) $<${USE_ASAN_COMPILE_OPTIONS}:-fno-sanitize-recover=null>
link_libraries("asan") )
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") link_libraries("asan" "ubsan")
message(STATUS "Address Sanitizer available on MSVC")
add_compile_options($<$<AND:$<CONFIG:Debug,RelWithDebInfo>,$<COMPILE_LANGUAGE:C,CXX>>:/fsanitize=address /Oy->)
else() else()
message(STATUS "Address Sanitizer not available on compiler ${CMAKE_CXX_COMPILER_ID}") message(STATUS "Address Sanitizer not available on compiler ${CMAKE_CXX_COMPILER_ID}")
endif() endif()
@@ -389,14 +387,14 @@ if(UNIX AND APPLE)
OUTPUT_VARIABLE XCODE_VERSION_OUTPUT OUTPUT_VARIABLE XCODE_VERSION_OUTPUT
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_STRIP_TRAILING_WHITESPACE
) )
string(REGEX MATCH "Xcode ([0-9]+\.[0-9]+)" XCODE_VERSION_MATCH "${XCODE_VERSION_OUTPUT}") string(REGEX MATCH "Xcode ([0-9]+\.[0-9]+)" XCODE_VERSION_MATCH "${XCODE_VERSION_OUTPUT}")
if(XCODE_VERSION_MATCH) if(XCODE_VERSION_MATCH)
set(XCODE_VERSION ${CMAKE_MATCH_1}) set(XCODE_VERSION ${CMAKE_MATCH_1})
else() else()
set(XCODE_VERSION 0.0) set(XCODE_VERSION 0.0)
endif() endif()
if(XCODE_VERSION VERSION_GREATER_EQUAL 26.0) if(XCODE_VERSION VERSION_GREATER_EQUAL 26.0)
set(ASSETS_OUT_DIR "${CMAKE_BINARY_DIR}/program_info") set(ASSETS_OUT_DIR "${CMAKE_BINARY_DIR}/program_info")
set(GENERATED_ASSETS_CAR "${ASSETS_OUT_DIR}/Assets.car") set(GENERATED_ASSETS_CAR "${ASSETS_OUT_DIR}/Assets.car")
@@ -421,12 +419,12 @@ if(UNIX AND APPLE)
else() else()
message(WARNING "Xcode ${XCODE_VERSION} is too old. Minimum required version is 26.0. Not compiling liquid glass icons.") message(WARNING "Xcode ${XCODE_VERSION} is too old. Minimum required version is 26.0. Not compiling liquid glass icons.")
endif() endif()
else() else()
message(WARNING "actool not found. Cannot compile macOS app icons.\n" message(WARNING "actool not found. Cannot compile macOS app icons.\n"
"Install Xcode command line tools: 'xcode-select --install'") "Install Xcode command line tools: 'xcode-select --install'")
endif() endif()
elseif(UNIX) elseif(UNIX)
include(KDEInstallDirs) include(KDEInstallDirs)