Skip to content

Commit 3093dee

Browse files
committed
build: fix CMake from always enabling address sanitizer on macos
1 parent 355e091 commit 3093dee

1 file changed

Lines changed: 11 additions & 6 deletions

File tree

CMakeLists.txt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ option(BUILD_SHARED "Option to build shared library" ON)
77
option(BUILD_STATIC "Option to build static library" ON)
88
option(POST_BUILD_COPY_EXT_LIBS "Option to copy external libraries to build directory" ON)
99
option(SPI_SUPPORT "SPI support" OFF)
10+
option(ENABLE_SANITIZERS "Enable AddressSanitizer and UBSan for Debug builds" OFF)
1011
add_compile_definitions($<$<BOOL:${SPI_SUPPORT}>:SPI_SUPPORT>)
1112

1213
message(STATUS "PLATFORM: ${PLATFORM}")
@@ -15,13 +16,9 @@ message(STATUS "ARCH: ${ARCH}")
1516
message(STATUS "BUILD_SHARED: ${BUILD_SHARED}")
1617
message(STATUS "BUILD_STATIC: ${BUILD_STATIC}")
1718
message(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)
8178
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
8279
set(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+
8489
set(ZEDMD_SOURCES
8590
src/ZeDMDComm.h
8691
src/ZeDMDComm.cpp

0 commit comments

Comments
 (0)