1name: Presubmit 2on: [push, pull_request] 3 4permissions: 5 contents: read 6 7jobs: 8 build: 9 name: Build ${{ matrix.os }} 10 runs-on: ${{ matrix.os }} 11 strategy: 12 matrix: 13 os: [ubuntu-latest, macos-latest, windows-latest] 14 steps: 15 - uses: actions/checkout@v3 16 - name: Install Ubuntu packages 17 if: matrix.os == 'ubuntu-latest' 18 run: sudo apt install -y dos2unix 19 - name: Install macOS packages 20 if: matrix.os == 'macos-latest' 21 run: brew install dos2unix 22 - name: Build 23 run: | 24 mkdir build 25 cd build 26 cmake -DCMAKE_INSTALL_PREFIX=install .. 27 cmake --build . --target install 28 - name: Build spec tools 29 run: | 30 cd tools/buildHeaders 31 mkdir build 32 cd build 33 cmake .. 34 cmake --build . --target install 35 - name: Build headers 36 run: | 37 cd tools/buildHeaders 38 ./bin/makeHeaders 39 - name: Check generated headers 40 run: git diff --exit-code 41 42 test_cmake_min_required: 43 runs-on: ubuntu-latest 44 steps: 45 - uses: actions/checkout@v3 46 - uses: lukka/get-cmake@latest 47 with: 48 cmakeVersion: 3.14.0 49 - name: CMake build 50 run: | 51 cmake -S . -B build/ -D CMAKE_BUILD_TYPE=Debug -G "Ninja" -D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/build/install/ 52 cmake --build build --target install 53 54 test_cmake_latest: 55 runs-on: ubuntu-latest 56 steps: 57 - uses: actions/checkout@v3 58 - uses: lukka/get-cmake@latest 59 - name: CMake build 60 run: | 61 cmake -S . -B build/ -D CMAKE_BUILD_TYPE=Debug -G "Ninja" 62 cmake --install build/ --prefix build/install 63 64 add_subdirectory: 65 runs-on: ubuntu-latest 66 steps: 67 - uses: actions/checkout@v3 68 - uses: lukka/get-cmake@latest 69 with: 70 cmakeVersion: 3.15.0 71 - name: Build spirv-headers with testing enabled 72 run: | 73 cmake -S . -B build/ -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Debug -G "Ninja" 74 cmake --build build 75 76 find_package: 77 runs-on: ubuntu-latest 78 steps: 79 - uses: actions/checkout@v3 80 - uses: lukka/get-cmake@latest 81 with: 82 cmakeVersion: 3.15.0 83 - name: Install spirv-headers 84 run: | 85 cmake -S . -B build/ 86 cmake --install build/ --prefix build/install 87 - name: Check spirv-headers find_package support 88 run: | 89 cmake -S tests/find_package -B tests/find_package/build/ -D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build/install 90 cmake --build tests/find_package/build/ 91 92 find_pkg_config: 93 runs-on: ubuntu-latest 94 steps: 95 - uses: actions/checkout@v3 96 - uses: lukka/get-cmake@latest 97 with: 98 cmakeVersion: 3.15.0 99 - name: Install spirv-headers 100 run: | 101 cmake -S . -B build/ -D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/build/install/ 102 cmake --install build/ 103 - name: Check spirv-headers pkg_config support 104 run: | 105 cmake -S tests/pkg_config -B tests/pkg_config/build/ -D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build/install 106 cmake --build tests/pkg_config/build/ 107 108 # https://github.com/KhronosGroup/SPIRV-Headers/issues/282 109 find_pkg_config_absolute: 110 runs-on: ubuntu-latest 111 steps: 112 - uses: actions/checkout@v3 113 - uses: lukka/get-cmake@latest 114 with: 115 cmakeVersion: 3.15.0 116 - name: Install spirv-headers with CMAKE_INSTALL_INCLUDEDIR being absolute 117 run: | 118 cmake -S . -B build/ -D CMAKE_INSTALL_INCLUDEDIR=${GITHUB_WORKSPACE}/build/install/include -D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/build/install/ 119 cmake --install build/ 120 - name: Check spirv-headers pkg_config support 121 run: | 122 cmake -S tests/pkg_config -B tests/pkg_config/build/ -D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build/install 123 cmake --build tests/pkg_config/build/ 124