summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt47
1 files changed, 40 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7825e6a..706f1c0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -121,6 +121,20 @@ else()
set(TRACKER_COMPILER_DEPENDS tracker_compiler)
endif()
+# Always build a host-native tracker_compiler for code generation purposes
+add_executable(tracker_compiler_host tools/tracker_compiler.cc)
+set_target_properties(tracker_compiler_host PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tools_host")
+
+# Determine which tracker compiler to use for code generation
+if (DEMO_CROSS_COMPILE_WIN32)
+ set(TRACKER_COMPILER_FINAL_CMD "${CMAKE_SOURCE_DIR}/build_native/tools_host/tracker_compiler_host")
+ set(TRACKER_COMPILER_FINAL_DEPENDS tracker_compiler_host)
+else()
+ set(TRACKER_COMPILER_FINAL_CMD ${TRACKER_COMPILER_CMD})
+ set(TRACKER_COMPILER_FINAL_DEPENDS ${TRACKER_COMPILER_DEPENDS})
+endif()
+
#-- - 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)
@@ -166,14 +180,25 @@ add_custom_command(
)
add_custom_target(generate_timeline ALL DEPENDS ${GENERATED_TIMELINE_CC})
+set(TRACKER_MUSIC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/music.track)
+set(GENERATED_MUSIC_DATA_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/music_data.cc)
+add_custom_command(
+ OUTPUT ${GENERATED_MUSIC_DATA_CC}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/generated
+ COMMAND ${TRACKER_COMPILER_FINAL_CMD} ${TRACKER_MUSIC_PATH} ${GENERATED_MUSIC_DATA_CC}
+ DEPENDS ${TRACKER_COMPILER_FINAL_DEPENDS} ${TRACKER_MUSIC_PATH} tracker_compiler_host
+ COMMENT "Compiling tracker music..."
+)
+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})
-add_dependencies(demo64k generate_demo_assets generate_timeline)
+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})
+add_dependencies(demo64k generate_demo_assets generate_timeline generate_tracker_music)
target_link_libraries(demo64k PRIVATE ${DEMO_LIBS})
#Size optimizations
@@ -202,9 +227,15 @@ if(DEMO_BUILD_TESTS)
add_executable(test_synth src/tests/test_synth.cc src/audio/synth.cc src/audio/idct.cc src/audio/window.cc)
add_test(NAME SynthEngineTest COMMAND test_synth)
- add_executable(test_spectool src/tests/test_spectool.cc ${AUDIO_SOURCES} ${PLATFORM_SOURCES})
+ add_executable(test_tracker src/tests/test_tracker.cc src/audio/synth.cc src/audio/gen.cc src/audio/tracker.cc src/audio/window.cc src/audio/fdct.cc src/audio/idct.cc ${GENERATED_MUSIC_DATA_CC})
+ target_link_libraries(test_tracker PRIVATE ${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} ${GENERATED_MUSIC_DATA_CC})
target_compile_definitions(test_spectool PRIVATE DEMO_BUILD_TOOLS)
target_link_libraries(test_spectool PRIVATE ${DEMO_LIBS})
+ add_dependencies(test_spectool generate_tracker_music)
add_test(NAME SpectoolEndToEndTest COMMAND test_spectool)
add_executable(test_assets src/tests/test_assets.cc ${UTIL_SOURCES} ${PROCEDURAL_SOURCES} ${GEN_TEST_CC})
@@ -228,19 +259,21 @@ if(DEMO_BUILD_TESTS)
add_executable(test_shader_composer src/tests/test_shader_composer.cc src/gpu/effects/shader_composer.cc)
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})
+ 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_test(NAME TextureManagerTest COMMAND test_texture_manager)
+ 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})
+ 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_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} ${AUDIO_SOURCES})
+ add_executable(spectool tools/spectool.cc ${PLATFORM_SOURCES} ${AUDIO_SOURCES} ${GENERATED_MUSIC_DATA_CC})
target_compile_definitions(spectool PRIVATE DEMO_BUILD_TOOLS)
target_link_libraries(spectool PRIVATE ${DEMO_LIBS})
+ add_dependencies(spectool generate_tracker_music)
add_executable(specview tools/specview.cc)
endif()