1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-10-17 14:10:25 -04:00
sdrangel/cmake/Modules/CompilerOptions.cmake
Jon Beniston f204c168f6 Add crash handler on Windows.
Add memory buffer to Logger, so last 500 log messages can be included in crash report.
Generate and include stripped pdb files so stack trace can include function names.
2025-07-31 16:35:44 +01:00

59 lines
2.1 KiB
CMake

include_guard(GLOBAL)
include(DetectArchitecture)
if (NOT APPLE)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
message(STATUS "Interprocedural optimization enabled")
else()
message(STATUS "Interprocedural optimization is disabled for Mac OS")
endif()
if(WIN32)
add_compile_definitions(
NOMINMAX
_USE_MATH_DEFINES
_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT
)
endif()
if(NOT MSVC)
add_compile_options(-Wall -Wextra -Wvla -ffast-math -fno-finite-math-only -ftree-vectorize)
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Woverloaded-virtual>)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
add_compile_options(-Wno-inconsistent-missing-override)
endif()
else()
# Disable some warnings, so more useful warnings aren't hidden in the noise
# 4996 'fopen': This function or variable may be unsafe. Consider using fopen_s instead.
# C4267: 'return': conversion from 'size_t' to 'int', possible loss of data
# C4305: 'initializing': truncation from 'double' to 'Real'
add_compile_options(/wd4996 /wd4267 /wd4305)
if(CMAKE_BUILD_TYPE MATCHES "Release")
# Include stripped debug info in release builds so crash handler can generate stack trace with function names
add_compile_options(/Zi)
add_link_options(/Zi /PDBSTRIPPED:$<TARGET_PROPERTY:RUNTIME_OUTPUT_DIRECTORY>/$<TARGET_PROPERTY:NAME>stripped.pdb)
endif()
endif()
if (SANITIZE_ADDRESS)
message(STATUS "Activate address sanitization")
if(MSVC)
set(ASAN_LIB_ARCH ${MSVC_CXX_ARCHITECTURE_ID})
string(TOLOWER ${ASAN_LIB_ARCH} ASAN_LIB_ARCH)
if(ASAN_LIB_ARCH STREQUAL "x86")
set(ASAN_LIB_ARCH "i386")
elseif(ASAN_LIB_ARCH STREQUAL "x64")
set(ASAN_LIB_ARCH "x86_64")
endif()
add_compile_options(/fsanitize=address)
link_libraries(clang_rt.asan_dynamic-${ASAN_LIB_ARCH} clang_rt.asan_dynamic_runtime_thunk-${ASAN_LIB_ARCH})
add_link_options(/wholearchive:clang_rt.asan_dynamic_runtime_thunk-${ASAN_LIB_ARCH}.lib)
else()
add_compile_options(-fsanitize=address -fno-omit-frame-pointer -g)
add_link_options(-fsanitize=address)
endif()
endif()