From cccb09e478c419fb9f0da97b6e99bcf2c98bd751 Mon Sep 17 00:00:00 2001 From: skal Date: Sat, 31 Jan 2026 21:05:17 +0100 Subject: refactor: move generated asset files to src/generated/ - Updated CMakeLists.txt to generate assets.h and assets_data.cc in src/generated/. - Updated scripts/gen_assets.sh to reflect the new output location. - Modified asset_packer.cc to generate correct include paths in assets_data.cc. - Updated source files (main.cc, asset_manager.cc, test_assets.cc) to include headers from the 'generated/' subdirectory. - Ensured all targets have correct include paths to find generated headers. - Removed stale generated files from src/. --- CMakeLists.txt | 21 +++++++++++---------- scripts/gen_assets.sh | 11 +++++++++-- src/main.cc | 2 +- src/tests/test_assets.cc | 4 ++-- src/util/asset_manager.cc | 2 +- tools/asset_packer.cc | 2 +- 6 files changed, 25 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 42c2ec0..ffa29ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,11 +134,11 @@ endif() # Configure Timeline Generation set(DEMO_SEQ_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/demo.seq) -set(GENERATED_TIMELINE_CC ${CMAKE_CURRENT_BINARY_DIR}/src/timeline.cc) +set(GENERATED_TIMELINE_CC ${CMAKE_CURRENT_BINARY_DIR}/src/generated/timeline.cc) add_custom_command( OUTPUT ${GENERATED_TIMELINE_CC} - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/generated COMMAND ${SEQ_COMPILER_CMD} ${DEMO_SEQ_PATH} ${GENERATED_TIMELINE_CC} DEPENDS ${SEQ_COMPILER_DEPENDS} ${DEMO_SEQ_PATH} COMMENT "Compiling demo sequence..." @@ -150,12 +150,12 @@ add_custom_target(generate_timeline ALL # Configure DEMO asset generation set(DEMO_ASSETS_TXT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/final/demo_assets.txt) -set(GENERATED_DEMO_ASSETS_H ${CMAKE_CURRENT_BINARY_DIR}/src/assets.h) -set(GENERATED_DEMO_ASSETS_DATA_CC ${CMAKE_CURRENT_BINARY_DIR}/src/assets_data.cc) +set(GENERATED_DEMO_ASSETS_H ${CMAKE_CURRENT_BINARY_DIR}/src/generated/assets.h) +set(GENERATED_DEMO_ASSETS_DATA_CC ${CMAKE_CURRENT_BINARY_DIR}/src/generated/assets_data.cc) add_custom_command( OUTPUT ${GENERATED_DEMO_ASSETS_H} ${GENERATED_DEMO_ASSETS_DATA_CC} - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/generated COMMAND ${ASSET_PACKER_CMD} ${DEMO_ASSETS_TXT_PATH} ${GENERATED_DEMO_ASSETS_H} ${GENERATED_DEMO_ASSETS_DATA_CC} DEPENDS ${ASSET_PACKER_DEPENDS} ${DEMO_ASSETS_TXT_PATH} COMMENT "Generating demo assets.h and assets_data.cc" @@ -167,12 +167,12 @@ add_custom_target(generate_demo_assets ALL # Configure TEST asset generation set(TEST_ASSETS_TXT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/final/test_assets_list.txt) -set(GENERATED_TEST_ASSETS_H ${CMAKE_CURRENT_BINARY_DIR}/src/test_assets.h) -set(GENERATED_TEST_ASSETS_DATA_CC ${CMAKE_CURRENT_BINARY_DIR}/src/test_assets_data.cc) +set(GENERATED_TEST_ASSETS_H ${CMAKE_CURRENT_BINARY_DIR}/src/generated/test_assets.h) +set(GENERATED_TEST_ASSETS_DATA_CC ${CMAKE_CURRENT_BINARY_DIR}/src/generated/test_assets_data.cc) add_custom_command( OUTPUT ${GENERATED_TEST_ASSETS_H} ${GENERATED_TEST_ASSETS_DATA_CC} - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/generated COMMAND ${ASSET_PACKER_CMD} ${TEST_ASSETS_TXT_PATH} ${GENERATED_TEST_ASSETS_H} ${GENERATED_TEST_ASSETS_DATA_CC} DEPENDS ${ASSET_PACKER_DEPENDS} ${TEST_ASSETS_TXT_PATH} COMMENT "Generating test assets.h and assets_data.cc" @@ -203,7 +203,7 @@ add_executable(demo64k add_dependencies(demo64k generate_demo_assets generate_timeline) target_link_libraries(demo64k PRIVATE ${DEMO_LIBS}) -target_include_directories(demo64k PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src) +target_include_directories(demo64k PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src src) if (DEMO_SIZE_OPT) if (MSVC) @@ -285,7 +285,7 @@ if(DEMO_BUILD_TESTS) src/platform.cc third_party/glfw3webgpu/glfw3webgpu.c # Link glfw3webgpu source ) - target_include_directories(test_sequence PRIVATE src ${WGPU_ROOT_INCLUDE_DIR} ${WGPU_ROOT_INCLUDE_DIR}/webgpu-headers) + target_include_directories(test_sequence PRIVATE src ${WGPU_ROOT_INCLUDE_DIR} ${WGPU_ROOT_INCLUDE_DIR}/webgpu-headers ${CMAKE_CURRENT_BINARY_DIR}/src) target_link_libraries(test_sequence PRIVATE ${DEMO_LIBS} ${WGPU_LIBRARY} glfw) add_dependencies(test_sequence generate_timeline) add_test(NAME SequenceSystemTest COMMAND test_sequence) @@ -310,6 +310,7 @@ if(DEMO_BUILD_TOOLS OR DEMO_BUILD_TESTS) third_party ${WGPU_INCLUDE_DIR} third_party/glfw3webgpu + ${CMAKE_CURRENT_BINARY_DIR}/src ) target_compile_definitions(spectool PRIVATE DEMO_BUILD_TOOLS) target_link_libraries(spectool PRIVATE ${DEMO_LIBS}) diff --git a/scripts/gen_assets.sh b/scripts/gen_assets.sh index d0658a3..1e799f2 100755 --- a/scripts/gen_assets.sh +++ b/scripts/gen_assets.sh @@ -11,8 +11,15 @@ cmake --build build ./build/spectool analyze ./assets/wav/hh/hammock\ hh.wav ./assets/final/hihat1.spec # Pack assets into source tree (as requested by Task 9) + +mkdir -p src/generated + # For demo assets: -./build/asset_packer ./assets/final/demo_assets.txt ./src/assets.h ./src/assets_data.cc + +./build/asset_packer ./assets/final/demo_assets.txt ./src/generated/assets.h ./src/generated/assets_data.cc + + # For test assets: -./build/asset_packer ./assets/final/test_assets_list.txt ./src/test_assets.h ./src/test_assets_data.cc \ No newline at end of file + +./build/asset_packer ./assets/final/test_assets_list.txt ./src/generated/test_assets.h ./src/generated/test_assets_data.cc diff --git a/src/main.cc b/src/main.cc index aa24152..c0f6770 100644 --- a/src/main.cc +++ b/src/main.cc @@ -2,7 +2,7 @@ // It serves as the application entry point. // Orchestrates platform initialization, main loop, and subsystem coordination. -#include "assets.h" // Include generated asset header +#include "generated/assets.h" // Include generated asset header #include "audio/audio.h" #include "audio/gen.h" #include "audio/synth.h" diff --git a/src/tests/test_assets.cc b/src/tests/test_assets.cc index e782453..ff1cae2 100644 --- a/src/tests/test_assets.cc +++ b/src/tests/test_assets.cc @@ -3,9 +3,9 @@ // Verifies data integrity and size reporting. #ifdef USE_TEST_ASSETS -#include "test_assets.h" +#include "generated/test_assets.h" #else -#include "assets.h" +#include "generated/assets.h" #endif #include diff --git a/src/util/asset_manager.cc b/src/util/asset_manager.cc index 1aa2ef6..33b697b 100644 --- a/src/util/asset_manager.cc +++ b/src/util/asset_manager.cc @@ -3,7 +3,7 @@ // Uses an array lookup for O(1) access to embedded data. #include "util/asset_manager.h" -#include "assets.h" +#include "generated/assets.h" // These are defined in the generated assets_data.cc extern const AssetRecord g_assets[]; diff --git a/tools/asset_packer.cc b/tools/asset_packer.cc index 24bdd26..6e939cf 100644 --- a/tools/asset_packer.cc +++ b/tools/asset_packer.cc @@ -52,7 +52,7 @@ int main(int argc, char *argv[]) { assets_data_cc_file << "// This file is auto-generated by asset_packer.cc. Do not edit.\n\n"; assets_data_cc_file << "#include \"util/asset_manager.h\"\n"; - assets_data_cc_file << "#include \"assets.h\"\n\n"; + assets_data_cc_file << "#include \"generated/assets.h\"\n\n"; std::string line; int asset_id_counter = 0; -- cgit v1.2.3