| name: Presubmit |
| on: [push, pull_request] |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| build: |
| name: Build ${{ matrix.os }} |
| runs-on: ${{ matrix.os }} |
| strategy: |
| matrix: |
| os: [ubuntu-latest, macos-latest, windows-latest] |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Install Ubuntu packages |
| if: matrix.os == 'ubuntu-latest' |
| run: sudo apt install -y dos2unix |
| - name: Install macOS packages |
| if: matrix.os == 'macos-latest' |
| run: brew install dos2unix |
| - name: Build |
| run: | |
| mkdir build |
| cd build |
| cmake -DCMAKE_INSTALL_PREFIX=install .. |
| cmake --build . --target install |
| - name: Build spec tools |
| run: | |
| cd tools/buildHeaders |
| mkdir build |
| cd build |
| cmake .. |
| cmake --build . --target install |
| - name: Build headers |
| run: | |
| cd tools/buildHeaders |
| ./bin/makeHeaders |
| - name: Check generated headers |
| run: git diff --exit-code |
| - name: Check for legacy asciidoc in JSON |
| if: matrix.os == 'ubuntu-latest' |
| run: | |
| grep \"\'".*"\'\" include/spirv/unified1/*.json >build/bad-asciidoc.txt || true |
| if [ 0 -lt $(cat build/bad-asciidoc.txt | wc -l) ]; then |
| echo "Legacy asciidoc italics detected, like \"'foo'\". Text formating aren't used anymore. Please use \"foo\" instead." |
| head -10 build/bad-asciidoc.txt |
| exit 1 |
| fi |
| |
| |
| test_cmake_min_required: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: lukka/get-cmake@latest |
| with: |
| cmakeVersion: 3.14.0 |
| - name: CMake build |
| run: | |
| cmake -S . -B build/ -D CMAKE_BUILD_TYPE=Debug -G "Ninja" -D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/build/install/ |
| cmake --build build --target install |
| |
| test_cmake_latest: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: lukka/get-cmake@latest |
| - name: CMake build |
| run: | |
| cmake -S . -B build/ -D CMAKE_BUILD_TYPE=Debug -G "Ninja" |
| cmake --install build/ --prefix build/install |
| |
| add_subdirectory: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: lukka/get-cmake@latest |
| with: |
| cmakeVersion: 3.15.0 |
| - name: Build spirv-headers with testing enabled |
| run: | |
| cmake -S . -B build/ -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Debug -G "Ninja" |
| cmake --build build |
| |
| find_package: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: lukka/get-cmake@latest |
| with: |
| cmakeVersion: 3.15.0 |
| - name: Install spirv-headers |
| run: | |
| cmake -S . -B build/ |
| cmake --install build/ --prefix build/install |
| - name: Check spirv-headers find_package support |
| run: | |
| cmake -S tests/find_package -B tests/find_package/build/ -D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build/install |
| cmake --build tests/find_package/build/ |
| |
| find_pkg_config: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: lukka/get-cmake@latest |
| with: |
| cmakeVersion: 3.15.0 |
| - name: Install spirv-headers |
| run: | |
| cmake -S . -B build/ -D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/build/install/ |
| cmake --install build/ |
| - name: Check spirv-headers pkg_config support |
| run: | |
| cmake -S tests/pkg_config -B tests/pkg_config/build/ -D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build/install |
| cmake --build tests/pkg_config/build/ |
| |
| # https://github.com/KhronosGroup/SPIRV-Headers/issues/282 |
| find_pkg_config_absolute: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: lukka/get-cmake@latest |
| with: |
| cmakeVersion: 3.15.0 |
| - name: Install spirv-headers with CMAKE_INSTALL_INCLUDEDIR being absolute |
| run: | |
| cmake -S . -B build/ -D CMAKE_INSTALL_INCLUDEDIR=${GITHUB_WORKSPACE}/build/install/include -D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/build/install/ |
| cmake --install build/ |
| - name: Check spirv-headers pkg_config support |
| run: | |
| cmake -S tests/pkg_config -B tests/pkg_config/build/ -D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build/install |
| cmake --build tests/pkg_config/build/ |
| |
| license-check: |
| name: Verify repository license compliance |
| runs-on: ubuntu-latest |
| # We now refer to the container by its SHA instead of the name, to prevent |
| # caching problems when updating the image. |
| # container: khronosgroup/docker-images:asciidoctor-spec.20240726 |
| container: khronosgroup/docker-images@sha256:724f67d8562445523644abf017d5d192b369fafc122de75e9d26792c649821a0 |
| |
| steps: |
| - uses: actions/checkout@v4 |
| - name: REUSE license checker |
| run: reuse lint |