102 lines
3.8 KiB
YAML
102 lines
3.8 KiB
YAML
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
|