CMakeLists: fix ASan compile options
Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com>
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user