diff options
| author | skal <pascal.massimino@gmail.com> | 2026-03-12 17:14:57 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-03-12 17:14:57 +0100 |
| commit | efad11008616d30f685752fc70aa05be524c1a78 (patch) | |
| tree | 3a2dad4e054749af900c03800b3868d7a26a7678 /scripts | |
| parent | ce032eb25a480c086edcd7bbfa4a742e5e44a6a7 (diff) | |
fix(win): update wgpu-native to v27, unify Windows/macOS API paths
- fetch_win_deps.sh: update wgpu-native v0.19.4.1 → v27.0.4.0 (same as macOS)
- platform.h: remove v0.19 compat shims, Windows now uses WGPUStringView API
- gpu.cc/gpu.h: remove DEMO_CROSS_COMPILE_WIN32 old-API branches
- texture_readback.cc, visual_debug.cc, hybrid3d_effect.cc: same cleanup
- rotating_cube_effect.cc: remove #ifdef guard for depthSlice
- glfw3webgpu.c: remove old WGPUSurfaceDescriptorFromWindowsHWND branch
- asset_manager.cc: fix DEMO_STRIP_ALL→STRIP_ALL guard (vs_main was missing
in STRIP_ALL Windows builds because disk-loading path ran on embedded data)
- tracker.cc: skip MP3 assets gracefully in STRIP_ALL builds instead of fatal
handoff(Gemini): Windows .exe now runs under Wine. demo64k.exe renders frames
and progresses through audio timeline. Pre-existing test failures unchanged.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/build_win.sh | 29 | ||||
| -rwxr-xr-x | scripts/fetch_win_deps.sh | 14 | ||||
| -rwxr-xr-x | scripts/run_win.sh | 3 |
3 files changed, 18 insertions, 28 deletions
diff --git a/scripts/build_win.sh b/scripts/build_win.sh index da75748..4b7f576 100755 --- a/scripts/build_win.sh +++ b/scripts/build_win.sh @@ -15,32 +15,23 @@ cmake -S . -B build_win \ -DDEMO_CROSS_COMPILE_WIN32=ON \ -DDEMO_STRIP_ALL=ON \ -DASSET_PACKER_PATH=$ASSET_PACKER_PATH \ - -DTRACKER_COMPILER_PATH=$TRACKER_COMPILER_PATH + -DTRACKER_COMPILER_PATH=$TRACKER_COMPILER_PATH \ + "-DCMAKE_EXE_LINKER_FLAGS=-static-libgcc -static-libstdc++ -Wl,-Bstatic -lwinpthread -Wl,-Bdynamic" cmake --build build_win -j8 # 3. Copy runtime DLLs to build_win so we can run it cp third_party/windows/lib/wgpu_native.dll build_win/ -# Copy MinGW DLLs (pthread, etc.) -echo "Copying MinGW DLLs..." -if [[ "$(uname)" == "Darwin" ]]; then - MINGW_SEARCH_ROOTS="/opt/homebrew" -else - # Linux / WSL: mingw-w64 installed via apt - MINGW_SEARCH_ROOTS="/usr/x86_64-w64-mingw32 /usr/lib/gcc/x86_64-w64-mingw32" +# Copy libwinpthread-1.dll (wgpu_native.dll depends on it even when exe statically links it) +WINPTHREAD_DLL=$(x86_64-w64-mingw32-gcc --print-file-name=libwinpthread-1.dll 2>/dev/null) +if [ ! -f "$WINPTHREAD_DLL" ]; then + WINPTHREAD_DLL=$(find /opt/homebrew /usr /usr/local -path "*x86_64*" -name "libwinpthread-1.dll" 2>/dev/null | head -1) fi -COPIED=0 -for dll in libwinpthread-1.dll libgcc_s_seh-1.dll libstdc++-6.dll; do - src=$(find $MINGW_SEARCH_ROOTS -name "$dll" 2>/dev/null | head -n 1) - if [ -n "$src" ]; then - cp "$src" build_win/ - echo " Copied: $dll" - COPIED=$((COPIED+1)) - fi -done -if [ "$COPIED" -eq 0 ]; then - echo "Warning: Could not find MinGW DLLs. You might need them to run the exe." +if [ -f "$WINPTHREAD_DLL" ]; then + cp "$WINPTHREAD_DLL" build_win/ +else + echo "Warning: libwinpthread-1.dll not found — Wine may fail to run" fi # 4. Crunch the binary diff --git a/scripts/fetch_win_deps.sh b/scripts/fetch_win_deps.sh index a32f047..c66fc34 100755 --- a/scripts/fetch_win_deps.sh +++ b/scripts/fetch_win_deps.sh @@ -13,17 +13,17 @@ cp glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a third_party/windows/lib/ cp glfw-3.4.bin.WIN64/include/GLFW/* third_party/windows/include/GLFW/ rm -rf glfw.zip glfw-3.4.bin.WIN64 -echo "Fetching wgpu-native v0.19.4.1..." -curl -L -o wgpu.zip https://github.com/gfx-rs/wgpu-native/releases/download/v0.19.4.1/wgpu-windows-x86_64-release.zip +echo "Fetching wgpu-native v27.0.4.0..." +curl -L -o wgpu.zip https://github.com/gfx-rs/wgpu-native/releases/download/v27.0.4.0/wgpu-windows-x86_64-msvc-release.zip unzip -q wgpu.zip -d wgpu_temp -# Copy import library (renaming for MinGW convention, though it can usually read .lib) -cp wgpu_temp/wgpu_native.dll.lib third_party/windows/lib/libwgpu_native.dll.a +# Copy import library (renaming for MinGW convention) +cp wgpu_temp/lib/wgpu_native.dll.lib third_party/windows/lib/libwgpu_native.dll.a # Copy runtime DLL (will be needed next to executable) -cp wgpu_temp/wgpu_native.dll third_party/windows/lib/wgpu_native.dll +cp wgpu_temp/lib/wgpu_native.dll third_party/windows/lib/wgpu_native.dll # Copy headers mkdir -p third_party/windows/include/webgpu -cp wgpu_temp/webgpu.h third_party/windows/include/webgpu/ -cp wgpu_temp/wgpu.h third_party/windows/include/webgpu/ +cp wgpu_temp/include/webgpu/webgpu.h third_party/windows/include/webgpu/ +cp wgpu_temp/include/webgpu/wgpu.h third_party/windows/include/webgpu/ rm -rf wgpu.zip wgpu_temp echo "Windows dependencies fetched." diff --git a/scripts/run_win.sh b/scripts/run_win.sh index 853a985..fabb3fe 100755 --- a/scripts/run_win.sh +++ b/scripts/run_win.sh @@ -5,5 +5,4 @@ if [ ! -f build_win/demo64k.exe ]; then fi echo "Running with Wine..." -# Wine might output a lot of debug info, but for now we let it flow. -wine build_win/demo64k.exe "$@" +WINEPATH="$(pwd)/build_win" wine build_win/demo64k.exe "$@" |
