| 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 |
|
|