retro-rpg/CMakeLists.txt
Camden Dixie O'Brien 61c0e17fd8 Remove ASAN from sanitizers config
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.
2025-01-02 17:16:01 +00:00

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)