cleaner backend

This commit is contained in:
2025-10-11 14:26:42 +02:00
parent 899bfeef41
commit fa2715a60a
26 changed files with 747 additions and 405 deletions

View File

@@ -5,7 +5,25 @@ set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS NO)
add_library(cardboy_backend INTERFACE)
add_subdirectory(backend_interface)
set(CARDBOY_SDK_BACKEND_LIBRARY "" CACHE STRING "Backend implementation library for Cardboy SDK")
set(_cardboy_backend_default "${CARDBOY_SDK_BACKEND_LIBRARY}")
option(CARDBOY_BUILD_SFML "Build desktop SFML backend and launcher" ON)
if (CARDBOY_BUILD_SFML)
add_subdirectory(backends/desktop)
if (DEFINED CARDBOY_DESKTOP_BACKEND_TARGET AND NOT CARDBOY_DESKTOP_BACKEND_TARGET STREQUAL "")
set(_cardboy_backend_default "${CARDBOY_DESKTOP_BACKEND_TARGET}")
endif ()
endif ()
if (_cardboy_backend_default STREQUAL "")
message(FATAL_ERROR "CARDBOY_SDK_BACKEND_LIBRARY is not set. Provide a backend implementation library or enable one of the available backends.")
endif ()
set(CARDBOY_SDK_BACKEND_LIBRARY "${_cardboy_backend_default}" CACHE STRING "Backend implementation library for Cardboy SDK" FORCE)
add_library(cardboy_sdk STATIC
src/app_system.cpp
@@ -17,67 +35,15 @@ target_include_directories(cardboy_sdk
)
target_compile_features(cardboy_sdk PUBLIC cxx_std_20)
target_link_libraries(cardboy_sdk PUBLIC cardboy_backend)
add_library(cardboy_apps STATIC
apps/menu_app.cpp
apps/clock_app.cpp
apps/tetris_app.cpp
apps/gameboy_app.cpp
)
target_include_directories(cardboy_apps
target_link_libraries(cardboy_sdk
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
cardboy_backend_interface
${CARDBOY_SDK_BACKEND_LIBRARY}
)
target_link_libraries(cardboy_apps
PUBLIC
cardboy_sdk
cardboy_backend
)
target_compile_features(cardboy_apps PUBLIC cxx_std_20)
option(CARDBOY_BUILD_SFML "Build SFML harness" OFF)
add_subdirectory(apps)
if (CARDBOY_BUILD_SFML)
include(FetchContent)
set(SFML_BUILD_AUDIO OFF CACHE BOOL "Disable SFML audio module" FORCE)
set(SFML_BUILD_NETWORK OFF CACHE BOOL "Disable SFML network module" FORCE)
set(SFML_BUILD_EXAMPLES OFF CACHE BOOL "Disable SFML examples" FORCE)
set(SFML_BUILD_TESTS OFF CACHE BOOL "Disable SFML tests" FORCE)
set(SFML_USE_SYSTEM_DEPS OFF CACHE BOOL "Use bundled SFML dependencies" FORCE)
FetchContent_Declare(
SFML
GIT_REPOSITORY https://github.com/SFML/SFML.git
GIT_TAG 3.0.2
GIT_SHALLOW ON
)
FetchContent_MakeAvailable(SFML)
target_include_directories(cardboy_backend
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/hosts/include
)
target_link_libraries(cardboy_backend
INTERFACE
SFML::Window
SFML::Graphics
SFML::System
)
add_executable(cardboy_desktop
hosts/sfml_main.cpp
)
target_link_libraries(cardboy_desktop
PRIVATE
cardboy_apps
cardboy_sdk
)
target_compile_features(cardboy_desktop PRIVATE cxx_std_20)
add_subdirectory(launchers/desktop)
endif ()