summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-01-28 08:51:49 +0100
committerskal <pascal.massimino@gmail.com>2026-01-28 08:51:49 +0100
commit3e9e69a6cd9212b5cfd956c0a36b9dc07ab88cf7 (patch)
tree5e57c9478f90982417b5dfb208df8e395c027953 /CMakeLists.txt
parenta606788f3699b98b26e0af27622f67f00d92d1e3 (diff)
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).
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt45
1 files changed, 44 insertions, 1 deletions
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