summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/build_win.sh29
-rwxr-xr-xscripts/fetch_win_deps.sh14
-rwxr-xr-xscripts/run_win.sh3
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 "$@"