blob: 86b63dadd9865d0c7a987e10f548b3276e3cd68c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# 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()
|