Skip to content

Crossfile CI

Crossfile CI #226

Workflow file for this run

name: Crossfile CI
on:
schedule:
- cron: '15 21 * * *'
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build_cross:
name: Building on Bedrock ${{ matrix.architecture }}
runs-on: ubuntu-latest # Using Ubuntu as the base system for cross-compilation
strategy:
matrix:
architecture: [arm, arm64, mips, mipsel, riscv64, ppc, ppc64le, sparc64, s390x]
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install Cross-Compilation Toolchain
run: |
sudo apt update
if [ "${{ matrix.architecture }}" == "arm" ]; then
sudo apt install -y gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
elif [ "${{ matrix.architecture }}" == "arm64" ]; then
sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
elif [ "${{ matrix.architecture }}" == "mips" ]; then
sudo apt install -y gcc-mips-linux-gnu g++-mips-linux-gnu
elif [ "${{ matrix.architecture }}" == "mipsel" ]; then
sudo apt install -y gcc-mipsel-linux-gnu g++-mipsel-linux-gnu
elif [ "${{ matrix.architecture }}" == "riscv64" ]; then
sudo apt install -y gcc-riscv64-linux-gnu g++-riscv64-linux-gnu
elif [ "${{ matrix.architecture }}" == "ppc" ]; then
sudo apt install -y gcc-powerpc-linux-gnu g++-powerpc-linux-gnu
elif [ "${{ matrix.architecture }}" == "ppc64le" ]; then
sudo apt install -y gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu
elif [ "${{ matrix.architecture }}" == "sparc64" ]; then
sudo apt install -y gcc-sparc64-linux-gnu g++-sparc64-linux-gnu
elif [ "${{ matrix.architecture }}" == "s390x" ]; then
sudo apt install -y gcc-s390x-linux-gnu g++-s390x-linux-gnu
fi
- name: Set Cross-Compilation Environment Variables
run: |
if [ "${{ matrix.architecture }}" == "arm" ]; then
echo "CC=arm-linux-gnueabi-gcc" >> $GITHUB_ENV
echo "CXX=arm-linux-gnueabi-g++" >> $GITHUB_ENV
echo "CROSS_FILE=.github/crossfiles/arm.txt" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "arm64" ]; then
echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=aarch64-linux-gnu-g++" >> $GITHUB_ENV
echo "CROSS_FILE=.github/crossfiles/arm64.txt" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "mips" ]; then
echo "CC=mips-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=mips-linux-gnu-g++" >> $GITHUB_ENV
echo "CROSS_FILE=.github/crossfiles/mips.txt" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "mipsel" ]; then
echo "CC=mipsel-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=mipsel-linux-gnu-g++" >> $GITHUB_ENV
echo "CROSS_FILE=.github/crossfiles/mipsel.txt" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "riscv64" ]; then
echo "CC=riscv64-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=riscv64-linux-gnu-g++" >> $GITHUB_ENV
echo "CROSS_FILE=.github/crossfiles/riscv64.txt" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "ppc" ]; then
echo "CC=powerpc-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=powerpc-linux-gnu-g++" >> $GITHUB_ENV
echo "CROSS_FILE=.github/crossfiles/ppc.txt" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "ppc64le" ]; then
echo "CC=powerpc64le-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=powerpc64le-linux-gnu-g++" >> $GITHUB_ENV
echo "CROSS_FILE=.github/crossfiles/ppc64le.txt" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "sparc64" ]; then
echo "CC=sparc64-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=sparc64-linux-gnu-g++" >> $GITHUB_ENV
echo "CROSS_FILE=.github/crossfiles/sparc64.txt" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "s390x" ]; then
echo "CC=s390x-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=s390x-linux-gnu-g++" >> $GITHUB_ENV
echo "CROSS_FILE=.github/crossfiles/s390x.txt" >> $GITHUB_ENV
fi
- name: Install Meson
run: |
python -m pip install meson ninja
- name: Configure the Project
run: |
meson setup builddir --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3 --cross-file $CROSS_FILE
- name: Build the Project
run: |
meson compile -C builddir
- name: Test the Project
run: |
meson test -C builddir -v --test-args='show --mode tree --verbose ci --result fail'