@@ -17,6 +17,7 @@ project(Nabla LANGUAGES CXX C)
17
17
18
18
option (NBL_STATIC_BUILD "" ON ) # ON for static builds, OFF for shared
19
19
option (NBL_DYNAMIC_MSVC_RUNTIME "" OFF )
20
+ option (NBL_SANITIZE_ADDRESS OFF )
20
21
21
22
if (NBL_STATIC_BUILD )
22
23
message (STATUS "Static Nabla build enabled!" )
@@ -87,9 +88,12 @@ set(CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo;")
87
88
set (LLVM_USE_CRT_DEBUG MTd CACHE STRING "Nabla developer note: No idea what subfolder provides this" )
88
89
set (LLVM_USE_CRT_RELEASE MT CACHE STRING "Nabla developer note: No idea what subfolder provides this" )
89
90
90
- unset (CMAKE_CXX_FLAGS_DEBUG CACHE )
91
- unset (CMAKE_CXX_FLAGS_DEBUG )
92
- #set(CMAKE_CXX_FLAGS_DEBUG /Zi /Ob0 /Od /MTd)
91
+ if (NBL_SANITIZE_ADDRESS ) # get rid of RTC1 flag provided by CMake for Debug and RelWithDebInfo configurations for ASAN purposes
92
+ unset (CMAKE_CXX_FLAGS_DEBUG CACHE )
93
+ unset (CMAKE_CXX_FLAGS_DEBUG )
94
+ unset (CMAKE_CXX_FLAGS_RELWITHDEBINFO CACHE )
95
+ unset (CMAKE_CXX_FLAGS_RELWITHDEBINFO )
96
+ endif ()
93
97
94
98
if (NOT CMAKE_BUILD_TYPE )
95
99
set (CMAKE_BUILD_TYPE Debug CACHE STRING "Build type: Debug or Release" FORCE )
@@ -102,16 +106,6 @@ else()
102
106
endif ()
103
107
104
108
macro (nbl_adjust_flags )
105
- option (NBL_SANITIZE_ADDRESS OFF )
106
-
107
- # test
108
- add_compile_options ("/fsanitize=adress" )
109
- add_compile_options ("-fsanitize=adress" )
110
- #add_link_options("/fsanitize=address")
111
-
112
- # TODO: AnastaZIuk please clean it later or somebody
113
- #message(FATAL_ERROR "${CMAKE_CXX_FLAGS_DEBUG}")
114
-
115
109
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
116
110
option (NBL_SANITIZE_THREAD OFF )
117
111
endif ()
@@ -195,11 +189,9 @@ macro(nbl_adjust_flags)
195
189
endif ()
196
190
197
191
elseif (MSVC ) # /arch:sse3 or anything like this is not needed on x64 on MSVC for enabling sse3 instructions
198
- if (NBL_SANITIZE_ADDRESS )
199
- set (NBL_MSVC_FLAG_SANITIZE_ADDRESS "/fsanitize=address" )
200
- #message(WARNING "Due to https://github.com/google/sanitizers/issues/328 expect not to be able to use the Debug target!")
201
- 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" )
202
- 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" )
192
+ if (NBL_SANITIZE_ADDRESS )
193
+ 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" )
194
+ 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" )
203
195
endif ()
204
196
205
197
# debug
0 commit comments