SDL2 seems to use some unintialized memory in SDL_Init() so ASAN just kills the program right away if it's enabled (sad). UBSAN is still very useful in its own right, though, so makes sense to have an option to enable only that.
43 lines
1.3 KiB
CMake
43 lines
1.3 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
|
|
project(epec-mcu-emulator LANGUAGES C)
|
|
|
|
option(WERROR "Treat warnings as errors" OFF)
|
|
option(UBSAN "Enable undefined behaviour sanitizer" OFF)
|
|
option(PERFMON "Monitor performance of game code" ON)
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
macro(set_default_target_options target)
|
|
set_property(TARGET ${target} PROPERTY C_STANDARD 11)
|
|
set_property(TARGET ${target} PROPERTY C_EXTENSIONS OFF)
|
|
target_compile_options(${target} PRIVATE -Wall -Wextra -pedantic)
|
|
if(${WERROR})
|
|
target_compile_options(${target} PRIVATE -Werror)
|
|
endif()
|
|
if(${UBSAN})
|
|
target_compile_options(${target} PRIVATE -fsanitize=undefined)
|
|
target_link_options(${target} PRIVATE -fsanitize=undefined)
|
|
endif()
|
|
endmacro()
|
|
|
|
add_custom_target(format
|
|
COMMAND sh ${CMAKE_SOURCE_DIR}/scripts/format.sh
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
)
|
|
add_custom_target(check-format
|
|
COMMAND sh ${CMAKE_SOURCE_DIR}/scripts/check-format.sh
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
)
|
|
add_custom_target(lint
|
|
COMMAND sh ${CMAKE_SOURCE_DIR}/scripts/lint.sh
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
)
|
|
|
|
find_package(LibXml2 REQUIRED)
|
|
find_package(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2 SDL2main)
|
|
find_package(SDL2_image REQUIRED)
|
|
|
|
add_subdirectory(engine)
|
|
add_subdirectory(game)
|