diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-03 10:05:03 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-03 10:05:03 +0100 |
| commit | 805f993293bd61625fe69172e2abeb7088ee5a80 (patch) | |
| tree | 8462d357610cc841ac5915598ec345d5c8126288 /CMakeLists.txt | |
| parent | 04e1c8800f81d7f01e7f52546c75fc39779f72ae (diff) | |
chore: Finalize Build System Consolidation (Task #25)
Updated project roadmap and to-do list to reflect the completion of the modular build system refactor.
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 76 |
1 files changed, 42 insertions, 34 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index e7de30d..f3eff28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,6 +109,10 @@ target_include_directories(audio PUBLIC ${CORE_INCLUDES}) target_include_directories(3d PUBLIC ${CORE_INCLUDES}) target_include_directories(gpu PUBLIC ${CORE_INCLUDES}) +# Note: Static libraries do not strictly need to link dependencies, +# but if they did, PRIVATE would propagate to the executable. +# We will link them in the executable to be explicit and avoid order issues. + #-- - Tools Setup -- - if (DEFINED ASSET_PACKER_PATH) set(ASSET_PACKER_CMD ${ASSET_PACKER_PATH}) @@ -184,6 +188,17 @@ function(pack_test_assets NAME INPUT_TXT HEADER_VAR DATA_CC_VAR TARGET_NAME) add_custom_target(${TARGET_NAME} DEPENDS ${OUT_H} ${OUT_CC}) endfunction() +#-- - Build Macros -- - +macro(add_demo_executable NAME) + add_executable(${NAME} ${ARGN}) + # target_link_libraries must be called manually to ensure correct order +endmacro() + +macro(add_demo_test NAME TEST_NAME) + add_executable(${NAME} ${ARGN}) + add_test(NAME ${TEST_NAME} COMMAND ${NAME}) +endmacro() + #-- - Generation Targets -- - set(DEMO_SEQ_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/demo.seq) set(GENERATED_TIMELINE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/timeline.cc) @@ -211,10 +226,12 @@ add_custom_target(generate_tracker_music ALL DEPENDS ${GENERATED_MUSIC_DATA_CC}) pack_assets(assets ${CMAKE_CURRENT_SOURCE_DIR}/assets/final/demo_assets.txt GEN_DEMO_H GEN_DEMO_CC generate_demo_assets) pack_test_assets(test_assets ${CMAKE_CURRENT_SOURCE_DIR}/assets/final/test_assets_list.txt GEN_TEST_H GEN_TEST_CC generate_test_assets) -#-- - Main Demo -- - -add_executable(demo64k src/main.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC} ${GENERATED_TIMELINE_CC} ${GENERATED_MUSIC_DATA_CC}) +#-- - Main Demo -- - +add_demo_executable(demo64k src/main.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC} ${GENERATED_TIMELINE_CC} ${GENERATED_MUSIC_DATA_CC}) add_dependencies(demo64k generate_demo_assets generate_timeline generate_tracker_music) -target_link_libraries(demo64k PRIVATE gpu 3d audio procedural util ${DEMO_LIBS}) +# Link order: Internal libs first, then external libs (DEMO_LIBS). +# gpu and 3d depend on WGPU (in DEMO_LIBS). +target_link_libraries(demo64k PRIVATE 3d gpu audio procedural util ${DEMO_LIBS}) #Size optimizations if (DEMO_SIZE_OPT) @@ -233,63 +250,54 @@ endif() #-- - Tests -- - enable_testing() if(DEMO_BUILD_TESTS) - add_executable(test_window src/tests/test_window.cc) - target_link_libraries(test_window PRIVATE audio) - add_test(NAME HammingWindowTest COMMAND test_window) + add_demo_test(test_window HammingWindowTest src/tests/test_window.cc) + target_link_libraries(test_window PRIVATE audio ${DEMO_LIBS}) - add_executable(test_maths src/tests/test_maths.cc) - add_test(NAME MathUtilsTest COMMAND test_maths) + add_demo_test(test_maths MathUtilsTest src/tests/test_maths.cc) - add_executable(test_synth src/tests/test_synth.cc) - target_link_libraries(test_synth PRIVATE audio) - add_test(NAME SynthEngineTest COMMAND test_synth) + add_demo_test(test_synth SynthEngineTest src/tests/test_synth.cc) + target_link_libraries(test_synth PRIVATE audio ${DEMO_LIBS}) - add_executable(test_tracker src/tests/test_tracker.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) + add_demo_test(test_tracker TrackerSystemTest src/tests/test_tracker.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) target_link_libraries(test_tracker PRIVATE audio util procedural ${DEMO_LIBS}) add_dependencies(test_tracker generate_tracker_music) - add_test(NAME TrackerSystemTest COMMAND test_tracker) - add_executable(test_spectool src/tests/test_spectool.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) + add_demo_executable(test_spectool src/tests/test_spectool.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) target_compile_definitions(test_spectool PRIVATE DEMO_BUILD_TOOLS) target_link_libraries(test_spectool PRIVATE audio util procedural ${DEMO_LIBS}) add_dependencies(test_spectool generate_tracker_music generate_demo_assets) - add_executable(test_assets src/tests/test_assets.cc ${GEN_TEST_CC}) - target_link_libraries(test_assets PRIVATE util procedural) + add_demo_test(test_assets AssetManagerTest src/tests/test_assets.cc ${GEN_TEST_CC}) target_include_directories(test_assets PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src/generated_test) target_compile_definitions(test_assets PRIVATE USE_TEST_ASSETS) + target_link_libraries(test_assets PRIVATE util procedural ${DEMO_LIBS}) add_dependencies(test_assets generate_test_assets) set_source_files_properties(src/tests/test_assets.cc PROPERTIES COMPILE_DEFINITIONS "USE_TEST_ASSETS") - add_test(NAME AssetManagerTest COMMAND test_assets) - add_executable(test_sequence src/tests/test_sequence.cc ${GEN_DEMO_CC} ${GENERATED_TIMELINE_CC} ${PLATFORM_SOURCES}) - target_link_libraries(test_sequence PRIVATE gpu 3d util procedural ${DEMO_LIBS}) + add_demo_test(test_sequence SequenceSystemTest src/tests/test_sequence.cc ${GEN_DEMO_CC} ${GENERATED_TIMELINE_CC} ${PLATFORM_SOURCES}) + target_link_libraries(test_sequence PRIVATE 3d gpu util procedural ${DEMO_LIBS}) add_dependencies(test_sequence generate_timeline generate_demo_assets) - add_test(NAME SequenceSystemTest COMMAND test_sequence) - add_executable(test_procedural src/tests/test_procedural.cc) - target_link_libraries(test_procedural PRIVATE procedural) - add_test(NAME ProceduralGenTest COMMAND test_procedural) + add_demo_test(test_procedural ProceduralGenTest src/tests/test_procedural.cc) + target_link_libraries(test_procedural PRIVATE procedural ${DEMO_LIBS}) - add_executable(test_3d src/tests/test_3d.cc) - add_test(NAME ThreeDSystemTest COMMAND test_3d) + add_demo_test(test_3d ThreeDSystemTest src/tests/test_3d.cc) - add_executable(test_shader_composer src/tests/test_shader_composer.cc) - target_link_libraries(test_shader_composer PRIVATE gpu) - add_test(NAME ShaderComposerTest COMMAND test_shader_composer) + add_demo_test(test_shader_composer ShaderComposerTest src/tests/test_shader_composer.cc) + target_link_libraries(test_shader_composer PRIVATE gpu ${DEMO_LIBS}) - add_executable(test_texture_manager src/tests/test_texture_manager.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) - target_link_libraries(test_texture_manager PRIVATE gpu 3d audio procedural util ${DEMO_LIBS}) + add_demo_executable(test_texture_manager src/tests/test_texture_manager.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) + target_link_libraries(test_texture_manager PRIVATE 3d gpu audio procedural util ${DEMO_LIBS}) add_dependencies(test_texture_manager generate_timeline generate_demo_assets generate_tracker_music) - add_executable(test_3d_render src/tests/test_3d_render.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) - target_link_libraries(test_3d_render PRIVATE gpu 3d audio procedural util ${DEMO_LIBS}) + add_demo_executable(test_3d_render src/tests/test_3d_render.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) + target_link_libraries(test_3d_render PRIVATE 3d gpu audio procedural util ${DEMO_LIBS}) add_dependencies(test_3d_render generate_timeline generate_demo_assets generate_tracker_music) endif() #-- - Extra Tools -- - if(DEMO_BUILD_TOOLS OR DEMO_BUILD_TESTS) - add_executable(spectool tools/spectool.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) + add_demo_executable(spectool tools/spectool.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) target_compile_definitions(spectool PRIVATE DEMO_BUILD_TOOLS) target_link_libraries(spectool PRIVATE audio util procedural ${DEMO_LIBS}) add_dependencies(spectool generate_tracker_music generate_demo_assets) @@ -308,4 +316,4 @@ add_custom_target(final add_custom_target(pack_source COMMAND tar -czf demo_all.tgz --exclude=.git --exclude=build* --exclude=.gemini* --exclude=*.tgz --exclude=*.zip --exclude=.DS_Store . WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -) +)
\ No newline at end of file |
