Skip to content

DRAFT 650 - test zig cross-compile on all targets #5

DRAFT 650 - test zig cross-compile on all targets

DRAFT 650 - test zig cross-compile on all targets #5

# This workflow uses Zig and its excellent cross-compilation support to test
# compiling for multiple platforms. No tests are actually run since it would
# require emulation.
name: zig cross-compile
on: [push, pull_request]
jobs:
build:
name: ${{ matrix.ttriple }} thr:${{ matrix.enable_threads }} dll:${{ matrix.shared_libs }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ttriple: [
aarch64-linux-gnu,
aarch64-linux-musl,
aarch64-windows-gnu,
aarch64_be-linux-gnu,
aarch64_be-linux-musl,
arm-linux-gnueabi,
arm-linux-gnueabihf,
arm-linux-musleabi,
arm-linux-musleabihf,
armeb-linux-gnueabi,
armeb-linux-gnueabihf,
armeb-linux-musleabi,
armeb-linux-musleabihf,
mips-linux-gnueabi,
mips-linux-gnueabihf,
mips-linux-musl,
mips64-linux-gnuabi64,
mips64-linux-gnuabin32,
mips64-linux-musl,
mips64el-linux-gnuabi64,
mips64el-linux-gnuabin32,
mips64el-linux-musl,
mipsel-linux-gnueabi,
mipsel-linux-gnueabihf,
mipsel-linux-musl,
powerpc-linux-gnueabi,
powerpc-linux-gnueabihf,
powerpc-linux-musl,
powerpc64-linux-gnu,
powerpc64-linux-musl,
powerpc64le-linux-gnu,
powerpc64le-linux-musl,
riscv64-linux-musl,
sparc64-linux-gnu,
thumb-linux-gnueabi,
thumb-linux-gnueabihf,
thumb-linux-musleabi,
thumb-linux-musleabihf,
wasm32-wasi-musl,
x86-linux-gnu,
x86-linux-musl,
x86-windows-gnu,
x86_64-linux-gnu,
x86_64-linux-gnux32,
x86_64-linux-musl,
x86_64-windows-gnu,
]
shared_libs: [ false, true ]
enable_threads: [ false, true ]
exclude:
- enable_threads: true
ttriple: wasm32-wasi-musl
- shared_libs: true
ttriple: aarch64_be-linux-gnu
- shared_libs: true
ttriple: aarch64_be-linux-musl
- shared_libs: true
ttriple: armeb-linux-gnueabi
- shared_libs: true
ttriple: armeb-linux-gnueabihf
- shared_libs: true
ttriple: armeb-linux-musleabi
- shared_libs: true
ttriple: armeb-linux-musleabihf
- shared_libs: true
ttriple: mips64-linux-gnuabin32
- shared_libs: true
ttriple: mips64el-linux-gnuabin32
- shared_libs: true
ttriple: powerpc-linux-gnueabi
- shared_libs: true
ttriple: powerpc-linux-gnueabihf
- shared_libs: true
ttriple: sparc64-linux-gnu # FIXME: recompile with -fPIC
- shared_libs: true
ttriple: thumb-linux-gnueabi
- shared_libs: true
ttriple: thumb-linux-gnueabihf
- shared_libs: true
ttriple: x86_64-linux-gnux32 # FIXME: recompile with -fPIC
# TODO: move from nightly to zig 0.12 when released.
steps:
- uses: actions/checkout@v4
- name: "Install zig"
run: |
mkdir zig && curl https://ziglang.org/builds/zig-linux-x86_64-0.12.0-dev.1849+bb0f7d55e.tar.xz | tar Jx --directory=zig --strip-components=1
- name: Build
run: >
zig/zig build -Dtarget=${{ matrix.ttriple }}
-DBUILD_SHARED_LIBS=${{ matrix.shared_libs }}
-Denable_threads=${{ matrix.enable_threads }}