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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 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 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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 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 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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 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 linux_min: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 with: cmakeVersion: 3.17.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 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 run: ctest --output-on-failure --test-dir build macos: runs-on: ${{matrix.os}} strategy: fail-fast: false matrix: os: [macos-14, macos-13] compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} - run: cmake --build build - run: cmake --install build --prefix build/install - run: ctest --output-on-failure --test-dir build macos-shared: runs-on: ${{matrix.os}} strategy: fail-fast: false matrix: os: [macos-14] compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON -DBUILD_SHARED_LIBS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} - run: cmake --build build - run: cmake --install build --prefix build/install - 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-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - run: python update_glslang_sources.py - name: Build run: | cmake -S. -Bbuild -G "Visual Studio 16 2019" -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 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-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - run: python update_glslang_sources.py - name: Build run: | cmake -S. -Bbuild -G "Visual Studio 16 2019" -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 # disabled until we figure out DLL issues. # - name: Test # run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build iOS: runs-on: macos-13 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 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