# Main Executables # Defines demo64k and test_demo binary targets # ============================================================================= # demo64k - Main Demo Executable # ============================================================================= if(DEMO_STRIP_EXTERNAL_LIBS) # Size measurement mode: Stub main, no timeline/music add_demo_executable(demo64k src/stub_main.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC}) add_dependencies(demo64k generate_demo_assets) else() # Normal mode: Full main with timeline and music 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) endif() # Link libraries (use shared macro) demo_link_libraries_ordered(demo64k) # Size optimizations (use shared macro) demo_apply_size_optimizations(demo64k) # ============================================================================== # Final Build Target (make final) # ============================================================================== # Convenience target for final production build with all stripping enabled # Usage: make final # This reconfigures CMake with FINAL_STRIP and rebuilds demo64k # Note: Only create this target if we're NOT already in FINAL_STRIP mode if(NOT DEMO_FINAL_STRIP) add_custom_target(final COMMAND ${CMAKE_COMMAND} -E echo "Building FINAL production binary..." COMMAND ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -DDEMO_FINAL_STRIP=ON -DDEMO_SIZE_OPT=ON COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target demo64k -j8 COMMAND ${CMAKE_COMMAND} -E echo "" COMMAND ${CMAKE_COMMAND} -E echo "Final build complete!" COMMAND ${CMAKE_COMMAND} -E echo "Binary: ${CMAKE_BINARY_DIR}/demo64k" COMMAND ls -lh ${CMAKE_BINARY_DIR}/demo64k WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Building final production binary with FINAL_STRIP" ) 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}) # Mark test_demo generated files as GENERATED set_source_files_properties(${GENERATED_TEST_DEMO_TIMELINE_CC} PROPERTIES GENERATED TRUE) set_source_files_properties(${GENERATED_TEST_DEMO_MUSIC_CC} PROPERTIES GENERATED TRUE) # Build executable (uses main demo assets) if(NOT DEMO_STRIP_EXTERNAL_LIBS) 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) # Link libraries (use shared macro) demo_link_libraries_ordered(test_demo) # Size optimizations (use shared macro) demo_apply_size_optimizations(test_demo) endif()