| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- name: Continuous Integration
- on:
- workflow_dispatch:
- pull_request:
- branches:
- - main
- permissions: read-all
- jobs:
- linux:
- runs-on: ubuntu-22.04
- strategy:
- fail-fast: false
- matrix:
- compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
- cmake_build_type: [Debug, Release]
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - name: Setup ccache
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
- with:
- key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}
- - run: ./update_glslang_sources.py
- - name: Configure
- run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON
- env:
- CC: ${{matrix.compiler.cc}}
- CXX: ${{matrix.compiler.cxx}}
- CMAKE_GENERATOR: Ninja
- CMAKE_C_COMPILER_LAUNCHER: ccache
- CMAKE_CXX_COMPILER_LAUNCHER: ccache
- - name: Build
- run: cmake --build build
- - name: Install
- run: cmake --install build --prefix build/install
- - name: Test find_package support
- run: |
- cmake -S Test/find_package -B build/find_package && \
- cmake --build build/find_package
- - name: Test
- run: ctest --output-on-failure --test-dir build
- - name: Check known validation failure list
- run: grep -l 'Validation failed' Test/baseResults/* | sort -fd | diff -u Test/baseResults/validation_fails.txt -
- linux-shared:
- runs-on: ubuntu-22.04
- strategy:
- fail-fast: false
- matrix:
- compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
- cmake_build_type: [Release]
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - name: Setup ccache
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
- with:
- key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}
- - run: ./update_glslang_sources.py
- - name: Configure
- run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON -DBUILD_SHARED_LIBS=ON
- env:
- CC: ${{matrix.compiler.cc}}
- CXX: ${{matrix.compiler.cxx}}
- CMAKE_GENERATOR: Ninja
- CMAKE_C_COMPILER_LAUNCHER: ccache
- CMAKE_CXX_COMPILER_LAUNCHER: ccache
- - name: Build
- run: cmake --build build
- - name: Install
- run: cmake --install build --prefix build/install
- - name: Test find_package support
- run: |
- cmake -S Test/find_package -B build/find_package && \
- cmake --build build/find_package
- - name: Test
- run: ctest --output-on-failure --test-dir build
- linux-asan:
- runs-on: ubuntu-22.04
- strategy:
- fail-fast: false
- matrix:
- compiler: [{cc: gcc, cxx: g++}]
- cmake_build_type: [Debug]
- flags: ['-fsanitize=address', '-fsanitize=thread', '-fsanitize=undefined']
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - name: Setup ccache
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
- with:
- key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}}
- # This is to combat a bug when using 6.6 linux kernels with thread/address sanitizer
- # https://github.com/google/sanitizers/issues/1716
- - run: sudo sysctl vm.mmap_rnd_bits=28
- - run: ./update_glslang_sources.py
- - name: Configure
- run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -D GLSLANG_TESTS=ON
- env:
- CC: ${{matrix.compiler.cc}}
- CXX: ${{matrix.compiler.cxx}}
- CMAKE_GENERATOR: Ninja
- CMAKE_C_COMPILER_LAUNCHER: ccache
- CMAKE_CXX_COMPILER_LAUNCHER: ccache
- CFLAGS: ${{matrix.flags}}
- CXXFLAGS: ${{matrix.flags}}
- LDFLAGS: ${{matrix.flags}}
- - name: Build
- run: cmake --build build
- - name: Install
- run: cmake --install build --prefix build/install
- - name: Test
- env:
- UBSAN_OPTIONS: 'halt_on_error=1:print_stacktrace=1'
- run: ctest --output-on-failure --test-dir build
- # Ensure we can compile/run on an older distro, with older tools (cmake, python, etc)
- linux_min:
- name: Linux Backcompat
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
- with:
- python-version: '3.7'
- - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # v4.2.1
- with:
- cmakeVersion: 3.22.1
- - name: Setup ccache
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
- with:
- key: linux_backcompat
- - run: ./update_glslang_sources.py
- - name: Configure
- run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release -D GLSLANG_TESTS=ON
- env:
- CMAKE_C_COMPILER_LAUNCHER: ccache
- CMAKE_CXX_COMPILER_LAUNCHER: ccache
- - name: Build
- run: cmake --build build
- - name: Install
- run: cmake --install build --prefix build/install
- - name: Test find_package support
- run: |
- cmake -S Test/find_package -B build/find_package && \
- cmake --build build/find_package
- - name: Test
- run: ctest --output-on-failure --test-dir build
- macos:
- runs-on: ${{matrix.os}}
- strategy:
- fail-fast: false
- matrix:
- os: [macos-latest]
- compiler: [{cc: clang, cxx: clang++}]
- cmake_build_type: [Debug, Release]
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - run: ./update_glslang_sources.py
- - run: |
- cmake -S . -B build \
- -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} \
- -G Ninja \
- -D BUILD_WERROR=ON \
- -D GLSLANG_TESTS=ON \
- -D "CMAKE_OSX_ARCHITECTURES=arm64;x86_64"
- env:
- CC: ${{matrix.compiler.cc}}
- CXX: ${{matrix.compiler.cxx}}
- MACOSX_DEPLOYMENT_TARGET: 11.0
- - run: cmake --build build
- - run: cmake --install build --prefix build/install
- - name: Test find_package support
- run: |
- cmake -S Test/find_package -B build/find_package && \
- cmake --build build/find_package
- - run: ctest --output-on-failure --test-dir build
- macos-shared:
- runs-on: ${{matrix.os}}
- strategy:
- fail-fast: false
- matrix:
- os: [macos-latest]
- compiler: [{cc: clang, cxx: clang++}]
- cmake_build_type: [Release]
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - run: ./update_glslang_sources.py
- - run: |
- cmake -S . -B build \
- -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} \
- -G Ninja \
- -D BUILD_WERROR=ON \
- -D GLSLANG_TESTS=ON \
- -DBUILD_SHARED_LIBS=ON \
- -D "CMAKE_OSX_ARCHITECTURES=arm64;x86_64"
- env:
- CC: ${{matrix.compiler.cc}}
- CXX: ${{matrix.compiler.cxx}}
- MACOSX_DEPLOYMENT_TARGET: 11.0
- - run: cmake --build build
- - run: cmake --install build --prefix build/install
- - name: Test find_package support
- run: |
- cmake -S Test/find_package -B build/find_package && \
- cmake --build build/find_package
- - run: ctest --output-on-failure --test-dir build
- windows:
- runs-on: ${{matrix.os.genus}}
- permissions:
- contents: write
- strategy:
- fail-fast: false
- matrix:
- os: [{genus: windows-2022, family: windows}]
- cmake_build_type: [Debug, Release]
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - run: python update_glslang_sources.py
- - name: Build
- run: |
- cmake -S. -Bbuild -G "Visual Studio 17 2022" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON
- cmake --build build --config ${{matrix.cmake_build_type}} --target install
- - name: Test find_package support
- run: |
- cmake -S Test/find_package -B build/find_package
- cmake --build build/find_package
- - name: Test
- run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build
- windows-shared:
- runs-on: ${{matrix.os.genus}}
- permissions:
- contents: write
- strategy:
- fail-fast: false
- matrix:
- os: [{genus: windows-2022, family: windows}]
- cmake_build_type: [Debug, Release]
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - run: python update_glslang_sources.py
- - name: Build
- run: |
- cmake -S. -Bbuild -G "Visual Studio 17 2022" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON -DBUILD_SHARED_LIBS=ON
- cmake --build build --config ${{matrix.cmake_build_type}} --target install
- - name: Test find_package support
- run: |
- cmake -S Test/find_package -B build/find_package
- cmake --build build/find_package
- - name: Test
- run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build
- iOS:
- runs-on: macos-latest
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - name: Setup ccache
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
- with:
- key: IOS
- - run: ./update_glslang_sources.py
- # NOTE: The MacOS SDK ships universal binaries. CI should reflect this.
- - name: Configure Universal Binary for iOS
- run: |
- cmake -S . -B build \
- -D CMAKE_BUILD_TYPE=Debug \
- -D CMAKE_SYSTEM_NAME=iOS \
- "-D CMAKE_OSX_ARCHITECTURES=arm64;x86_64" \
- -G Ninja
- env:
- CMAKE_C_COMPILER_LAUNCHER: ccache
- CMAKE_CXX_COMPILER_LAUNCHER: ccache
- - run: cmake --build build
- - run: cmake --install build --prefix /tmp
- android:
- runs-on: ubuntu-22.04
- strategy:
- matrix:
- # Android NDK currently offers 2 different toolchains.
- # Test both to ensure we are compatible with either approach.
- LEGACY: [ON, OFF]
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - name: Setup ccache
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
- with:
- key: android-${{ matrix.LEGACY }}
- - run: ./update_glslang_sources.py
- - name: Configure for Android
- run: |
- cmake -S . -B build/ --toolchain $ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
- -D CMAKE_BUILD_TYPE=Release \
- -D ANDROID_ABI=armeabi-v7a \
- -D ANDROID_USE_LEGACY_TOOLCHAIN_FILE=${{ matrix.LEGACY }} \
- -G Ninja
- env:
- CMAKE_C_COMPILER_LAUNCHER: ccache
- CMAKE_CXX_COMPILER_LAUNCHER: ccache
- - run: cmake --build build/
- - run: cmake --install build/ --prefix /tmp
- emscripten:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- - name: Setup ccache
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
- with:
- key: ubuntu-emscripten
- - uses: mymindstorm/setup-emsdk@6ab9eb1bda2574c4ddb79809fc9247783eaf9021 # v14
- - name: Update Glslang Sources
- run: ./update_glslang_sources.py
- - name: Configure
- run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DENABLE_OPT=OFF
- env:
- CMAKE_GENERATOR: Ninja
- CMAKE_C_COMPILER_LAUNCHER: ccache
- CMAKE_CXX_COMPILER_LAUNCHER: ccache
- - name: Build
- run: cmake --build build/web
|