cmake_minimum_required(VERSION 3.16) project(spriteforge_runtime LANGUAGES C CXX) option(SPRITEFORGE_BUILD_TESTS "Build C99/C++17 runtime tests" ON) option(SPRITEFORGE_BUILD_RAYLIB_EXAMPLE "Build isolated raylib viewer" OFF) add_library(spriteforge_headers INTERFACE) target_include_directories(spriteforge_headers INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include") if(SPRITEFORGE_BUILD_TESTS) enable_testing() add_executable(sfa_c99_smoke tests/c99_smoke.c) target_link_libraries(sfa_c99_smoke PRIVATE spriteforge_headers) if(NOT MSVC) target_link_libraries(sfa_c99_smoke PRIVATE m) endif() set_property(TARGET sfa_c99_smoke PROPERTY C_STANDARD 99) add_executable(sfp_c99_smoke tests/sfp_c99_smoke.c) target_link_libraries(sfp_c99_smoke PRIVATE spriteforge_headers) set_property(TARGET sfp_c99_smoke PROPERTY C_STANDARD 99) add_executable(sfa_cpp17_smoke tests/cpp17_smoke.cpp) target_link_libraries(sfa_cpp17_smoke PRIVATE spriteforge_headers) set_property(TARGET sfa_cpp17_smoke PROPERTY CXX_STANDARD 17) endif() if(SPRITEFORGE_BUILD_RAYLIB_EXAMPLE) find_package(raylib 6 REQUIRED) add_executable(spriteforge_raylib_example examples/raylib_cpp17/main.cpp) target_link_libraries(spriteforge_raylib_example PRIVATE spriteforge_headers raylib) set_property(TARGET spriteforge_raylib_example PROPERTY CXX_STANDARD 17) endif()