summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-01-28 10:12:54 +0100
committerskal <pascal.massimino@gmail.com>2026-01-28 10:12:54 +0100
commit1d72e3b99ba8cd7bb243a3ae79c0546e0d385d95 (patch)
tree2790990b52d29713276f828ed98394c7a70347d5
parenta52b8909496b71e4d60a85a11de8b7364521081e (diff)
feat(assets): Separate demo and test asset lists
Renamed demo assets to 'demo_assets.txt' and created 'test_assets_list.txt' for AssetManagerTest to prevent interference. - Updated CMakeLists.txt to generate separate headers for demo and test. - Updated test_assets.cc to conditionally include the test-specific header. - Incorporated gen_assets.sh into the 'final' target.
-rw-r--r--CMakeLists.txt54
-rw-r--r--assets/final/demo_assets.txt5
-rw-r--r--assets/final/test_assets_list.txt2
-rw-r--r--src/tests/test_assets.cc5
4 files changed, 49 insertions, 17 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e95c4dc..9217864 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -59,28 +59,45 @@ endif()
option(DEMO_BUILD_TOOLS "Build tools" OFF)
-# Asset Packing Tool (needed during build if any assets exist)
+# Asset Packing Tool
if(DEMO_BUILD_TOOLS OR NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/src/assets_data.cc)
add_executable(asset_packer
tools/asset_packer.cc
)
endif()
-# Configure asset generation
-set(ASSETS_TXT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/final/assets.txt)
-set(GENERATED_ASSETS_H ${CMAKE_CURRENT_BINARY_DIR}/src/assets.h)
-set(GENERATED_ASSETS_DATA_CC ${CMAKE_CURRENT_BINARY_DIR}/src/assets_data.cc)
+# 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)
add_custom_command(
- OUTPUT ${GENERATED_ASSETS_H} ${GENERATED_ASSETS_DATA_CC}
+ OUTPUT ${GENERATED_DEMO_ASSETS_H} ${GENERATED_DEMO_ASSETS_DATA_CC}
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src
- COMMAND asset_packer ${ASSETS_TXT_PATH} ${GENERATED_ASSETS_H} ${GENERATED_ASSETS_DATA_CC}
- DEPENDS asset_packer ${ASSETS_TXT_PATH}
- COMMENT "Generating assets.h and assets_data.cc"
+ COMMAND asset_packer ${DEMO_ASSETS_TXT_PATH} ${GENERATED_DEMO_ASSETS_H} ${GENERATED_DEMO_ASSETS_DATA_CC}
+ DEPENDS asset_packer ${DEMO_ASSETS_TXT_PATH}
+ COMMENT "Generating demo assets.h and assets_data.cc"
)
-add_custom_target(generate_assets ALL
- DEPENDS ${GENERATED_ASSETS_H} ${GENERATED_ASSETS_DATA_CC}
+add_custom_target(generate_demo_assets ALL
+ DEPENDS ${GENERATED_DEMO_ASSETS_H} ${GENERATED_DEMO_ASSETS_DATA_CC}
+)
+
+# 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)
+
+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 asset_packer ${TEST_ASSETS_TXT_PATH} ${GENERATED_TEST_ASSETS_H} ${GENERATED_TEST_ASSETS_DATA_CC}
+ DEPENDS asset_packer ${TEST_ASSETS_TXT_PATH}
+ COMMENT "Generating test assets.h and assets_data.cc"
+)
+
+add_custom_target(generate_test_assets
+ DEPENDS ${GENERATED_TEST_ASSETS_H} ${GENERATED_TEST_ASSETS_DATA_CC}
)
# Main Demo Target
@@ -95,10 +112,10 @@ add_executable(demo64k
src/audio/synth.cc
src/util/asset_manager.cc
third_party/glfw3webgpu/glfw3webgpu.c
- ${GENERATED_ASSETS_DATA_CC}
+ ${GENERATED_DEMO_ASSETS_DATA_CC}
)
-add_dependencies(demo64k generate_assets)
+add_dependencies(demo64k generate_demo_assets)
target_link_libraries(demo64k PRIVATE ${DEMO_LIBS})
target_include_directories(demo64k PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src)
@@ -157,10 +174,12 @@ if(DEMO_BUILD_TESTS)
add_executable(test_assets
src/tests/test_assets.cc
src/util/asset_manager.cc
- ${GENERATED_ASSETS_DATA_CC}
+ ${GENERATED_TEST_ASSETS_DATA_CC}
)
target_include_directories(test_assets PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src src)
- add_dependencies(test_assets generate_assets)
+ add_dependencies(test_assets generate_test_assets)
+ # Ensure test_assets also has access to the generated header via its unique name
+ set_source_files_properties(src/tests/test_assets.cc PROPERTIES COMPILE_DEFINITIONS "USE_TEST_ASSETS")
add_test(NAME AssetManagerTest COMMAND test_assets)
endif()
@@ -192,8 +211,9 @@ endif()
# Final assembly target (strip and pack)
add_custom_target(final
+ COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/gen_assets.sh
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/crunch_demo.sh
DEPENDS demo64k
- COMMENT "Performing final assembly (crunching)..."
+ COMMENT "Generating assets and performing final assembly (crunching)..."
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-)
+) \ No newline at end of file
diff --git a/assets/final/demo_assets.txt b/assets/final/demo_assets.txt
new file mode 100644
index 0000000..7db70cf
--- /dev/null
+++ b/assets/final/demo_assets.txt
@@ -0,0 +1,5 @@
+NULL_ASSET, null.bin, NONE, "Empty asset"
+TEST_ASSET, test_asset.txt, NONE, "Test asset for verification"
+KICK_1, kick1.spec, NONE, "Drum kick"
+SNARE_1, snare1.spec, NONE, "Drum snare"
+HIHAT_1, hihat1.spec, NONE, "Drum hihat" \ No newline at end of file
diff --git a/assets/final/test_assets_list.txt b/assets/final/test_assets_list.txt
new file mode 100644
index 0000000..c22fad8
--- /dev/null
+++ b/assets/final/test_assets_list.txt
@@ -0,0 +1,2 @@
+NULL_ASSET, null.bin, NONE, "Empty asset"
+TEST_ASSET, test_asset.txt, NONE, "Test asset for verification"
diff --git a/src/tests/test_assets.cc b/src/tests/test_assets.cc
index 606c7a7..5e0725e 100644
--- a/src/tests/test_assets.cc
+++ b/src/tests/test_assets.cc
@@ -2,7 +2,12 @@
// It tests the asset manager's ability to retrieve packed data.
// Verifies data integrity and size reporting.
+#ifdef USE_TEST_ASSETS
+#include "test_assets.h"
+#else
#include "assets.h"
+#endif
+
#include <assert.h>
#include <stdio.h>
#include <string.h>