diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 92 |
1 files changed, 56 insertions, 36 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 16f6451..e7de30d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ project(demo64k LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -#-- - Configuration Options -- - +#-- - Configuration Options -- - option(DEMO_SIZE_OPT "Enable size optimization flags" OFF) option(DEMO_STRIP_ALL "Strip all unnecessary code for final build" OFF) option(DEMO_BUILD_TESTS "Build tests" OFF) @@ -23,7 +23,7 @@ if (DEMO_STRIP_ALL) set(DEMO_SIZE_OPT ON) endif() -#-- - Platform Detection and Core Setup -- - +#-- - Platform Detection and Core Setup -- - if(APPLE) add_definitions(-DGLFW_EXPOSE_NATIVE_COCOA) elseif(WIN32) @@ -36,7 +36,7 @@ elseif(UNIX) endif() endif() -#-- - Dependencies & Includes -- - +#-- - Dependencies & Includes -- - set(CORE_INCLUDES src third_party) if (DEMO_CROSS_COMPILE_WIN32) @@ -68,7 +68,7 @@ elseif (NOT DEMO_CROSS_COMPILE_WIN32) list(APPEND DEMO_LIBS pthread m dl) endif() -#-- - Source Groups -- - +#-- - Source Groups -- - set(AUDIO_SOURCES src/audio/audio.cc src/audio/gen.cc src/audio/fdct.cc src/audio/idct.cc src/audio/window.cc src/audio/synth.cc src/audio/tracker.cc) set(PROCEDURAL_SOURCES src/procedural/generator.cc) set(GPU_SOURCES @@ -88,17 +88,34 @@ set(GPU_SOURCES src/gpu/effects/hybrid_3d_effect.cc src/gpu/effects/shader_composer.cc src/gpu/texture_manager.cc +) +set(3D_SOURCES src/3d/renderer.cc src/3d/visual_debug.cc ) set(PLATFORM_SOURCES src/platform.cc third_party/glfw3webgpu/glfw3webgpu.c) +set(UTIL_SOURCES src/util/asset_manager.cc) + +#-- - Subsystem Libraries -- - +add_library(util STATIC ${UTIL_SOURCES}) +add_library(procedural STATIC ${PROCEDURAL_SOURCES}) +add_library(audio STATIC ${AUDIO_SOURCES}) +add_library(3d STATIC ${3D_SOURCES}) +add_library(gpu STATIC ${GPU_SOURCES}) + +target_include_directories(util PUBLIC ${CORE_INCLUDES}) +target_include_directories(procedural PUBLIC ${CORE_INCLUDES}) +target_include_directories(audio PUBLIC ${CORE_INCLUDES}) +target_include_directories(3d PUBLIC ${CORE_INCLUDES}) +target_include_directories(gpu PUBLIC ${CORE_INCLUDES}) -#-- - Tools Setup -- - +#-- - Tools Setup -- - if (DEFINED ASSET_PACKER_PATH) set(ASSET_PACKER_CMD ${ASSET_PACKER_PATH}) set(ASSET_PACKER_DEPENDS ${ASSET_PACKER_PATH}) else() - add_executable(asset_packer tools/asset_packer.cc ${PROCEDURAL_SOURCES}) + add_executable(asset_packer tools/asset_packer.cc) + target_link_libraries(asset_packer PRIVATE procedural) set(ASSET_PACKER_CMD $<TARGET_FILE:asset_packer>) set(ASSET_PACKER_DEPENDS asset_packer) endif() @@ -135,7 +152,7 @@ else() set(TRACKER_COMPILER_FINAL_DEPENDS ${TRACKER_COMPILER_DEPENDS}) endif() -#-- - Code Generation Helpers -- - +#-- - Code Generation Helpers -- - function(pack_assets NAME INPUT_TXT HEADER_VAR DATA_CC_VAR TARGET_NAME) set(OUT_H ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/${NAME}.h) set(OUT_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/${NAME}_data.cc) @@ -167,7 +184,7 @@ 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() -#-- - Generation Targets -- - +#-- - 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) add_custom_command( @@ -176,7 +193,7 @@ add_custom_command( COMMAND ${SEQ_COMPILER_CMD} ${DEMO_SEQ_PATH} ${GENERATED_TIMELINE_CC} DEPENDS ${SEQ_COMPILER_DEPENDS} ${DEMO_SEQ_PATH} src/gpu/demo_effects.h - COMMENT \"Compiling demo sequence...\" + COMMENT "Compiling demo sequence..." ) add_custom_target(generate_timeline ALL DEPENDS ${GENERATED_TIMELINE_CC}) @@ -194,12 +211,10 @@ 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) -set(UTIL_SOURCES src/util/asset_manager.cc) - -#-- - Main Demo -- - -add_executable(demo64k src/main.cc ${PLATFORM_SOURCES} ${GPU_SOURCES} ${AUDIO_SOURCES} ${PROCEDURAL_SOURCES} ${UTIL_SOURCES} ${GEN_DEMO_CC} ${GENERATED_TIMELINE_CC} ${GENERATED_MUSIC_DATA_CC}) +#-- - Main Demo -- - +add_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 ${DEMO_LIBS}) +target_link_libraries(demo64k PRIVATE gpu 3d audio procedural util ${DEMO_LIBS}) #Size optimizations if (DEMO_SIZE_OPT) @@ -209,75 +224,80 @@ if (DEMO_SIZE_OPT) elseif (APPLE) target_compile_options(demo64k PRIVATE -Os) target_link_options(demo64k PRIVATE -Wl,-dead_strip) - else() + else () target_compile_options(demo64k PRIVATE -Os -ffunction-sections -fdata-sections) target_link_options(demo64k PRIVATE -Wl,--gc-sections -s) endif() endif() -#-- - Tests -- - +#-- - Tests -- - enable_testing() if(DEMO_BUILD_TESTS) - add_executable(test_window src/tests/test_window.cc src/audio/window.cc) + add_executable(test_window src/tests/test_window.cc) + target_link_libraries(test_window PRIVATE audio) add_test(NAME HammingWindowTest COMMAND test_window) add_executable(test_maths src/tests/test_maths.cc) add_test(NAME MathUtilsTest COMMAND test_maths) - add_executable(test_synth src/tests/test_synth.cc src/audio/synth.cc src/audio/idct.cc src/audio/window.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_executable(test_tracker src/tests/test_tracker.cc ${AUDIO_SOURCES} ${UTIL_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC} ${PROCEDURAL_SOURCES}) - target_link_libraries(test_tracker PRIVATE ${DEMO_LIBS}) + add_executable(test_tracker 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 ${AUDIO_SOURCES} ${PLATFORM_SOURCES} ${UTIL_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC} ${PROCEDURAL_SOURCES}) + add_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 ${DEMO_LIBS}) + 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 ${UTIL_SOURCES} ${PROCEDURAL_SOURCES} ${GEN_TEST_CC}) + add_executable(test_assets src/tests/test_assets.cc ${GEN_TEST_CC}) + target_link_libraries(test_assets PRIVATE util procedural) target_include_directories(test_assets PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src/generated_test) target_compile_definitions(test_assets PRIVATE USE_TEST_ASSETS) 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 ${GPU_SOURCES} ${UTIL_SOURCES} ${GEN_DEMO_CC} ${PROCEDURAL_SOURCES} ${GENERATED_TIMELINE_CC} ${PLATFORM_SOURCES}) - target_link_libraries(test_sequence PRIVATE ${DEMO_LIBS}) + 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_dependencies(test_sequence generate_timeline generate_demo_assets) add_test(NAME SequenceSystemTest COMMAND test_sequence) - add_executable(test_procedural src/tests/test_procedural.cc ${PROCEDURAL_SOURCES}) + add_executable(test_procedural src/tests/test_procedural.cc) + target_link_libraries(test_procedural PRIVATE procedural) add_test(NAME ProceduralGenTest COMMAND test_procedural) add_executable(test_3d src/tests/test_3d.cc) add_test(NAME ThreeDSystemTest COMMAND test_3d) - add_executable(test_shader_composer src/tests/test_shader_composer.cc src/gpu/effects/shader_composer.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_executable(test_texture_manager src/tests/test_texture_manager.cc ${GPU_SOURCES} ${PLATFORM_SOURCES} ${PROCEDURAL_SOURCES} ${AUDIO_SOURCES} ${GENERATED_TIMELINE_CC} ${UTIL_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) - target_link_libraries(test_texture_manager PRIVATE ${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_dependencies(test_texture_manager generate_timeline generate_demo_assets generate_tracker_music) - add_executable(test_3d_render src/tests/test_3d_render.cc src/3d/renderer.cc ${GPU_SOURCES} ${PLATFORM_SOURCES} ${PROCEDURAL_SOURCES} ${AUDIO_SOURCES} ${GENERATED_TIMELINE_CC} ${UTIL_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) - target_link_libraries(test_3d_render PRIVATE ${DEMO_LIBS}) + 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_dependencies(test_3d_render generate_timeline generate_demo_assets generate_tracker_music) endif() -#-- - Extra Tools -- - +#-- - Extra Tools -- - if(DEMO_BUILD_TOOLS OR DEMO_BUILD_TESTS) - add_executable(spectool tools/spectool.cc ${PLATFORM_SOURCES} ${AUDIO_SOURCES} ${UTIL_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC} ${PROCEDURAL_SOURCES}) + add_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 ${DEMO_LIBS}) + target_link_libraries(spectool PRIVATE audio util procedural ${DEMO_LIBS}) add_dependencies(spectool generate_tracker_music generate_demo_assets) add_executable(specview tools/specview.cc) endif() -#-- - Global Target Configuration -- - +#-- - Global Target Configuration -- - add_custom_target(final COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/gen_assets.sh COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/crunch_demo.sh @@ -288,4 +308,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 +) |
