cmake_minimum_required(VERSION 3.16) project(demo64k LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Configuration Options include(cmake/DemoOptions.cmake) # Option implications and platform detection include(cmake/DemoConfig.cmake) # Workspace selection include(cmake/ParseWorkspace.cmake) set(WORKSPACE_DIR "${CMAKE_SOURCE_DIR}/workspaces/${DEMO_WORKSPACE}") if(NOT EXISTS "${WORKSPACE_DIR}/workspace.cfg") message(FATAL_ERROR "Workspace not found: ${DEMO_WORKSPACE} (${WORKSPACE_DIR})") endif() parse_workspace_config("${WORKSPACE_DIR}") message(STATUS "Using workspace: ${DEMO_WORKSPACE}") # Common macros and utilities include(cmake/DemoCommon.cmake) # External dependencies (WGPU, GLFW, platform libs) include(cmake/DemoDependencies.cmake) # Conditional source file lists include(cmake/DemoSourceLists.cmake) # Subsystem library targets include(cmake/DemoLibraries.cmake) # Build tools (conditional: only if needed) if(DEMO_BUILD_TOOLS OR DEMO_BUILD_TESTS OR NOT DEMO_STRIP_EXTERNAL_LIBS) include(cmake/DemoTools.cmake) endif() # Code generation (assets, timeline, music) include(cmake/DemoCodegen.cmake) # Main executables (demo64k, test_demo) include(cmake/DemoExecutables.cmake) # Tests (conditional: only if DEMO_BUILD_TESTS) enable_testing() if(DEMO_BUILD_TESTS) include(cmake/DemoTests.cmake) endif() # Uniform buffer validation include(cmake/Validation.cmake)