mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
* build.zig: introduce `-Dflat` option which makes the installation
match what we want to ship for our download tarballs. This allows
deleting a bunch of shell script logic from the CI.
- for example it puts the executable directly in prefix/zig rather
than prefix/bin/zig and it additionally includes prefix/LICENSE.
* build.zig: by default also install std lib documentation to doc/std/
- this can be disabled by `-Dno-autodocs` similar to how there is
already `-Dno-langref`.
* build.zig: add `std-docs` and `langref` steps which build and install
the std lib autodocs and langref to prefix/doc/std and
prefix/doc/langref.html, respectively.
* std.Build: implement proper handling of `-femit-docs` using the
LazyPath system. This is a breaking change.
- this is a partial implementation of #16351
* frontend: fixed the handling of Autodocs with regards to caching and
putting the artifacts in the proper location to integrate with the
build system.
- closes #15864
* CI: delete the logic for autodocs since it is now handled by build.zig
and is enabled by default.
- in the future we should strive to have nearly all the CI shell
script logic deleted in favor of `zig build` commands.
* CI: pass `-DZIG_NO_LIB=ON`/`-Dno-lib` except for the one command where
we want to actually generate the langref and autodocs. Generating the
langref takes 14 minutes right now (why?!) so we don't want to do that
more times than necessary.
* Autodoc: fixed use of a global variable. It works fine as a local
variable instead.
- note that in the future we will want to make Autodoc run
simultaneously using the job system, but for now the principle of
YAGNI dictates that we don't have an init()/deinit() API and instead
simply call the function that does the things.
* Autodoc: only do it when there are no compile errors
102 lines
3.3 KiB
PowerShell
102 lines
3.3 KiB
PowerShell
$TARGET = "$($Env:ARCH)-windows-gnu"
|
|
$ZIG_LLVM_CLANG_LLD_NAME = "zig+llvm+lld+clang-$TARGET-0.11.0-dev.1869+df4cfc2ec"
|
|
$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 `
|
|
-DZIG_NO_LIB=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 "Build x86_64-windows-msvc 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-x86_64-windows-msvc.c" `
|
|
--test-no-exec `
|
|
-target x86_64-windows-msvc `
|
|
-lc
|
|
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-x86_64-windows-msvc.c" `
|
|
--mod build_options::config.zig `
|
|
--deps build_options `
|
|
-target x86_64-windows-msvc
|
|
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-x86_64-windows-msvc.c compiler_rt-x86_64-windows-msvc.c /W3 /Z7 -link -nologo -debug -subsystem:console kernel32.lib ntdll.lib libcmt.lib
|
|
CheckLastExitCode
|
|
|
|
& .\test-x86_64-windows-msvc.exe
|
|
CheckLastExitCode
|