From 3e9e69a6cd9212b5cfd956c0a36b9dc07ab88cf7 Mon Sep 17 00:00:00 2001 From: skal Date: Wed, 28 Jan 2026 08:51:49 +0100 Subject: feat(assets): Implement basic asset packing system Introduces a new asset management system to embed binary assets directly into the demo executable. - Creates the directory for asset definition and an descriptor file. - Implements to generate (with enum and declaration) and (with placeholder data). - Integrates into CMake build, making depend on the generated asset files. - Adds minimal integration in and documentation in . This addresses Task 9 (compact in-line and off-line asset system). --- CMakeLists.txt | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 69e51c6..1d06033 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -138,6 +138,7 @@ if(DEMO_BUILD_TESTS) endif() option(DEMO_BUILD_TOOLS "Build tools" OFF) + if(DEMO_BUILD_TOOLS) add_executable(spectool tools/spectool.cc @@ -161,4 +162,46 @@ if(DEMO_BUILD_TOOLS) tools/specview.cc ) target_include_directories(specview PRIVATE src) -endif() \ No newline at end of file + + 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) + +add_custom_command( + OUTPUT ${GENERATED_ASSETS_H} ${GENERATED_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 tools/asset_packer.cc ${ASSETS_TXT_PATH} + COMMENT "Generating assets.h and assets_data.cc" +) + +add_custom_target(generate_assets ALL + DEPENDS ${GENERATED_ASSETS_H} ${GENERATED_ASSETS_DATA_CC} +) + +add_executable(demo64k + src/main.cc + src/platform.cc + src/gpu/gpu.cc + src/audio/audio.cc + src/audio/fdct.cc + src/audio/idct.cc + src/audio/window.cc + src/audio/synth.cc + third_party/glfw3webgpu/glfw3webgpu.c + ${GENERATED_ASSETS_DATA_CC} +) + +# Ensure demo64k depends on the generated assets +add_dependencies(demo64k generate_assets) + +target_link_libraries(demo64k PRIVATE ${DEMO_LIBS}) + +# Include generated assets header for compilation +target_include_directories(demo64k PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src) \ No newline at end of file -- cgit v1.2.3