| 1 | @ECHO OFF |
| 2 | @REM This script will build the compiler on any Windows system |
| 3 | @REM It automatically installs a Zig compiler to \/.zig-cache |
| 4 | @REM The output will be in .\zig-out\bin |
| 5 | |
| 6 | SET ROOT=%~dp0 |
| 7 | FOR /F "tokens=3 delims=, " %%i IN ( |
| 8 | 'FINDSTR /R "\.minimum_zig_version *= *""".+""",\n" ^ |
| 9 | "%ROOT%build.zig.zon"' |
| 10 | ) DO SET ZIG_VERSION=%%i |
| 11 | SET ZIG_VERSION=%ZIG_VERSION:~1,-1% |
| 12 | IF NOT EXIST "%ROOT%.zig-cache\zig\%ZIG_VERSION%\zig.exe" GOTO :find_powershell |
| 13 | :build |
| 14 | "%ROOT%.zig-cache\zig\%ZIG_VERSION%\zig.exe" build %* |
| 15 | EXIT /b %ERRORLEVEL% |
| 16 | :find_powershell |
| 17 | FOR %%i IN (pwsh powershell) DO WHERE %%i /Q && SET PS=%%i && GOTO :download |
| 18 | ECHO Powershell not found. Please install it and try again. |
| 19 | EXIT /b 1 |
| 20 | :download |
| 21 | SET ZIG_ARCH=x86_64 |
| 22 | SET URI=https://ziglang.org/builds/zig-windows-%ZIG_ARCH%-%ZIG_VERSION%.zip |
| 23 | SET X=$null = New-Item -ItemType Directory -Force -Path .zig-cache\zig |
| 24 | SET X=%X%;Invoke-RestMethod -Uri %URI% -OutFile .zig-cache/zig-%ZIG_VERSION%.zip |
| 25 | SET X=%X%;Expand-Archive .zig-cache/zig-%ZIG_VERSION%.zip -DestinationPath .zig-cache/zig |
| 26 | SET X=%X%;Remove-Item .zig-cache/zig-%ZIG_VERSION%.zip |
| 27 | %PS% -NoProfile -Command "%X%" |
| 28 | MOVE .zig-cache\zig\zig-windows-%ZIG_ARCH%-%ZIG_VERSION% .zig-cache\zig\%ZIG_VERSION% >NUL |
| 29 | GOTO :build |