From 67c6f166748a4012122a6e978f2f7dbdaee503cc Mon Sep 17 00:00:00 2001 From: skal Date: Thu, 12 Mar 2026 21:04:38 +0100 Subject: fix(build): move generated assets to per-build binary dir MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- cmake/DemoCodegen.cmake | 12 ++++++++---- 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) -- cgit v1.2.3