sdrangel/cmake/Modules/CompilerOptions.cmake

49 lines
1.7 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 -Woverloaded-virtual -Wno-inconsistent-missing-override -ffast-math -fno-finite-math-only -ftree-vectorize)
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)
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()