Skip to content

Commit de6786b

Browse files
authored
add optional ASAN to CMakeLists.txt (#110)
1 parent 8133c93 commit de6786b

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@ project(taradino
88
)
99
configure_file(rott/version.h.in rott/version.h @ONLY)
1010

11+
option(TARADINO_ASAN "Use Address Sanitizer" OFF)
1112
option(TARADINO_SHAREWARE "Build shareware version" OFF)
1213
option(TARADINO_WARNINGS_AS_ERRORS "Treat all compiler warnings as errors" OFF)
1314
set(TARADINO_DATADIR "" CACHE STRING "Game data file directory")
1415
set(TARADINO_SUFFIX "" CACHE STRING "Executable file name suffix")
1516

17+
add_library(ASAN::ASAN IMPORTED INTERFACE)
18+
target_compile_options(ASAN::ASAN INTERFACE -fsanitize=address $<$<NOT:$<COMPILE_LANG_AND_ID:C,MSVC>>:-fno-omit-frame-pointer>)
19+
target_link_options(ASAN::ASAN INTERFACE -fsanitize=address)
20+
1621
find_package(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)
1722
find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main)
1823
find_package(SDL2_mixer REQUIRED CONFIG REQUIRED COMPONENTS SDL2_mixer)
@@ -39,6 +44,7 @@ target_link_libraries(taradino PRIVATE $<TARGET_NAME_IF_EXISTS:SDL2::SDL2main> S
3944
target_compile_definitions(taradino PRIVATE PACKAGE_STRING="${TARADINO_TITLE} ${CMAKE_PROJECT_VERSION}")
4045
target_compile_definitions(taradino PRIVATE PACKAGE_TARNAME="${CMAKE_PROJECT_NAME}")
4146
target_include_directories(taradino PRIVATE "${PROJECT_BINARY_DIR}/rott")
47+
target_link_libraries(taradino PUBLIC $<$<BOOL:${TARADINO_ASAN}>:ASAN::ASAN>)
4248

4349
if(NOT DEFINED TARADINO_EXEC)
4450
set(TARADINO_EXEC taradino)

0 commit comments

Comments
 (0)