diff options
Diffstat (limited to 'neozip/.github/workflows/configure.yml')
| -rw-r--r-- | neozip/.github/workflows/configure.yml | 289 |
1 files changed, 289 insertions, 0 deletions
diff --git a/neozip/.github/workflows/configure.yml b/neozip/.github/workflows/configure.yml new file mode 100644 index 0000000000..952ab847ab --- /dev/null +++ b/neozip/.github/workflows/configure.yml @@ -0,0 +1,289 @@ +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 |
