| name: CMake | |
| on: [push, pull_request] | |
| jobs: | |
| ci-cmake: | |
| name: ${{ matrix.name }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: Ubuntu GCC | |
| os: ubuntu-latest | |
| compiler: gcc | |
| cflags: -Wall -Wextra | |
| pkgtgt: package package_source | |
| cmake-args: -DMINIZIP_ENABLE_BZIP2=ON | |
| - name: Ubuntu GCC -O3 | |
| os: ubuntu-latest | |
| compiler: gcc | |
| cflags: -O3 -Wall -Wextra | |
| pkgtgt: package package_source | |
| cmake-args: -DMINIZIP_ENABLE_BZIP2=ON | |
| - name: Ubuntu Clang | |
| os: ubuntu-latest | |
| compiler: clang | |
| cflags: -Wall -Wextra | |
| pkgtgt: package package_source | |
| cmake-args: -DMINIZIP_ENABLE_BZIP2=ON | |
| - name: Ubuntu Clang Debug | |
| os: ubuntu-latest | |
| compiler: clang | |
| cflags: -Wall -Wextra | |
| build-config: Debug | |
| pkgtgt: package package_source | |
| cmake-args: -DMINIZIP_ENABLE_BZIP2=ON | |
| - name: Windows MSVC Win32 | |
| os: windows-latest | |
| compiler: cl | |
| cflags: /W3 | |
| cmake-args: -A Win32 | |
| pkgtgt: PACKAGE | |
| - name: Windows MSVC Win64 | |
| os: windows-latest | |
| compiler: cl | |
| cflags: /W3 | |
| cmake-args: -A x64 -DMINIZIP_ENABLE_BZIP2=OFF | |
| pkgtgt: PACKAGE | |
| - name: Windows GCC | |
| os: windows-latest | |
| compiler: gcc | |
| cflags: -Wall -Wextra | |
| cmake-args: -G Ninja -DMINIZIP_ENABLE_BZIP2=OFF | |
| pkgtgt: package | |
| - name: macOS Clang | |
| os: macos-latest | |
| compiler: clang | |
| cflags: -Wall -Wextra | |
| pkgtgt: package | |
| cmake-args: -DMINIZIP_ENABLE_BZIP2=ON | |
| - name: macOS GCC | |
| os: macos-latest | |
| compiler: gcc-12 | |
| cflags: -Wall -Wextra | |
| pkgtgt: package | |
| cmake-args: -DMINIZIP_ENABLE_BZIP2=ON | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install packages (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| choco install --no-progress ninja | |
| - name: Install packages (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt install libbz2-dev | |
| - name: Generate project files | |
| run: cmake -S . -B ../build ${{ matrix.cmake-args }} -D CMAKE_BUILD_TYPE=${{ matrix.build-config || 'Release' }} -DZLIB_BUILD_MINIZIP=ON | |
| env: | |
| CC: ${{ matrix.compiler }} | |
| CFLAGS: ${{ matrix.cflags }} | |
| - name: Compile source code | |
| run: cmake --build ../build --config ${{ matrix.build-config || 'Release' }} | |
| - name: Run test cases | |
| run: ctest -C Release --output-on-failure --max-width 120 | |
| working-directory: ../build | |
| - name: create packages | |
| run: cmake --build ../build --config ${{ matrix.build-config || 'Release' }} -t ${{ matrix.pkgtgt }} | |
| - name: Upload build errors | |
| uses: actions/upload-artifact@v4 | |
| if: failure() | |
| with: | |
| name: ${{ matrix.name }} (cmake) | |
| path: | | |
| ../build/CMakeFiles/CMakeOutput.log | |
| ../build/CMakeFiles/CMakeError.log | |
| retention-days: 7 | |