summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt60
1 files changed, 60 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2bf4d4a..4fc00b0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -307,6 +307,66 @@ if (DEMO_SIZE_OPT)
endif()
endif()
+# ==============================================================================
+# Test Demo (Audio/Visual Sync Tool)
+# ==============================================================================
+
+# Timeline generation
+set(TEST_DEMO_SEQ_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/test_demo.seq)
+set(GENERATED_TEST_DEMO_TIMELINE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/test_demo_timeline.cc)
+add_custom_command(
+ OUTPUT ${GENERATED_TEST_DEMO_TIMELINE_CC}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/generated
+ COMMAND ${SEQ_COMPILER_CMD} ${TEST_DEMO_SEQ_PATH} ${GENERATED_TEST_DEMO_TIMELINE_CC}
+ DEPENDS ${SEQ_COMPILER_DEPENDS} ${TEST_DEMO_SEQ_PATH} src/gpu/demo_effects.h
+ COMMENT "Compiling test_demo sequence..."
+)
+add_custom_target(generate_test_demo_timeline ALL DEPENDS ${GENERATED_TEST_DEMO_TIMELINE_CC})
+
+# Music generation
+set(TEST_DEMO_TRACK_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/test_demo.track)
+set(GENERATED_TEST_DEMO_MUSIC_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/test_demo_music.cc)
+add_custom_command(
+ OUTPUT ${GENERATED_TEST_DEMO_MUSIC_CC}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/generated
+ COMMAND ${TRACKER_COMPILER_FINAL_CMD} ${TEST_DEMO_TRACK_PATH} ${GENERATED_TEST_DEMO_MUSIC_CC}
+ DEPENDS ${TRACKER_COMPILER_FINAL_DEPENDS} ${TEST_DEMO_TRACK_PATH} tracker_compiler_host
+ COMMENT "Compiling test_demo music..."
+)
+add_custom_target(generate_test_demo_music ALL DEPENDS ${GENERATED_TEST_DEMO_MUSIC_CC})
+
+# Build executable (uses main demo assets)
+add_demo_executable(
+ test_demo
+ src/test_demo.cc
+ ${PLATFORM_SOURCES}
+ ${GEN_DEMO_CC}
+ ${GENERATED_TEST_DEMO_TIMELINE_CC}
+ ${GENERATED_TEST_DEMO_MUSIC_CC}
+)
+
+add_dependencies(test_demo generate_demo_assets generate_test_demo_timeline generate_test_demo_music)
+
+if (APPLE)
+ target_link_libraries(test_demo PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
+else()
+ target_link_libraries(test_demo PRIVATE -Wl,--start-group 3d gpu audio procedural util -Wl,--end-group ${DEMO_LIBS})
+endif()
+
+# Size optimizations
+if (DEMO_SIZE_OPT)
+ if (MSVC)
+ target_compile_options(test_demo PRIVATE /Os /GS-)
+ target_link_options(test_demo PRIVATE /OPT:REF /OPT:ICF /INCREMENTAL:NO)
+ elseif (APPLE)
+ target_compile_options(test_demo PRIVATE -Os)
+ target_link_options(test_demo PRIVATE -Wl,-dead_strip)
+ else ()
+ target_compile_options(test_demo PRIVATE -Os -ffunction-sections -fdata-sections)
+ target_link_options(test_demo PRIVATE -Wl,--gc-sections -s)
+ endif()
+endif()
+
#-- - Tests -- -
enable_testing()
if(DEMO_BUILD_TESTS)