4
4
5
5
cmake_minimum_required (VERSION 3.26 )
6
6
cmake_policy (SET CMP0112 NEW )
7
+ cmake_policy (SET CMP0141 NEW ) # https://cmake.org/cmake/help/latest/policy/CMP0141.html#policy:CMP0141
7
8
8
9
set (NBL_BUILD_ANDROID OFF )
9
10
@@ -17,6 +18,12 @@ option(NBL_STATIC_BUILD "" ON) # ON for static builds, OFF for shared
17
18
option (NBL_DYNAMIC_MSVC_RUNTIME "" OFF )
18
19
option (NBL_SANITIZE_ADDRESS OFF )
19
20
21
+ if (MSVC AND NBL_SANITIZE_ADDRESS )
22
+ set (CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>" )
23
+ else ()
24
+ set (CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>" )
25
+ endif ()
26
+
20
27
if (NBL_STATIC_BUILD )
21
28
message (STATUS "Static Nabla build enabled!" )
22
29
else ()
@@ -87,7 +94,7 @@ set(CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo;")
87
94
set (LLVM_USE_CRT_DEBUG MTd CACHE STRING "Nabla developer note: No idea what subfolder provides this" )
88
95
set (LLVM_USE_CRT_RELEASE MT CACHE STRING "Nabla developer note: No idea what subfolder provides this" )
89
96
90
- if (NBL_SANITIZE_ADDRESS ) # get rid of RTC1 flag provided by CMake for Debug and RelWithDebInfo configurations for ASAN purposes
97
+ if (NBL_SANITIZE_ADDRESS ) # get rid of RTC1 flag provided by CMake for ASAN purposes
91
98
unset (CMAKE_CXX_FLAGS_DEBUG CACHE )
92
99
unset (CMAKE_CXX_FLAGS_DEBUG )
93
100
unset (CMAKE_CXX_FLAGS_RELWITHDEBINFO CACHE )
@@ -220,27 +227,27 @@ macro(nbl_adjust_flags)
220
227
221
228
elseif (MSVC ) # /arch:sse3 or anything like this is not needed on x64 on MSVC for enabling sse3 instructions
222
229
if (NBL_SANITIZE_ADDRESS )
223
- set ( CMAKE_EXE_LINKER_FLAGS_DEBUG " ${CMAKE_EXE_LINKER_FLAGS_DEBUG} /wholearchive:clang_rt.asan_dbg-x86_64.lib /wholearchive:clang_rt.asan_cxx_dbg-x86_64.lib -fno-omit-frame-pointer - fsanitize=address /fsanitize=address" )
224
- set ( CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO " ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /wholearchive:clang_rt.asan-x86_64.lib /wholearchive:clang_rt.asan_cxx-x86_64.lib -fno-omit-frame-pointer - fsanitize=address /fsanitize=address" )
230
+ list ( APPEND CMAKE_CXX_FLAGS / fsanitize=address )
231
+ list ( APPEND CMAKE_C_FLAGS / fsanitize=address )
225
232
endif ()
226
233
227
234
# debug
228
235
string (REPLACE "/W3" "/W0" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} " )
229
- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Zc:__cplusplus /MP${_NBL_JOBS_AMOUNT_} /ZI / fp:fast /Zc:wchar_t /INCREMENTAL ${NBL_MSVC_SANITIZE_ADDRESS} " )
236
+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Zc:__cplusplus /MP${_NBL_JOBS_AMOUNT_} /fp:fast /Zc:wchar_t /INCREMENTAL" )
230
237
string (REPLACE "/W3" "/W0" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} " )
231
- set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MP${_NBL_JOBS_AMOUNT_} /ZI / fp:fast /Zc:wchar_t /INCREMENTAL ${NBL_MSVC_SANITIZE_ADDRESS} " )
238
+ set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MP${_NBL_JOBS_AMOUNT_} /fp:fast /Zc:wchar_t /INCREMENTAL" )
232
239
233
240
# release
234
241
string (REPLACE "/GS" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} " ) # for some reason simply replacing /GS -> /GS- doesn't work... so it vanishes here and appears a few lines below!
235
- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL /Zc:__cplusplus /MP${_NBL_JOBS_AMOUNT_} /Gy- /Zc:wchar_t /sdl- /GF /GS- /fp:fast ${NBL_MSVC_SANITIZE_ADDRESS} " )
242
+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL /Zc:__cplusplus /MP${_NBL_JOBS_AMOUNT_} /Gy- /Zc:wchar_t /sdl- /GF /GS- /fp:fast" )
236
243
string (REPLACE "/GS" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} " )
237
- set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GL /MP${_NBL_JOBS_AMOUNT_} /Gy- /Zc:wchar_t /sdl- /GF /GS- /fp:fast ${NBL_MSVC_SANITIZE_ADDRESS} " )
244
+ set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GL /MP${_NBL_JOBS_AMOUNT_} /Gy- /Zc:wchar_t /sdl- /GF /GS- /fp:fast" )
238
245
239
246
# relWithDebInfo
240
247
string (REPLACE "/GS" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} " )
241
- set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /GL /Zc:__cplusplus /Zc:wchar_t /MP${_NBL_JOBS_AMOUNT_} /Gy /Zi / sdl- /Oy- /fp:fast ${NBL_MSVC_SANITIZE_ADDRESS} " )
248
+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /GL /Zc:__cplusplus /Zc:wchar_t /MP${_NBL_JOBS_AMOUNT_} /Gy /sdl- /Oy- /fp:fast" )
242
249
string (REPLACE "/GS" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} " )
243
- set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /GL /MP${_NBL_JOBS_AMOUNT_} /Gy /Zc:wchar_t /Zi / sdl- /Oy- /fp:fast ${NBL_MSVC_SANITIZE_ADDRESS} " )
250
+ set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /GL /MP${_NBL_JOBS_AMOUNT_} /Gy /Zc:wchar_t /sdl- /Oy- /fp:fast" )
244
251
245
252
#reason for INCREMENTAL:NO: https://docs.microsoft.com/en-us/cpp/build/reference/ltcg-link-time-code-generation?view=vs-2019 /LTCG is not valid for use with /INCREMENTAL.
246
253
set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /INCREMENTAL:NO /LTCG:incremental" )
0 commit comments