diff options
| author | skal <pascal.massimino@gmail.com> | 2026-01-28 08:51:49 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-01-28 08:51:49 +0100 |
| commit | 3e9e69a6cd9212b5cfd956c0a36b9dc07ab88cf7 (patch) | |
| tree | 5e57c9478f90982417b5dfb208df8e395c027953 /CMakeLists.txt | |
| parent | a606788f3699b98b26e0af27622f67f00d92d1e3 (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.txt | 45 |
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 |
