Skip to content

Commit adcb78a

Browse files
committed
Merge branch 'master' of https://github.com/Devsh-Graphics-Programming/Nabla into nahim_cjit
2 parents b57580f + 6b96a1b commit adcb78a

File tree

4 files changed

+33
-14
lines changed

4 files changed

+33
-14
lines changed

3rdparty/CMakeLists.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,6 @@ if(_NBL_COMPILE_WITH_GLI_)
204204
set(BUILD_TESTING ${_OLD_BUILD_TESTING})
205205
endif()
206206

207-
208-
nbl_adjust_flags()
209-
210-
211207
add_library(lzma OBJECT
212208
lzma/C/Alloc.c
213209
lzma/C/LzFind.c
@@ -388,11 +384,17 @@ foreach(trgt IN LISTS NBL_3RDPARTY_TARGETS)
388384
else()
389385
set_property(TARGET ${trgt} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
390386
endif()
387+
388+
if(MSVC AND NBL_SANITIZE_ADDRESS)
389+
set_property(TARGET ${trgt} PROPERTY COMPILE_OPTIONS /fsanitize=address)
390+
endif()
391391
endforeach()
392392

393393
add_custom_target(3rdparty)
394394
add_dependencies(3rdparty ${NBL_3RDPARTY_TARGETS})
395395

396+
nbl_adjust_flags()
397+
396398
set(_NBL_3RDPARTY_TARGETS_ ${NBL_3RDPARTY_TARGETS} PARENT_SCOPE)
397399

398400
## REMINDER / NOTE : This is how we install 3rdparty headers we need !

CMakeLists.txt

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
cmake_minimum_required(VERSION 3.26)
66
cmake_policy(SET CMP0112 NEW)
7+
cmake_policy(SET CMP0141 NEW) # https://cmake.org/cmake/help/latest/policy/CMP0141.html#policy:CMP0141
78

89
set(NBL_BUILD_ANDROID OFF)
910

@@ -17,6 +18,14 @@ option(NBL_STATIC_BUILD "" ON) # ON for static builds, OFF for shared
1718
option(NBL_DYNAMIC_MSVC_RUNTIME "" OFF)
1819
option(NBL_SANITIZE_ADDRESS OFF)
1920

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+
2029
if(NBL_STATIC_BUILD)
2130
message(STATUS "Static Nabla build enabled!")
2231
else()
@@ -87,7 +96,7 @@ set(CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo;")
8796
set(LLVM_USE_CRT_DEBUG MTd CACHE STRING "Nabla developer note: No idea what subfolder provides this")
8897
set(LLVM_USE_CRT_RELEASE MT CACHE STRING "Nabla developer note: No idea what subfolder provides this")
8998

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
91100
unset(CMAKE_CXX_FLAGS_DEBUG CACHE)
92101
unset(CMAKE_CXX_FLAGS_DEBUG)
93102
unset(CMAKE_CXX_FLAGS_RELWITHDEBINFO CACHE)
@@ -220,27 +229,27 @@ macro(nbl_adjust_flags)
220229

221230
elseif(MSVC) # /arch:sse3 or anything like this is not needed on x64 on MSVC for enabling sse3 instructions
222231
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)
225234
endif()
226235

227236
# debug
228237
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" )
230239
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")
232241

233242
# release
234243
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")
236245
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")
238247

239248
# relWithDebInfo
240249
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")
242251
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")
244253

245254
#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.
246255
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /INCREMENTAL:NO /LTCG:incremental")

cmake/common.cmake

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,11 @@ macro(nbl_create_executable_project _EXTRA_SOURCES _EXTRA_OPTIONS _EXTRA_INCLUDE
8181
add_compile_options(${_EXTRA_OPTIONS})
8282

8383
if(NBL_SANITIZE_ADDRESS)
84-
target_compile_options(${EXECUTABLE_NAME} PUBLIC "-fsanitize=address /fsanitize=address")
84+
if(MSVC)
85+
target_compile_options(${EXECUTABLE_NAME} PUBLIC /fsanitize=address)
86+
else()
87+
target_compile_options(${EXECUTABLE_NAME} PUBLIC -fsanitize=address)
88+
endif()
8589
endif()
8690

8791
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")

src/nbl/builtin/utils.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,4 +218,8 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
218218
_ADD_PROPERTY_(BUILTIN_RESOURCES_SOURCE_DIRECTORY _OUTPUT_SOURCE_DIRECTORY_)
219219
_ADD_PROPERTY_(BUILTIN_RESOURCES_HEADERS NBL_BUILTIN_RESOURCES_HEADERS)
220220
_ADD_PROPERTY_(BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY _OUTPUT_INCLUDE_SEARCH_DIRECTORY_)
221+
222+
if(MSVC AND NBL_SANITIZE_ADDRESS)
223+
set_property(TARGET ${_TARGET_NAME_} PROPERTY COMPILE_OPTIONS /fsanitize=address)
224+
endif()
221225
endfunction()

0 commit comments

Comments
 (0)