313 lines
12 KiB
YAML
313 lines
12 KiB
YAML
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
|