| 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 |
| |
| - name: Ubuntu GCC ISB |
| os: ubuntu-latest |
| compiler: gcc |
| build-dir: "." |
| src-dir: "." |
| |
| - name: Ubuntu Clang |
| os: ubuntu-latest |
| compiler: clang |
| |
| - name: Ubuntu Clang Debug |
| os: ubuntu-latest |
| compiler: clang |
| build-config: Debug |
| |
| - name: Windows MSVC Win32 |
| os: windows-latest |
| compiler: cl |
| cmake-args: -A Win32 |
| |
| - name: Windows MSVC Win64 |
| os: windows-latest |
| compiler: cl |
| cmake-args: -A x64 |
| |
| - name: macOS Clang |
| os: macos-latest |
| compiler: clang |
| |
| - name: macOS GCC |
| os: macos-latest |
| compiler: gcc-9 |
| |
| steps: |
| - name: Checkout repository |
| uses: actions/checkout@v3 |
| |
| - name: Generate project files |
| run: cmake -S ${{ matrix.src-dir || '../zlib' }} -B ${{ matrix.build-dir || '../build' }} ${{ matrix.cmake-args }} -D CMAKE_BUILD_TYPE=${{ matrix.build-config || 'Release' }} |
| env: |
| CC: ${{ matrix.compiler }} |
| |
| - name: Compile source code |
| run: cmake --build ${{ matrix.build-dir || '../build' }} --config ${{ matrix.build-config || 'Release' }} |
| |
| - name: Run test cases |
| run: ctest -C Release --output-on-failure --max-width 120 |
| working-directory: ${{ matrix.build-dir || '../build' }} |