diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-15 18:05:22 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-15 18:05:22 +0100 |
| commit | d7ec4c61bd11c731d21e269c87bc446b13cbe5e7 (patch) | |
| tree | 5acf43c7ca2a2faca28cf4b1da632bbfc7e2110f /cmake/DemoSourceLists.cmake | |
| parent | c8dd8b43df063108b4d6754621612edf4aa4e3cf (diff) | |
refactor(build): granular asset tracking and CMake deduplication
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>
Diffstat (limited to 'cmake/DemoSourceLists.cmake')
| -rw-r--r-- | cmake/DemoSourceLists.cmake | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/cmake/DemoSourceLists.cmake b/cmake/DemoSourceLists.cmake index d4cdd21..dac7a09 100644 --- a/cmake/DemoSourceLists.cmake +++ b/cmake/DemoSourceLists.cmake @@ -26,24 +26,67 @@ set(PROCEDURAL_SOURCES src/procedural/generator.cc) # Utility sources (unconditional) set(UTIL_SOURCES src/util/asset_manager.cc src/util/file_watcher.cc) +# Common effect sources (shared between headless and normal modes) +set(COMMON_GPU_EFFECTS + src/gpu/effect.cc + src/effects/heptagon_effect.cc + src/effects/particles_effect.cc + src/effects/passthrough_effect.cc + src/effects/moving_ellipse_effect.cc + src/effects/particle_spray_effect.cc + src/effects/gaussian_blur_effect.cc + src/effects/solarize_effect.cc + src/effects/scene1_effect.cc + src/effects/chroma_aberration_effect.cc + src/effects/vignette_effect.cc + src/effects/cnn_effect.cc + src/effects/cnn_v2_effect.cc + src/gpu/post_process_helper.cc + src/gpu/shaders.cc + src/effects/hybrid_3d_effect.cc + src/effects/flash_cube_effect.cc + src/effects/theme_modulation_effect.cc + src/effects/fade_effect.cc + src/effects/flash_effect.cc + src/gpu/shader_composer.cc + src/effects/circle_mask_effect.cc + src/effects/rotating_cube_effect.cc + src/gpu/texture_manager.cc + src/gpu/texture_readback.cc + src/effects/sdf_test_effect.cc +) + # GPU sources (conditional: HEADLESS / STRIP_EXTERNAL / NORMAL) demo_set_conditional_sources(GPU_SOURCES # Headless mode: Functional stubs (timeline/audio work) - "src/gpu/headless_gpu.cc;src/gpu/demo_effects.cc;src/gpu/effect.cc;src/effects/heptagon_effect.cc;src/effects/particles_effect.cc;src/effects/passthrough_effect.cc;src/effects/moving_ellipse_effect.cc;src/effects/particle_spray_effect.cc;src/effects/gaussian_blur_effect.cc;src/effects/solarize_effect.cc;src/effects/scene1_effect.cc;src/effects/chroma_aberration_effect.cc;src/effects/vignette_effect.cc;src/effects/cnn_effect.cc;src/effects/cnn_v2_effect.cc;src/gpu/post_process_helper.cc;src/gpu/shaders.cc;src/effects/hybrid_3d_effect.cc;src/effects/flash_cube_effect.cc;src/effects/theme_modulation_effect.cc;src/effects/fade_effect.cc;src/effects/flash_effect.cc;src/gpu/shader_composer.cc;src/effects/circle_mask_effect.cc;src/effects/rotating_cube_effect.cc;src/gpu/texture_manager.cc;src/gpu/texture_readback.cc;src/effects/sdf_test_effect.cc" + "src/gpu/headless_gpu.cc;src/gpu/demo_effects.cc;${COMMON_GPU_EFFECTS}" # Strip mode: Minimal GPU stubs only "src/gpu/stub_gpu.cc" # Normal mode: Full GPU implementation - "src/gpu/gpu.cc;src/gpu/effect.cc;src/effects/heptagon_effect.cc;src/effects/particles_effect.cc;src/effects/passthrough_effect.cc;src/effects/moving_ellipse_effect.cc;src/effects/particle_spray_effect.cc;src/effects/gaussian_blur_effect.cc;src/effects/solarize_effect.cc;src/effects/scene1_effect.cc;src/effects/chroma_aberration_effect.cc;src/effects/vignette_effect.cc;src/effects/cnn_effect.cc;src/effects/cnn_v2_effect.cc;src/gpu/post_process_helper.cc;src/gpu/shaders.cc;src/effects/hybrid_3d_effect.cc;src/effects/flash_cube_effect.cc;src/effects/theme_modulation_effect.cc;src/effects/fade_effect.cc;src/effects/flash_effect.cc;src/gpu/shader_composer.cc;src/effects/circle_mask_effect.cc;src/effects/rotating_cube_effect.cc;src/gpu/texture_manager.cc;src/gpu/texture_readback.cc;src/effects/sdf_test_effect.cc" + "src/gpu/gpu.cc;${COMMON_GPU_EFFECTS}" +) + +# Common 3D sources (shared between headless and normal modes) +set(COMMON_3D_FILES + src/3d/renderer.cc + src/3d/renderer_draw.cc + src/3d/renderer_pipelines.cc + src/3d/renderer_resources.cc + src/3d/renderer_helpers.cc + src/3d/visual_debug.cc + src/3d/bvh.cc + src/3d/physics.cc + src/3d/scene_loader.cc ) # 3D sources (conditional: HEADLESS / STRIP_EXTERNAL / NORMAL) demo_set_conditional_sources(3D_SOURCES # Headless mode: Full 3D (needed for Hybrid3DEffect) - "src/3d/renderer.cc;src/3d/renderer_draw.cc;src/3d/renderer_pipelines.cc;src/3d/renderer_resources.cc;src/3d/renderer_helpers.cc;src/3d/visual_debug.cc;src/3d/bvh.cc;src/3d/physics.cc;src/3d/scene_loader.cc" + "${COMMON_3D_FILES}" # Strip mode: Stub 3D (depends on WebGPU) "src/3d/bvh.cc;src/3d/physics.cc;src/3d/scene_loader.cc" # Normal mode: Full 3D implementation - "src/3d/renderer.cc;src/3d/renderer_draw.cc;src/3d/renderer_pipelines.cc;src/3d/renderer_resources.cc;src/3d/renderer_helpers.cc;src/3d/visual_debug.cc;src/3d/bvh.cc;src/3d/physics.cc;src/3d/scene_loader.cc" + "${COMMON_3D_FILES}" ) # Platform sources (conditional: HEADLESS / STRIP_EXTERNAL / NORMAL) |
