diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-11 08:19:05 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-11 08:19:05 +0100 |
| commit | fdf9345d5de1c951603e5da3ee8454e9efe2dc28 (patch) | |
| tree | ee0dcf35de7d2800b20faf861cd70cb168d773f8 /cmake/DemoOptions.cmake | |
| parent | 6d64674f7e3d00a9d18ec61eaf968ed37c8e849b (diff) | |
refactor: Modularize CMake build system into 10 specialized modules
Refactor monolithic 866-line CMakeLists.txt into 54-line orchestrator + 10 modules:
- DemoOptions.cmake - Build option declarations
- DemoConfig.cmake - Option implications and platform detection
- DemoCommon.cmake - Shared macros (conditional sources, size opts, linking)
- DemoDependencies.cmake - External library discovery (WGPU, GLFW)
- DemoSourceLists.cmake - Conditional source file lists
- DemoLibraries.cmake - Subsystem library targets
- DemoTools.cmake - Build tools (asset_packer, compilers)
- DemoCodegen.cmake - Code generation (assets, timeline, music)
- DemoExecutables.cmake - Main binaries (demo64k, test_demo)
- DemoTests.cmake - Test infrastructure (36 tests)
- Validation.cmake - Uniform buffer validation
Benefits:
- 94% reduction in main file size (866 → 54 lines)
- Conditional module inclusion (tests only parsed if DEMO_BUILD_TESTS=ON)
- Shared macros eliminate 200+ lines of repetition
- Clear separation of concerns
All 36 tests passing. All build modes verified.
Documentation: Created doc/CMAKE_MODULES.md with module architecture.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'cmake/DemoOptions.cmake')
| -rw-r--r-- | cmake/DemoOptions.cmake | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/cmake/DemoOptions.cmake b/cmake/DemoOptions.cmake new file mode 100644 index 0000000..9215119 --- /dev/null +++ b/cmake/DemoOptions.cmake @@ -0,0 +1,19 @@ +# Build Option Declarations +# All build configuration options for demo64k + +# Size optimization flags +option(DEMO_SIZE_OPT "Enable size optimization flags" OFF) +option(DEMO_STRIP_ALL "Strip all unnecessary code for final build" OFF) +option(DEMO_FINAL_STRIP "Strip ALL error checking for final-final build" OFF) +option(DEMO_STRIP_EXTERNAL_LIBS "Stub external libs for size measurement (binary won't run)" OFF) + +# Feature toggles +option(DEMO_BUILD_TESTS "Build tests" OFF) +option(DEMO_BUILD_TOOLS "Build tools" OFF) +option(DEMO_ENABLE_COVERAGE "Enable code coverage generation (macOS only)" OFF) +option(DEMO_ENABLE_DEBUG_LOGS "Enable all debug logging (for pre-commit checks)" OFF) +option(DEMO_HEADLESS "Build headless mode (functional stubs for testing)" OFF) +option(DEMO_ALL_OPTIONS "Activate all options at once" OFF) + +# Workspace selection +set(DEMO_WORKSPACE "main" CACHE STRING "Active workspace (main, test, etc.)") |
