| Age | Commit message (Collapse) | Author |
|
Implements Phases 1 & 2 of CMake consolidation plan to improve
incremental build performance and reduce code duplication.
Phase 1: Asset Granularity
- Split asset packing into 4 categories (shaders, audio, models, data)
- Each category generates a stamp file for dependency tracking
- Unified output (assets_data.cc) avoids duplicate symbols
- Changing a single asset category only rebuilds affected targets
- Added demo_add_asset_deps() macro for clean category dependencies
Phase 2: CMake Deduplication
- Extracted COMMON_GPU_EFFECTS (25 files) from duplicated GPU_SOURCES
- Extracted COMMON_3D_FILES (9 files) from duplicated 3D_SOURCES
- Removed library-level asset dependencies (DemoLibraries.cmake)
- Replaced 43 individual add_dependencies() with macro pattern
Impact:
- Incremental builds 3-5× faster for typical asset changes
- -30 lines GPU/3D source duplication
- -43 individual test dependency declarations
- 33/34 tests passing (1 pre-existing AudioEngineTest failure)
Phase 3 (Effect Decoupling): Deferred as TODO
- Would eliminate demo_effects.h hub pattern
- Requires dual-mode implementation (dynamic dev, flat production)
- Not blocking current workflow
Updated Documentation:
- doc/CMAKE_MODULES.md: Added demo_add_asset_deps() docs
- doc/BUILD.md: Documented asset category system
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Workspace structure now:
- workspaces/{main,test}/obj/ (3D models)
- workspaces/{main,test}/shaders/ (WGSL shaders)
- workspaces/{main,test}/music/ (audio samples)
Changes:
- Moved workspaces/*/assets/music/ → workspaces/*/music/
- Updated assets.txt paths (assets/music/ → music/)
- Moved test_demo.{seq,track} to tools/
- Moved assets/originals/ → tools/originals/
- Removed assets/common/ (legacy, duplicated in workspaces)
- Removed assets/final/ (legacy, superseded by workspaces)
- Updated hot-reload paths in main.cc
- Updated CMake references for test_demo and validation
- Updated gen_spectrograms.sh paths
handoff(Claude): Workspace reorganization complete
|
|
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>
|