name: native and cross on: [push, pull_request] jobs: build: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: release: - "ubuntu:20.04" - "ubuntu:22.04" - "ubuntu:24.04" - "ubuntu:rolling" - "debian:oldstable-slim" - "debian:stable-slim" - "debian:testing-slim" - "debian:unstable-slim" steps: - uses: actions/checkout@v4 - name: Prepare ${{ matrix.release }} container run: | podman version podman run --name stable -di --userns=keep-id:uid=1000,gid=1000 -v "$PWD":/home -w /home ${{ matrix.release }} bash podman exec -i stable uname -a podman exec -i stable id podman exec -i -u root stable apt update podman exec -e DEBIAN_FRONTEND='noninteractive' -i -u root stable apt install -o APT::Install-Suggests=false -qy \ clang \ cmake \ gcc \ gcc-aarch64-linux-gnu \ gcc-arm-linux-gnueabihf \ gcc-mips-linux-gnu \ make - name: Configure & Build with gcc env: cc: gcc run: | podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=${cc} -DENABLE_WERROR=ON -B build-${cc} podman exec -i stable cmake --build build-${cc} - name: Configure & Build with clang env: cc: clang run: | podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=${cc} -DENABLE_WERROR=ON -B build-${cc} podman exec -i stable cmake --build build-${cc} - name: Configure & Build with arm-linux-gnueabihf-gcc env: toolchain: arm-linux-gnueabihf-gcc run: | podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=cmake/${toolchain}.cmake -DENABLE_WERROR=ON -B build-${toolchain} podman exec -i stable cmake --build build-${toolchain} - name: Configure & Build with arm-linux-gnueabihf-clang if: ${{ matrix.release != 'ubuntu:20.04' && matrix.release != 'debian:oldstable-slim' }} env: toolchain: arm-linux-gnueabihf-clang run: | podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=cmake/${toolchain}.cmake -DENABLE_WERROR=ON -B build-${toolchain} podman exec -i stable cmake --build build-${toolchain} - name: Configure & Build with aarch64-linux-gnu-gcc env: toolchain: aarch64-linux-gnu-gcc run: | podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=cmake/${toolchain}.cmake -DENABLE_WERROR=ON -B build-${toolchain} podman exec -i stable cmake --build build-${toolchain} - name: Configure & Build with aarch64-linux-gnu-clang if: ${{ matrix.release != 'ubuntu:20.04' && matrix.release != 'debian:oldstable-slim' }} env: toolchain: aarch64-linux-gnu-clang run: | podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=cmake/${toolchain}.cmake -DENABLE_WERROR=ON -B build-${toolchain} podman exec -i stable cmake --build build-${toolchain} - name: Configure & Build with mips-linux-gnu-gcc env: toolchain: mips-linux-gnu-gcc run: | podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=cmake/${toolchain}.cmake -DENABLE_WERROR=ON -B build-${toolchain} podman exec -i stable cmake --build build-${toolchain} - name: Show logs if: ${{ failure() }} run: | for log in build-*/CMakeFiles/{CMakeOutput.log,CMakeConfigureLog.yaml}; do \ if [ -e ${log} ]; then \ echo "---------------- ${log} ----------------"; \ cat ${log}; \ fi; \ done