diff options
| author | skal <pascal.massimino@gmail.com> | 2026-03-12 21:04:38 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-03-12 21:04:38 +0100 |
| commit | 67c6f166748a4012122a6e978f2f7dbdaee503cc (patch) | |
| tree | 7f62b3563bb3a3ad9b14df3665c31f79979df9e5 /cmake | |
| parent | 747250a4e4d2a1dd9109b30b3fcfad05d526b408 (diff) | |
fix(build): move generated assets to per-build binary dir
assets_data.cc was shared in src/generated/ across all builds. When a
native debug build regenerated it with --disk_load (file paths), then
build_win compiled with STRIP_ALL=ON, the disk-load fopen() path was
compiled out, leaving raw macOS paths as shader source content — causing
wgpu WGSL parse errors on Wine.
Fix: GEN_DEMO_H/CC and all stamps now live in CMAKE_CURRENT_BINARY_DIR/
src/generated/ so each build dir independently generates assets in the
correct mode (embedded vs disk-load). Added CMAKE_CURRENT_BINARY_DIR/src
to CORE_INCLUDES so the binary-dir assets.h is resolved first.
handoff(Gemini): build system fix — assets are now per-build-dir; tests
35/35 pass; build_win produces embedded shaders.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/DemoCodegen.cmake | 12 | ||||
| -rw-r--r-- | cmake/DemoDependencies.cmake | 2 |
2 files changed, 9 insertions, 5 deletions
diff --git a/cmake/DemoCodegen.cmake b/cmake/DemoCodegen.cmake index a353fc7..7fc7f98 100644 --- a/cmake/DemoCodegen.cmake +++ b/cmake/DemoCodegen.cmake @@ -198,13 +198,14 @@ parse_asset_list(${FILTERED_AUDIO} AUDIO_DEPS) parse_asset_list(${FILTERED_MODELS} MODELS_DEPS) parse_asset_list(${FILTERED_DATA} DATA_DEPS) -# Single unified output (avoids duplicate symbols) -set(GEN_DEMO_H ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/assets.h) -set(GEN_DEMO_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/assets_data.cc) +# Single unified output (per-build-dir to avoid disk_load vs embedded conflicts) +set(GEN_DEMO_H ${CMAKE_CURRENT_BINARY_DIR}/src/generated/assets.h) +set(GEN_DEMO_CC ${CMAKE_CURRENT_BINARY_DIR}/src/generated/assets_data.cc) # Category-specific targets for granular rebuilds add_custom_command( OUTPUT ${GEN_DEMO_H}.shaders_stamp + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/generated COMMAND ${CMAKE_COMMAND} -E touch ${GEN_DEMO_H}.shaders_stamp DEPENDS ${ASSET_PACKER_DEPENDS} ${WORKSPACE_ASSETS} ${SHADERS_DEPS} COMMENT "Checking shader assets..." @@ -213,6 +214,7 @@ add_custom_target(generate_demo_shaders DEPENDS ${GEN_DEMO_H}.shaders_stamp) add_custom_command( OUTPUT ${GEN_DEMO_H}.audio_stamp + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/generated COMMAND ${CMAKE_COMMAND} -E touch ${GEN_DEMO_H}.audio_stamp DEPENDS ${ASSET_PACKER_DEPENDS} ${WORKSPACE_ASSETS} ${AUDIO_DEPS} COMMENT "Checking audio assets..." @@ -221,6 +223,7 @@ add_custom_target(generate_demo_audio DEPENDS ${GEN_DEMO_H}.audio_stamp) add_custom_command( OUTPUT ${GEN_DEMO_H}.models_stamp + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/generated COMMAND ${CMAKE_COMMAND} -E touch ${GEN_DEMO_H}.models_stamp DEPENDS ${ASSET_PACKER_DEPENDS} ${WORKSPACE_ASSETS} ${MODELS_DEPS} COMMENT "Checking model assets..." @@ -229,6 +232,7 @@ add_custom_target(generate_demo_models DEPENDS ${GEN_DEMO_H}.models_stamp) add_custom_command( OUTPUT ${GEN_DEMO_H}.data_stamp + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/generated COMMAND ${CMAKE_COMMAND} -E touch ${GEN_DEMO_H}.data_stamp DEPENDS ${ASSET_PACKER_DEPENDS} ${WORKSPACE_ASSETS} ${DATA_DEPS} COMMENT "Checking data assets..." @@ -255,7 +259,7 @@ endif() set(GEN_DEMO_H_STAMP ${GEN_DEMO_H}.gen_stamp) add_custom_command( OUTPUT ${GEN_DEMO_H_STAMP} ${GEN_DEMO_CC} - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/generated + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/generated COMMAND ${ASSET_PACKER_CMD} ${WORKSPACE_ASSETS} ${GEN_DEMO_H}.new ${GEN_DEMO_CC} ${ASSET_PACKER_FLAGS} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GEN_DEMO_H}.new ${GEN_DEMO_H} COMMAND ${CMAKE_COMMAND} -E touch ${GEN_DEMO_H_STAMP} diff --git a/cmake/DemoDependencies.cmake b/cmake/DemoDependencies.cmake index daac571..55cc180 100644 --- a/cmake/DemoDependencies.cmake +++ b/cmake/DemoDependencies.cmake @@ -1,7 +1,7 @@ # External Dependencies and Includes # Finds and configures external libraries (WGPU, GLFW, platform libs) -set(CORE_INCLUDES src third_party) +set(CORE_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/src src third_party) if(DEMO_CROSS_COMPILE_WIN32) add_definitions(-DDEMO_CROSS_COMPILE_WIN32) |
