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,14 @@ 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 )
22
+ if (NBL_SANITIZE_ADDRESS )
23
+ set (CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>" )
24
+ else ()
25
+ set (CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>" )
26
+ endif ()
27
+ endif ()
28
+
20
29
if (NBL_STATIC_BUILD )
21
30
message (STATUS "Static Nabla build enabled!" )
22
31
else ()
@@ -87,7 +96,7 @@ set(CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo;")
87
96
set (LLVM_USE_CRT_DEBUG MTd CACHE STRING "Nabla developer note: No idea what subfolder provides this" )
88
97
set (LLVM_USE_CRT_RELEASE MT CACHE STRING "Nabla developer note: No idea what subfolder provides this" )
89
98
90
- if (NBL_SANITIZE_ADDRESS ) # get rid of RTC1 flag provided by CMake for Debug and RelWithDebInfo configurations for ASAN purposes
99
+ if (NBL_SANITIZE_ADDRESS ) # get rid of RTC1 flag provided by CMake for ASAN purposes
91
100
unset (CMAKE_CXX_FLAGS_DEBUG CACHE )
92
101
unset (CMAKE_CXX_FLAGS_DEBUG )
93
102
unset (CMAKE_CXX_FLAGS_RELWITHDEBINFO CACHE )
@@ -220,27 +229,27 @@ macro(nbl_adjust_flags)
220
229
221
230
elseif (MSVC ) # /arch:sse3 or anything like this is not needed on x64 on MSVC for enabling sse3 instructions
222
231
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" )
232
+ list ( APPEND CMAKE_CXX_FLAGS / fsanitize=address )
233
+ list ( APPEND CMAKE_C_FLAGS / fsanitize=address )
225
234
endif ()
226
235
227
236
# debug
228
237
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} " )
238
+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Zc:__cplusplus /MP${_NBL_JOBS_AMOUNT_} /fp:fast /Zc:wchar_t /INCREMENTAL" )
230
239
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} " )
240
+ set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MP${_NBL_JOBS_AMOUNT_} /fp:fast /Zc:wchar_t /INCREMENTAL" )
232
241
233
242
# release
234
243
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} " )
244
+ 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
245
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} " )
246
+ set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GL /MP${_NBL_JOBS_AMOUNT_} /Gy- /Zc:wchar_t /sdl- /GF /GS- /fp:fast" )
238
247
239
248
# relWithDebInfo
240
249
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} " )
250
+ 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
251
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} " )
252
+ set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /GL /MP${_NBL_JOBS_AMOUNT_} /Gy /Zc:wchar_t /sdl- /Oy- /fp:fast" )
244
253
245
254
#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
255
set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /INCREMENTAL:NO /LTCG:incremental" )
0 commit comments