ziglang / zig-bootstrap

take off every zig
368 stars 86 forks source link

bootstrap-zig

The purpose of this project is to start with minimum system dependencies and end with a fully operational Zig compiler for any target.

Version Information

This repository copies sources from upstream. Patches listed below. Use git to find and inspect the patch diffs.

For other versions, check the git tags of this repository.

Patches

Host System Dependencies

Build Instructions

./build <arch>-<os>-<abi> <mcpu>

All parameters are required:

Please be aware of the following two CMake environment variables that can significantly affect how long it takes to build:

When it succeeds, output can be found in out/zig-<triple>-<cpu>/.

Windows Build Instructions

Bootstrapping on Windows with MSVC is also possible via build.bat, which takes the same arguments as build above.

This script requires that the "C++ CMake tools for Windows" component be installed via the Visual Studio installer.

The script must be run within the Developer Command Prompt for VS 2019 shell:

build.bat <arch>-<os>-<abi> <mcpu>

To build for x86 Windows, run the script within the x86 Native Tools Command Prompt for VS 2019.

Supported Triples

If you try a "not tested" one and find a problem please file an issue, and a pull request linking to the issue in the table.

If you try a "not tested" one and find that it works, please file a pull request changing the status to "OK".

If you try an "OK" one and it does not work, please check if there is an existing issue, and if not, file an issue.

Note: Generally, for Linux targets, we prefer the musl libc builds over the glibc builds here, because musl builds end up producing a static binary, which is more portable across Linux distributions.

triple support status
aarch64-linux-gnu OK
aarch64-linux-musl OK
aarch64-macos-none OK
aarch64-windows-gnu OK
aarch64_be-linux-gnu #90
aarch64_be-linux-musl #92
arm-linux-gnueabi #101
arm-linux-gnueabihf #102
arm-linux-musleabi #103
arm-linux-musleabihf #183
arm-windows-gnu #105
armeb-linux-gnueabi #96
armeb-linux-gnueabihf #97
armeb-linux-musleabi #98
armeb-linux-musleabihf #99
loongarch64-linux-gnu #166
loongarch64-linux-musl #164
mips-linux-gnueabi OK
mips-linux-gnueabihf OK
mips-linux-musl OK
mips64-linux-gnuabi64 OK
mips64-linux-gnuabin32 #109
mips64-linux-musl OK
mips64el-linux-gnuabi64 OK
mips64el-linux-gnuabin32 #107
mips64el-linux-musl OK
mipsel-linux-gnueabi OK
mipsel-linux-gnueabihf OK
mipsel-linux-musl OK
powerpc-linux-gnueabi #174
powerpc-linux-gnueabihf #173
powerpc-linux-musl OK
powerpc64-linux-gnu #113
powerpc64-linux-musl OK
powerpc64le-linux-gnu OK
powerpc64le-linux-musl OK
riscv32-linux-gnu #115
riscv32-linux-musl OK
riscv64-linux-gnu #115
riscv64-linux-musl OK
s390x-linux-gnu #116
s390x-linux-musl #52
sparc-linux-gnu #117
sparc64-linux-gnu #172
thumb-linux-musleabi #176
thumb-linux-musleabihf #175
thumbeb-linux-musleabi #180
thumbeb-linux-musleabihf #179
x86-linux-gnu OK
x86-linux-musl OK
x86-windows-gnu OK
x86_64-freebsd-gnu #45
x86_64-linux-gnu OK
x86_64-linux-gnux32 #20
x86_64-linux-musl OK
x86_64-macos-none OK
x86_64-windows-gnu OK

Other Notable Targets Known to Work