Skip to content

Update

Update #55

Workflow file for this run

name: Build LLVM Toolchain
on: push
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- name: Linux RISCV
base: linux-debian
arch: riscv64
includes: "sysroot/lib"
tripple: riscv64-linux-gnu
loaderarch: riscv64
- name: Linux LoongArch64
base: linux-debian
arch: loong64
includes: "sysroot/lib sysroot/lib64"
tripple: loongarch64-linux-gnu
loaderarch: loong64
- name: Linux PowerPC64
base: linux-debian
arch: ppc64el
includes: "sysroot/lib sysroot/lib64"
tripple: powerpc64le-linux-gnu
loaderarch: ppc64
- name: Linux S390X
base: linux-debian
arch: s390x
includes: "sysroot/lib"
tripple: systemz-linux-gnu
loaderarch: s390x
- name: FreeBSD x86_64
base: freebsd
arch: amd64
subarch: amd64
includes: "sysroot/lib"
version: "13.0"
tripple: x86_64-unknown-freebsd13.0
loaderarch: x86_64
- name: FreeBSD AArch64
base: freebsd
arch: arm64
subarch: aarch64
includes: "sysroot/lib"
version: "13.0"
tripple: aarch64-unknown-freebsd13.0
loaderarch: arm64
- name: FreeBSD RISCV
base: freebsd
arch: riscv
subarch: riscv64
includes: "sysroot/lib"
version: "13.0"
tripple: riscv64-unknown-freebsd13.0
loaderarch: riscv64
- name: FreeBSD PowerPC64
base: freebsd
arch: powerpc
subarch: powerpc64le
includes: "sysroot/lib"
version: "13.0"
tripple: powerpc64le-unknown-freebsd13.0
loaderarch: ppc64
- name: FreeBSD I386
base: freebsd
arch: i386
subarch: i386
includes: "sysroot/lib"
version: "13.0"
tripple: i386-unknown-freebsd13.0
loaderarch: x86
- name: OpenBSD amd64
base: openbsd
arch: amd64
includes: ""
version: "7.8"
version2: "78"
tripple: x86_64-unknown-openbsd
loaderarch: x86_64
- name: OpenBSD arm64
base: openbsd
arch: arm64
includes: ""
version: "7.8"
version2: "78"
tripple: arm64-unknown-openbsd
loaderarch: arm64
- name: OpenBSD armv7
base: openbsd
arch: armv7
includes: ""
version: "7.8"
version2: "78"
tripple: armv7-unknown-openbsd
loaderarch: armv7
- name: OpenBSD I386
base: openbsd
arch: i386
includes: ""
version: "7.8"
version2: "78"
tripple: i386-unknown-openbsd
loaderarch: x86
- name: OpenBSD RISCV
base: openbsd
arch: riscv64
includes: ""
version: "7.8"
version2: "78"
tripple: riscv64-unknown-openbsd
loaderarch: riscv64
name: Build for ${{ matrix.name }}
runs-on: ubuntu-latest
steps:
- name: Update system packages
run: sudo apt update
- name: Install Debootstrap
if: matrix.base == 'linux-debian'
run: sudo apt install debootstrap
- name: Build Debian root
if: matrix.base == 'linux-debian'
run: |
sudo apt install qemu-user-static
mkdir sysroot
sudo debootstrap --arch=${{ matrix.arch }} --foreign unstable sysroot https://deb.debian.org/debian
sudo chroot sysroot /debootstrap/debootstrap --second-stage
sudo chroot sysroot apt update
sudo chroot sysroot apt install -y gcc libc6-dev libstdc++-15-dev libgcc-s1 libx11-dev libwayland-dev libjack-dev libpulse-dev libsndio-dev libthai-dev libdrm-dev libgbm-dev ${{ matrix.debextra }}
- name: Download FreeBSD root
if: matrix.base == 'freebsd'
run: |
wget http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/${{ matrix.arch }}/${{ matrix.subarch }}/${{ matrix.version }}-RELEASE/base.txz
mkdir sysroot
tar -xJf base.txz -C ./sysroot/
- name: Download OpenBSD root
if: matrix.base == 'openbsd'
run: |
wget https://mirrors.sonic.net/pub/OpenBSD/${{ matrix.version }}/${{ matrix.arch }}/base${{ matrix.version2 }}.tgz
wget https://mirrors.sonic.net/pub/OpenBSD/${{ matrix.version }}/${{ matrix.arch }}/comp${{ matrix.version2 }}.tgz
mkdir sysroot
tar -xzf base${{ matrix.version2 }}.tgz -C ./sysroot/
tar -xzf comp${{ matrix.version2 }}.tgz -C ./sysroot/
- name: Pack toolchain
run: |
git clone https://github.com/OpenMinecraft-Dev/cross-toolchain-sysroot
mkdir bin
cp cross-toolchain-sysroot/llvm-shell/* ./bin
rm -rf cross-toolchain-sysroot
echo ${{ matrix.tripple }} > ./bin/target-tripple
sudo tar -cJf llvm-toolchain-${{ matrix.base }}-${{ matrix.loaderarch }}.tar.xz bin sysroot/usr sysroot/bin sysroot/sbin ${{ matrix.includes }}
- name: Upload toolchain
uses: actions/upload-artifact@v4
with:
name: llvm-toolchain-${{ matrix.base }}-${{ matrix.loaderarch }}
path: llvm-toolchain-${{ matrix.base }}-${{ matrix.loaderarch }}.tar.xz
- name: Test toolchain
run: |
echo "#include <stdio.h>" >> main.c
echo "int main() {printf(\"Hello, world\");}" >> main.c
./bin/clang main.c -o main-c
file main-c
release:
name: Release toolchains
runs-on: ubuntu-latest
needs: build
permissions:
contents: write
steps:
- name: Download toolchains
uses: actions/download-artifact@v4
if: github.ref_type == 'tag'
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
if: github.ref_type == 'tag'
with:
name: "Toolchain autorelease ${{ github.sha }}"
draft: false
prerelease: false
files: "*.tar.xz"
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}