Repository navigation
Update #55
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |