@@ -7,6 +7,7 @@ option(BUILD_SHARED "Option to build shared library" ON)
77option (BUILD_STATIC "Option to build static library" ON )
88option (POST_BUILD_COPY_EXT_LIBS "Option to copy external libraries to build directory" ON )
99option (SPI_SUPPORT "SPI support" OFF )
10+ option (ENABLE_SANITIZERS "Enable AddressSanitizer and UBSan for Debug builds" OFF )
1011add_compile_definitions ($<$<BOOL :${SPI_SUPPORT} >:SPI_SUPPORT >)
1112
1213message (STATUS "PLATFORM: ${PLATFORM} " )
@@ -15,13 +16,9 @@ message(STATUS "ARCH: ${ARCH}")
1516message (STATUS "BUILD_SHARED: ${BUILD_SHARED} " )
1617message (STATUS "BUILD_STATIC: ${BUILD_STATIC} " )
1718message (STATUS "POST_BUILD_COPY_EXT_LIBS: ${POST_BUILD_COPY_EXT_LIBS} " )
19+ message (STATUS "ENABLE_SANITIZERS: ${ENABLE_SANITIZERS} " )
1820
19- if (PLATFORM STREQUAL "macos" )
20- if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
21- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g" )
22- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -g" )
23- endif ()
24- elseif (PLATFORM STREQUAL "ios" OR PLATFORM STREQUAL "ios-simulator" )
21+ if (PLATFORM STREQUAL "ios" OR PLATFORM STREQUAL "ios-simulator" )
2522 set (CMAKE_SYSTEM_NAME iOS )
2623 if (PLATFORM STREQUAL "ios-simulator" )
2724 set (CMAKE_OSX_SYSROOT iphonesimulator)
@@ -81,6 +78,14 @@ set(CMAKE_C_STANDARD 99)
8178set (CMAKE_CXX_VISIBILITY_PRESET hidden)
8279set (CMAKE_C_VISIBILITY_PRESET hidden)
8380
81+ if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
82+ if (ENABLE_SANITIZERS AND (PLATFORM STREQUAL "macos" OR PLATFORM STREQUAL "linux" ))
83+ set (SANITIZER_FLAGS -fsanitize=address,undefined)
84+ add_compile_options (${SANITIZER_FLAGS} -fno-omit-frame-pointer -g )
85+ add_link_options (${SANITIZER_FLAGS} )
86+ endif ()
87+ endif ()
88+
8489set (ZEDMD_SOURCES
8590 src/ZeDMDComm.h
8691 src/ZeDMDComm.cpp
0 commit comments