summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-03-12 21:04:38 +0100
committerskal <pascal.massimino@gmail.com>2026-03-12 21:04:38 +0100
commit67c6f166748a4012122a6e978f2f7dbdaee503cc (patch)
tree7f62b3563bb3a3ad9b14df3665c31f79979df9e5 /cmake
parent747250a4e4d2a1dd9109b30b3fcfad05d526b408 (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.cmake12
-rw-r--r--cmake/DemoDependencies.cmake2
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)