diff options
Diffstat (limited to 'scripts/build_win.sh')
| -rwxr-xr-x | scripts/build_win.sh | 29 |
1 files changed, 10 insertions, 19 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 |
