name: "Build" on: push: branches: - main pull_request: workflow_dispatch: jobs: linux: name: Linux runs-on: ubuntu-latest strategy: matrix: include: - name: arm64 tool: aarch64-unknown-linux-musl - name: arm32 tool: arm-unknown-linux-musleabi - name: arm32hf tool: arm-unknown-linux-musleabihf - name: arm32v7 tool: armv7-unknown-linux-musleabi - name: arm32v7hf tool: armv7-unknown-linux-musleabihf - name: i586 tool: i586-unknown-linux-musl - name: i686 tool: i686-unknown-linux-musl - name: loong64 tool: loongarch64-unknown-linux-musl - name: m68k tool: m68k-unknown-linux-musl - name: microblazeel tool: microblazeel-xilinx-linux-musl - name: microblaze tool: microblaze-xilinx-linux-musl - name: mips64el tool: mips64el-unknown-linux-musl - name: mips64 tool: mips64-unknown-linux-musl - name: mips32el tool: mipsel-unknown-linux-musl - name: mips32elsf tool: mipsel-unknown-linux-muslsf - name: mips32 tool: mips-unknown-linux-musl - name: mips32sf tool: mips-unknown-linux-muslsf - name: or1k tool: or1k-unknown-linux-musl - name: powerpc64le tool: powerpc64le-unknown-linux-musl - name: powerpc64 tool: powerpc64-unknown-linux-musl - name: powerpcle tool: powerpcle-unknown-linux-musl - name: powerpc tool: powerpc-unknown-linux-musl - name: riscv32 tool: riscv32-unknown-linux-musl - name: riscv64 tool: riscv64-unknown-linux-musl - name: s390x tool: s390x-ibm-linux-musl - name: sh4 tool: sh4-multilib-linux-musl - name: x86_64 tool: x86_64-unknown-linux-musl steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 1 submodules: true - name: Build ${{ matrix.name }} run: | sudo mkdir -p /opt/x-tools wget https://github.com/cross-tools/musl-cross/releases/download/20250929/${{ matrix.tool }}.tar.xz sudo tar xf ${{ matrix.tool }}.tar.xz -C /opt/x-tools make CROSS_PREFIX=/opt/x-tools/${{ matrix.tool }}/bin/${{ matrix.tool }}- CFLAGS=${{ matrix.env.CFLAGS }} -j`nproc` macos: name: macOS runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 1 submodules: true - name: Build native run: | make make clean - name: Build cross run: | ./build-apple.sh llvm: name: LLVM runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 1 submodules: true - name: Prepare run: | sudo apt install -y clang - name: Build run: | make CC=clang -j`nproc` android: name: Android runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 1 submodules: true - name: Prepare run: | wget https://dl.google.com/android/repository/android-ndk-r27d-linux.zip unzip android-ndk-r27d-linux.zip ln -sf . jni - name: Build run: | ./android-ndk-r27d/ndk-build windows: name: Windows runs-on: windows-latest defaults: run: shell: cmd steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 1 submodules: true - name: Setup MSYS2 uses: msys2/setup-msys2@v2 with: msystem: MSYS location: D:\msys2 update: true install: >- gcc git make - name: Build shell: msys2 {0} run: | export MSYS=winsymlinks:native git clone --depth=1 --recursive file://`pwd` work; cd work make -j`nproc`