diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a8d54eb1b47a19d7e6517e200cdacf8ef31b75aa..3b47c60dfddcd600d80269781912afd9860893ef 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -2,9 +2,9 @@ name: ci on: pull_request: push: - branches: + branches: - master -concurrency: +concurrency: # Cancels pending runs when a PR gets updated. group: ${{ github.head_ref || github.run_id }}-${{ github.actor }} cancel-in-progress: true @@ -55,15 +55,24 @@ jobs: uses: actions/checkout@v3 - name: Build and Test run: ci/aarch64-macos.sh - x86_64-windows: + x86_64-windows-debug: runs-on: windows-latest - env: + env: ARCH: "x86_64" steps: - name: Checkout uses: actions/checkout@v3 - name: Build and Test - run: ci/x86_64-windows.ps1 + run: ci/x86_64-windows-debug.ps1 + x86_64-windows-release: + runs-on: windows-latest + env: + ARCH: "x86_64" + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build and Test + run: ci/x86_64-windows-release.ps1 aarch64-windows: runs-on: [self-hosted, Windows, aarch64] env: diff --git a/ci/x86_64-windows-debug.ps1 b/ci/x86_64-windows-debug.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..b7cde7d4f92e9f074975aae38f27e8324de07e7d --- /dev/null +++ b/ci/x86_64-windows-debug.ps1 @@ -0,0 +1,103 @@ +$TARGET = "$($Env:ARCH)-windows-gnu" +$ZIG_LLVM_CLANG_LLD_NAME = "zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e" +$MCPU = "baseline" +$ZIG_LLVM_CLANG_LLD_URL = "https://ziglang.org/deps/$ZIG_LLVM_CLANG_LLD_NAME.zip" +$PREFIX_PATH = "$(Get-Location)\$ZIG_LLVM_CLANG_LLD_NAME" +$ZIG = "$PREFIX_PATH\bin\zig.exe" +$ZIG_LIB_DIR = "$(Get-Location)\lib" + +Write-Output "Downloading $ZIG_LLVM_CLANG_LLD_URL" +Invoke-WebRequest -Uri "$ZIG_LLVM_CLANG_LLD_URL" -OutFile "$ZIG_LLVM_CLANG_LLD_NAME.zip" + +Write-Output "Extracting..." +Add-Type -AssemblyName System.IO.Compression.FileSystem ; +[System.IO.Compression.ZipFile]::ExtractToDirectory("$PWD/$ZIG_LLVM_CLANG_LLD_NAME.zip", "$PWD") + +function CheckLastExitCode { + if (!$?) { + exit 1 + } + return 0 +} + +# Make the `zig version` number consistent. +# This will affect the `zig build` command below which uses `git describe`. +git config core.abbrev 9 +git fetch --tags + +if ((git rev-parse --is-shallow-repository) -eq "true") { + git fetch --unshallow # `git describe` won't work on a shallow repo +} + +Write-Output "Building from source..." +Remove-Item -Path 'build-debug' -Recurse -Force -ErrorAction Ignore +New-Item -Path 'build-debug' -ItemType Directory +Set-Location -Path 'build-debug' + +# CMake gives a syntax error when file paths with backward slashes are used. +# Here, we use forward slashes only to work around this. +& cmake .. ` + -GNinja ` + -DCMAKE_INSTALL_PREFIX="stage3-debug" ` + -DCMAKE_PREFIX_PATH="$($PREFIX_PATH -Replace "\\", "/")" ` + -DCMAKE_BUILD_TYPE=Debug ` + -DCMAKE_C_COMPILER="$($ZIG -Replace "\\", "/");cc;-target;$TARGET;-mcpu=$MCPU" ` + -DCMAKE_CXX_COMPILER="$($ZIG -Replace "\\", "/");c++;-target;$TARGET;-mcpu=$MCPU" ` + -DZIG_TARGET_TRIPLE="$TARGET" ` + -DZIG_TARGET_MCPU="$MCPU" ` + -DZIG_STATIC=ON +CheckLastExitCode + +ninja install +CheckLastExitCode + +Write-Output "Main test suite..." +& "stage3-debug\bin\zig.exe" build test docs ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + --search-prefix "$PREFIX_PATH" ` + -Dstatic-llvm ` + -Dskip-non-native ` + -Denable-symlinks-windows +CheckLastExitCode + +Write-Output "Testing Autodocs..." +& "stage3-debug\bin\zig.exe" test "..\lib\std\std.zig" ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + -femit-docs ` + -fno-emit-bin +CheckLastExitCode + +Write-Output "Build behavior tests using the C backend..." +& "stage3-debug\bin\zig.exe" test ` + ..\test\behavior.zig ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + -I..\test ` + -I..\lib ` + -ofmt=c ` + -femit-bin="test_behavior.c" +CheckLastExitCode + +& "stage3-debug\bin\zig.exe" build-obj ` + ..\lib\compiler_rt.zig ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + -ofmt=c ` + -OReleaseSmall ` + --name compiler_rt ` + -femit-bin="compiler_rt.c" ` + --pkg-begin build_options config.zig --pkg-end +CheckLastExitCode + +Import-Module "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" +CheckLastExitCode + +Enter-VsDevShell -VsInstallPath "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" ` + -DevCmdArguments '-arch=x64 -no_logo' ` + -StartInPath $(Get-Location) +CheckLastExitCode + +Write-Output "Build and run behavior tests with msvc..." +& cl.exe -I..\lib test_behavior.c compiler_rt.c /W3 /Z7 -link -nologo -debug -subsystem:console -entry:wWinMainCRTStartup kernel32.lib ntdll.lib vcruntime.lib libucrt.lib +CheckLastExitCode + +& .\test_behavior.exe +CheckLastExitCode diff --git a/ci/x86_64-windows-release.ps1 b/ci/x86_64-windows-release.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..f2b3d84a26454c9b6b667c19f8c2bdc12d8e113a --- /dev/null +++ b/ci/x86_64-windows-release.ps1 @@ -0,0 +1,103 @@ +$TARGET = "$($Env:ARCH)-windows-gnu" +$ZIG_LLVM_CLANG_LLD_NAME = "zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e" +$MCPU = "baseline" +$ZIG_LLVM_CLANG_LLD_URL = "https://ziglang.org/deps/$ZIG_LLVM_CLANG_LLD_NAME.zip" +$PREFIX_PATH = "$(Get-Location)\$ZIG_LLVM_CLANG_LLD_NAME" +$ZIG = "$PREFIX_PATH\bin\zig.exe" +$ZIG_LIB_DIR = "$(Get-Location)\lib" + +Write-Output "Downloading $ZIG_LLVM_CLANG_LLD_URL" +Invoke-WebRequest -Uri "$ZIG_LLVM_CLANG_LLD_URL" -OutFile "$ZIG_LLVM_CLANG_LLD_NAME.zip" + +Write-Output "Extracting..." +Add-Type -AssemblyName System.IO.Compression.FileSystem ; +[System.IO.Compression.ZipFile]::ExtractToDirectory("$PWD/$ZIG_LLVM_CLANG_LLD_NAME.zip", "$PWD") + +function CheckLastExitCode { + if (!$?) { + exit 1 + } + return 0 +} + +# Make the `zig version` number consistent. +# This will affect the `zig build` command below which uses `git describe`. +git config core.abbrev 9 +git fetch --tags + +if ((git rev-parse --is-shallow-repository) -eq "true") { + git fetch --unshallow # `git describe` won't work on a shallow repo +} + +Write-Output "Building from source..." +Remove-Item -Path 'build-release' -Recurse -Force -ErrorAction Ignore +New-Item -Path 'build-release' -ItemType Directory +Set-Location -Path 'build-release' + +# CMake gives a syntax error when file paths with backward slashes are used. +# Here, we use forward slashes only to work around this. +& cmake .. ` + -GNinja ` + -DCMAKE_INSTALL_PREFIX="stage3-release" ` + -DCMAKE_PREFIX_PATH="$($PREFIX_PATH -Replace "\\", "/")" ` + -DCMAKE_BUILD_TYPE=Release ` + -DCMAKE_C_COMPILER="$($ZIG -Replace "\\", "/");cc;-target;$TARGET;-mcpu=$MCPU" ` + -DCMAKE_CXX_COMPILER="$($ZIG -Replace "\\", "/");c++;-target;$TARGET;-mcpu=$MCPU" ` + -DZIG_TARGET_TRIPLE="$TARGET" ` + -DZIG_TARGET_MCPU="$MCPU" ` + -DZIG_STATIC=ON +CheckLastExitCode + +ninja install +CheckLastExitCode + +Write-Output "Main test suite..." +& "stage3-release\bin\zig.exe" build test docs ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + --search-prefix "$PREFIX_PATH" ` + -Dstatic-llvm ` + -Dskip-non-native ` + -Denable-symlinks-windows +CheckLastExitCode + +Write-Output "Testing Autodocs..." +& "stage3-release\bin\zig.exe" test "..\lib\std\std.zig" ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + -femit-docs ` + -fno-emit-bin +CheckLastExitCode + +Write-Output "Build behavior tests using the C backend..." +& "stage3-release\bin\zig.exe" test ` + ..\test\behavior.zig ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + -I..\test ` + -I..\lib ` + -ofmt=c ` + -femit-bin="test_behavior.c" +CheckLastExitCode + +& "stage3-release\bin\zig.exe" build-obj ` + ..\lib\compiler_rt.zig ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + -ofmt=c ` + -OReleaseSmall ` + --name compiler_rt ` + -femit-bin="compiler_rt.c" ` + --pkg-begin build_options config.zig --pkg-end +CheckLastExitCode + +Import-Module "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" +CheckLastExitCode + +Enter-VsDevShell -VsInstallPath "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" ` + -DevCmdArguments '-arch=x64 -no_logo' ` + -StartInPath $(Get-Location) +CheckLastExitCode + +Write-Output "Build and run behavior tests with msvc..." +& cl.exe -I..\lib test_behavior.c compiler_rt.c /W3 /Z7 -link -nologo -debug -subsystem:console -entry:wWinMainCRTStartup kernel32.lib ntdll.lib vcruntime.lib libucrt.lib +CheckLastExitCode + +& .\test_behavior.exe +CheckLastExitCode diff --git a/ci/x86_64-windows.ps1 b/ci/x86_64-windows.ps1 deleted file mode 100644 index e66c6b8d19d2ec08edfe6b934313fbcb5a4d78e0..0000000000000000000000000000000000000000 --- a/ci/x86_64-windows.ps1 +++ /dev/null @@ -1,103 +0,0 @@ -$TARGET = "$($Env:ARCH)-windows-gnu" -$ZIG_LLVM_CLANG_LLD_NAME = "zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e" -$MCPU = "baseline" -$ZIG_LLVM_CLANG_LLD_URL = "https://ziglang.org/deps/$ZIG_LLVM_CLANG_LLD_NAME.zip" -$PREFIX_PATH = "$(Get-Location)\$ZIG_LLVM_CLANG_LLD_NAME" -$ZIG = "$PREFIX_PATH\bin\zig.exe" -$ZIG_LIB_DIR = "$(Get-Location)\lib" - -Write-Output "Downloading $ZIG_LLVM_CLANG_LLD_URL" -Invoke-WebRequest -Uri "$ZIG_LLVM_CLANG_LLD_URL" -OutFile "$ZIG_LLVM_CLANG_LLD_NAME.zip" - -Write-Output "Extracting..." -Add-Type -AssemblyName System.IO.Compression.FileSystem ; -[System.IO.Compression.ZipFile]::ExtractToDirectory("$PWD/$ZIG_LLVM_CLANG_LLD_NAME.zip", "$PWD") - -function CheckLastExitCode { - if (!$?) { - exit 1 - } - return 0 -} - -# Make the `zig version` number consistent. -# This will affect the `zig build` command below which uses `git describe`. -git config core.abbrev 9 -git fetch --tags - -if ((git rev-parse --is-shallow-repository) -eq "true") { - git fetch --unshallow # `git describe` won't work on a shallow repo -} - -Write-Output "Building from source..." -Remove-Item -Path 'build-release' -Recurse -Force -ErrorAction Ignore -New-Item -Path 'build-release' -ItemType Directory -Set-Location -Path 'build-release' - -# CMake gives a syntax error when file paths with backward slashes are used. -# Here, we use forward slashes only to work around this. -& cmake .. ` - -GNinja ` - -DCMAKE_INSTALL_PREFIX="stage3-release" ` - -DCMAKE_PREFIX_PATH="$($PREFIX_PATH -Replace "\\", "/")" ` - -DCMAKE_BUILD_TYPE=Release ` - -DCMAKE_C_COMPILER="$($ZIG -Replace "\\", "/");cc;-target;$TARGET;-mcpu=$MCPU" ` - -DCMAKE_CXX_COMPILER="$($ZIG -Replace "\\", "/");c++;-target;$TARGET;-mcpu=$MCPU" ` - -DZIG_TARGET_TRIPLE="$TARGET" ` - -DZIG_TARGET_MCPU="$MCPU" ` - -DZIG_STATIC=ON -CheckLastExitCode - -ninja install -CheckLastExitCode - -Write-Output "Main test suite..." -& "stage3-release\bin\zig.exe" build test docs ` - --zig-lib-dir "$ZIG_LIB_DIR" ` - --search-prefix "$PREFIX_PATH" ` - -Dstatic-llvm ` - -Dskip-non-native ` - -Denable-symlinks-windows -CheckLastExitCode - -Write-Output "Testing Autodocs..." -& "stage3-release\bin\zig.exe" test "..\lib\std\std.zig" ` - --zig-lib-dir "$ZIG_LIB_DIR" ` - -femit-docs ` - -fno-emit-bin -CheckLastExitCode - -Write-Output "Build behaviour tests using the C backend..." -& "stage3-release\bin\zig.exe" test ` - ..\test\behavior.zig ` - --zig-lib-dir "$ZIG_LIB_DIR" ` - -I..\test ` - -I..\lib ` - -ofmt=c ` - -femit-bin="test_behaviour.c" -CheckLastExitCode - -& "stage3-release\bin\zig.exe" build-obj ` - ..\lib\compiler_rt.zig ` - --zig-lib-dir "$ZIG_LIB_DIR" ` - -ofmt=c ` - -OReleaseSmall ` - --name compiler_rt ` - -femit-bin="compiler_rt.c" ` - --pkg-begin build_options config.zig --pkg-end -CheckLastExitCode - -Import-Module "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" -CheckLastExitCode - -Enter-VsDevShell -VsInstallPath "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" ` - -DevCmdArguments '-arch=x64 -no_logo' ` - -StartInPath $(Get-Location) -CheckLastExitCode - -Write-Output "Build and run behaviour tests with msvc..." -& cl.exe -I..\lib test_behaviour.c compiler_rt.c /W3 /Z7 -link -nologo -debug -subsystem:console -entry:wWinMainCRTStartup kernel32.lib ntdll.lib vcruntime.lib libucrt.lib -CheckLastExitCode - -& .\test_behaviour.exe -CheckLastExitCode