name: Configure on: [workflow_call, workflow_dispatch] jobs: configure: name: ${{ matrix.name }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - name: Ubuntu GCC os: ubuntu-latest compiler: gcc configure-args: --warn - name: Ubuntu GCC OSB Symbol Prefix No VPCLMUL os: ubuntu-latest compiler: gcc configure-args: --warn --sprefix=zTest_ --without-vpclmulqdq build-dir: ../build build-src-dir: ../zlib-ng - name: Ubuntu GCC Compat No Opt Reduced Mem os: ubuntu-latest compiler: gcc configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies --with-reduced-mem - name: Ubuntu GCC Compat Symbol Prefix os: ubuntu-latest compiler: gcc configure-args: --warn --zlib-compat --sprefix=zTest_ - name: Ubuntu GCC ARM SF os: ubuntu-24.04-arm compiler: arm-linux-gnueabi-gcc configure-args: --warn chost: arm-linux-gnueabi packages: qemu-user gcc-arm-linux-gnueabi libc-dev-armel-cross - name: Ubuntu GCC ARM SF Compat No Opt No Gzfileops os: ubuntu-24.04-arm compiler: arm-linux-gnueabi-gcc configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies --without-gzfileops chost: arm-linux-gnueabi packages: qemu-user gcc-arm-linux-gnueabi libc-dev-armel-cross - name: Ubuntu GCC ARM HF os: ubuntu-24.04-arm compiler: arm-linux-gnueabihf-gcc configure-args: --warn chost: arm-linux-gnueabihf packages: qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross - name: Ubuntu GCC ARM HF No Neon No ARMv8 os: ubuntu-24.04-arm compiler: arm-linux-gnueabihf-gcc configure-args: --warn --without-neon --without-armv8 chost: arm-linux-gnueabihf packages: qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross - name: Ubuntu GCC ARM HF Compat No Opt os: ubuntu-24.04-arm compiler: arm-linux-gnueabihf-gcc configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies chost: arm-linux-gnueabihf packages: qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross - name: Ubuntu GCC AARCH64 os: ubuntu-24.04-arm compiler: gcc configure-args: --warn - name: Ubuntu GCC AARCH64 Compat No Opt os: ubuntu-24.04-arm compiler: gcc configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies - name: Ubuntu GCC MIPS os: ubuntu-latest compiler: mips-linux-gnu-gcc configure-args: --warn chost: mips-linux-gnu packages: qemu-user gcc-mips-linux-gnu libc-dev-mips-cross - name: Ubuntu GCC MIPS64 os: ubuntu-latest compiler: mips64-linux-gnuabi64-gcc configure-args: --warn chost: mips64-linux-gnuabi64 packages: qemu-user gcc-mips64-linux-gnuabi64 libc-dev-mips64-cross - name: Ubuntu GCC PPC os: ubuntu-latest compiler: powerpc-linux-gnu-gcc configure-args: --warn --static chost: powerpc-linux-gnu packages: qemu-user gcc-powerpc-linux-gnu libc-dev-powerpc-cross cflags: -static ldflags: -static - name: Ubuntu GCC PPC No Opt os: ubuntu-latest compiler: powerpc-linux-gnu-gcc configure-args: --warn --without-optimizations chost: powerpc-linux-gnu packages: qemu-user gcc-powerpc-linux-gnu libc-dev-powerpc-cross - name: Ubuntu GCC PPC64 os: ubuntu-latest compiler: powerpc64-linux-gnu-gcc configure-args: --warn --static chost: powerpc-linux-gnu packages: qemu-user gcc-powerpc64-linux-gnu libc-dev-ppc64-cross cflags: -static ldflags: -static - name: Ubuntu GCC PPC64LE os: ubuntu-latest compiler: powerpc64le-linux-gnu-gcc configure-args: --warn chost: powerpc64le-linux-gnu packages: qemu-user gcc-powerpc64le-linux-gnu libc-dev-ppc64el-cross - name: Ubuntu GCC S390X os: ubuntu-latest compiler: s390x-linux-gnu-gcc configure-args: --warn --static chost: s390x-linux-gnu packages: qemu-user gcc-s390x-linux-gnu libc-dev-s390x-cross cflags: -static ldflags: -static - name: Ubuntu GCC S390X No vectorized CRC32 os: ubuntu-latest compiler: s390x-linux-gnu-gcc configure-args: --warn --static --without-crc32-vx chost: s390x-linux-gnu packages: qemu-user gcc-s390x-linux-gnu libc-dev-s390x-cross cflags: -static ldflags: -static - name: ${{ github.repository == 'zlib-ng/zlib-ng' && 'EL10' || 'Ubuntu' }} GCC S390X DFLTCC os: ${{ github.repository == 'zlib-ng/zlib-ng' && 'z15' || 'ubuntu-latest' }} compiler: ${{ github.repository == 'zlib-ng/zlib-ng' && 'gcc' || 's390x-linux-gnu-gcc' }} configure-args: --warn --static --with-dfltcc-deflate --with-dfltcc-inflate chost: ${{ github.repository != 'zlib-ng/zlib-ng' && 's390x-linux-gnu' || '' }} packages: ${{ github.repository != 'zlib-ng/zlib-ng' && 'qemu-user gcc-s390x-linux-gnu g++-s390x-linux-gnu libc-dev-s390x-cross' || '' }} cflags: ${{ github.repository != 'zlib-ng/zlib-ng' && '-static' || '' }} ldflags: ${{ github.repository != 'zlib-ng/zlib-ng' && '-static' || '' }} - name: ${{ github.repository == 'zlib-ng/zlib-ng' && 'EL10' || 'Ubuntu' }} GCC S390X DFLTCC Compat os: ${{ github.repository == 'zlib-ng/zlib-ng' && 'z15' || 'ubuntu-latest' }} compiler: ${{ github.repository == 'zlib-ng/zlib-ng' && 'gcc' || 's390x-linux-gnu-gcc' }} configure-args: --warn --zlib-compat --static --with-dfltcc-deflate --with-dfltcc-inflate chost: ${{ github.repository != 'zlib-ng/zlib-ng' && 's390x-linux-gnu' || '' }} packages: ${{ github.repository != 'zlib-ng/zlib-ng' && 'qemu-user gcc-s390x-linux-gnu g++-s390x-linux-gnu libc-dev-s390x-cross' || '' }} cflags: ${{ github.repository != 'zlib-ng/zlib-ng' && '-static' || '' }} ldflags: ${{ github.repository != 'zlib-ng/zlib-ng' && '-static' || '' }} - name: Ubuntu Emscripten WASM32 os: ubuntu-latest chost: wasm32 configure-args: --warn --zlib-compat --static configure-prefix: emconfigure cflags: -static ldflags: -static emu-run: node - name: macOS Clang (Intel) os: macos-15-intel compiler: clang configure-args: --warn - name: macOS Clang (Intel) Compat No Opt os: macos-15-intel compiler: clang configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies - name: macOS Clang (ARM64) os: macos-latest compiler: clang cflags: -std=gnu11 configure-args: --warn - name: macOS Clang (ARM64) Compat No Opt os: macos-latest compiler: clang cflags: -std=gnu11 configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies - name: Ubuntu GCC RISCV64 os: ubuntu-latest compiler: riscv64-linux-gnu-gcc configure-args: --warn chost: riscv64-linux-gnu packages: qemu-user crossbuild-essential-riscv64 - name: Ubuntu GCC RISCV64 No RVV No ZBC os: ubuntu-latest compiler: riscv64-linux-gnu-gcc configure-args: --warn --without-rvv --without-zbc chost: riscv64-linux-gnu packages: qemu-user crossbuild-essential-riscv64 - name: Ubuntu GCC RISCV64 Compat No Opt os: ubuntu-latest compiler: riscv64-linux-gnu-gcc configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies chost: riscv64-linux-gnu packages: qemu-user crossbuild-essential-riscv64 - name: Ubuntu GCC 14 LoongArch64 os: ubuntu-latest compiler: loongarch64-linux-gnu-gcc-14 configure-args: --warn --static chost: loongarch64-linux-gnu packages: qemu-user gcc-14-loongarch64-linux-gnu g++-14-loongarch64-linux-gnu libc-dev-loong64-cross cflags: -static ldflags: -static - name: Ubuntu GCC 14 LoongArch64 Compat No Opt os: ubuntu-latest compiler: loongarch64-linux-gnu-gcc-14 configure-args: --warn --static --zlib-compat --without-optimizations --without-new-strategies chost: loongarch64-linux-gnu packages: qemu-user gcc-14-loongarch64-linux-gnu g++-14-loongarch64-linux-gnu libc-dev-loong64-cross cflags: -static ldflags: -static steps: - name: Checkout repository uses: actions/checkout@v6 with: show-progress: 'false' - name: Add ubuntu mirrors if: runner.os == 'Linux' && matrix.packages # Github Actions caching proxy is at times unreliable run: | echo -e 'http://azure.archive.ubuntu.com/ubuntu\tpriority:1\n' | sudo tee /etc/apt/mirrors.txt curl http://mirrors.ubuntu.com/mirrors.txt | sudo tee --append /etc/apt/mirrors.txt sudo sed -i 's#http://azure.archive.ubuntu.com/ubuntu/#mirror+file:/etc/apt/mirrors.txt#' /etc/apt/sources.list - name: Install packages (Ubuntu) if: runner.os == 'Linux' && matrix.packages run: | sudo apt-get update sudo apt-get install -y ${{ matrix.packages }} - name: Install packages (macOS) if: runner.os == 'macOS' run: brew install ninja ${{ matrix.packages }} env: HOMEBREW_NO_INSTALL_CLEANUP: 1 - name: Install Emscripten if: contains(matrix.name, 'WASM32') uses: mymindstorm/setup-emsdk@v14 - name: Generate project files run: | mkdir ${{ matrix.build-dir || '.not-used' }} cd ${{ matrix.build-dir || '.' }} ${{ matrix.configure-prefix }} ${{ matrix.build-src-dir || '.' }}/configure ${{ matrix.configure-args }} env: CC: ${{ matrix.compiler }} CFLAGS: ${{ matrix.cflags }} LDFLAGS: ${{ matrix.ldflags }} CHOST: ${{ matrix.chost }} EMU_RUN: ${{ matrix.emu-run }} CI: true - name: Compile source code run: make -j5 working-directory: ${{ matrix.build-dir }} - name: Run test cases run: make test working-directory: ${{ matrix.build-dir }} - name: Upload build errors uses: actions/upload-artifact@v7 if: failure() with: name: ${{ matrix.name }} (configure) path: | **/Makefile **/configure.log retention-days: 30