aboutsummaryrefslogtreecommitdiff
path: root/tools/Vulkan-Tools/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to 'tools/Vulkan-Tools/.github/workflows')
-rw-r--r--tools/Vulkan-Tools/.github/workflows/tools.yml242
1 files changed, 242 insertions, 0 deletions
diff --git a/tools/Vulkan-Tools/.github/workflows/tools.yml b/tools/Vulkan-Tools/.github/workflows/tools.yml
new file mode 100644
index 00000000..6a11a043
--- /dev/null
+++ b/tools/Vulkan-Tools/.github/workflows/tools.yml
@@ -0,0 +1,242 @@
+# Copyright (c) 2021-2024 Valve Corporation
+# Copyright (c) 2021-2024 LunarG, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: tools
+
+on:
+ push:
+ pull_request:
+ branches:
+ - main
+
+# https://docs.github.com/en/actions/using-jobs/using-concurrency
+concurrency:
+ # github.head_ref is only defined on pull_request
+ # Fallback to the run ID, which is guaranteed to be both unique and defined for the run.
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+
+jobs:
+ linux:
+ needs: tools_codegen
+ runs-on: ${{matrix.os}}
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ strategy:
+ matrix:
+ cc: [ gcc ]
+ cxx: [ g++ ]
+ config: [ Debug, Release ]
+ os: [ ubuntu-22.04, ubuntu-22.04 ]
+ include:
+ # Test clang on ubuntu 22
+ - cc: clang
+ cxx: clang++
+ config: Debug
+ os: ubuntu-22.04
+ # Test clang on ubuntu 24
+ - cc: clang
+ cxx: clang++
+ config: Release
+ os: ubuntu-24.04
+
+
+ steps:
+ - uses: actions/checkout@v6
+ - run: |
+ sudo apt-get -qq update
+ sudo apt install --yes libwayland-dev xorg-dev wayland-protocols
+ - uses: lukka/get-cmake@latest
+ with:
+ cmakeVersion: 3.22.1
+ - name: Setup ccache
+ uses: hendrikmuhs/ccache-action@v1.2
+ with:
+ key: ${{ runner.os }}-${{ matrix.config }}-${{ matrix.cc }}
+ # 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
+ - name: Configure
+ run: |
+ cmake -S. -B build -G "Ninja" \
+ -D CMAKE_BUILD_TYPE=${{matrix.config}} \
+ -D UPDATE_DEPS=ON \
+ -D BUILD_WERROR=ON \
+ -D INSTALL_ICD=ON \
+ -D BUILD_TESTS=ON \
+ -D ENABLE_ADDRESS_SANITIZER=ON
+ env:
+ CC: ${{matrix.cc}}
+ CXX: ${{matrix.cxx}}
+ CMAKE_CXX_COMPILER_LAUNCHER: ccache
+ CMAKE_C_COMPILER_LAUNCHER: ccache
+
+ - name: Build
+ run: cmake --build build
+
+ - name: Install
+ run: cmake --install build/ --prefix build/install
+
+ - name: Test
+ working-directory: ./build
+ run: ctest --output-on-failure
+
+ codegen:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - run: scripts/update_deps.py --dir ext --no-build
+ - run: scripts/generate_source.py --verify ext/Vulkan-Headers/registry/
+
+ windows:
+ needs: tools_codegen
+ runs-on: ${{matrix.os}}
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+
+ strategy:
+ matrix:
+ arch: [ Win32, x64 ]
+ config: [ Debug, Release ]
+ os: [ windows-latest ]
+
+ steps:
+ - uses: actions/checkout@v6
+ - uses: lukka/get-cmake@latest
+ - uses: ilammy/msvc-dev-cmd@v1
+ with:
+ arch: ${{ matrix.arch }}
+
+ - name: Configure
+ run: cmake -S. -B build -G "Ninja" -DCMAKE_BUILD_TYPE=${{matrix.config}} -D UPDATE_DEPS=ON -D INSTALL_ICD=ON -D BUILD_TESTS=ON -D BUILD_WERROR=ON
+
+ - name: Build
+ run: cmake --build ./build
+
+ - name: Install
+ run: cmake --install build/ --prefix build/install
+
+ - name: Test
+ working-directory: ./build
+ run: ctest --output-on-failure
+
+ mac:
+ # mac is 10x expensive to run on GitHub machines, so only run if we know something else fast/simple passed as well
+ needs: chromium
+ runs-on: macos-latest
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ steps:
+ - uses: actions/checkout@v6
+ - uses: lukka/get-cmake@latest
+
+ - name: Setup ccache
+ uses: hendrikmuhs/ccache-action@v1.2
+ with:
+ key: macos
+
+ # NOTE: Add ccache this way instead of with CMAKE_<LANG>_COMPILER_LAUNCHER since MoltenVK doesn't use CMake.
+ - name: Add ccache to PATH
+ run: echo "/usr/lib/ccache:/usr/local/opt/ccache/libexec" >> $GITHUB_PATH
+
+ - run: cmake -S. -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -D UPDATE_DEPS=ON -D INSTALL_ICD=ON -D BUILD_TESTS=ON -D ENABLE_ADDRESS_SANITIZER=ON -D BUILD_WERROR=OFF # Disable warnings as unavoidable deprecation notice causes CI to fail
+
+ - run: cmake --build build
+
+ - run: ctest --output-on-failure --test-dir build/
+
+ - run: cmake --install build --prefix /tmp
+
+ android:
+ needs: tools_codegen
+ runs-on: ubuntu-22.04
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ strategy:
+ matrix:
+ abi: [ armeabi-v7a, arm64-v8a ]
+ steps:
+ - uses: actions/checkout@v6
+ - uses: actions/setup-python@v6
+ with:
+ python-version: '3.8'
+ - uses: lukka/get-cmake@latest
+ - name: Configure
+ run: |
+ cmake -S . -B build/ --toolchain $ANDROID_NDK_ROOT/build/cmake/android.toolchain.cmake \
+ -D ANDROID_PLATFORM=23 \
+ -D CMAKE_ANDROID_ARCH_ABI=${{matrix.abi}} \
+ -D CMAKE_ANDROID_STL_TYPE=c++_static \
+ -D ANDROID_USE_LEGACY_TOOLCHAIN_FILE=NO \
+ -D CMAKE_BUILD_TYPE=Release \
+ -D UPDATE_DEPS=ON \
+ -D BUILD_TESTS=ON \
+ -D BUILD_WERROR=ON \
+ -G "Ninja"
+ - name: Build
+ run: cmake --build build
+ - name: Test
+ working-directory: ./build
+ run: ctest --output-on-failure -C Release
+ - name: Install
+ run: cmake --install build --prefix /tmp
+
+ mingw:
+ needs: tools_codegen
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ runs-on: windows-latest
+ defaults:
+ run:
+ shell: bash
+ steps:
+ - uses: actions/checkout@v6
+ - name: Setup ccache
+ uses: hendrikmuhs/ccache-action@v1.2
+ with:
+ key: mingw-ccache
+ - uses: lukka/get-cmake@latest
+ - name: GCC Version
+ run: gcc --version # If this fails MINGW is not setup correctly
+ - name: Configure
+ run: cmake -S. -B build -D UPDATE_DEPS=ON -D CMAKE_BUILD_TYPE=Release
+ env:
+ LDFLAGS: -fuse-ld=lld # MINGW linking is very slow. Use llvm linker instead.
+ CMAKE_C_COMPILER_LAUNCHER: ccache
+ CMAKE_CXX_COMPILER_LAUNCHER: ccache
+ CMAKE_GENERATOR: Ninja
+ - run: cmake --build build
+ - run: cmake --install build --prefix build/install
+
+ tools_codegen:
+ needs: codegen
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - uses: actions/setup-python@v6
+ with:
+ python-version: '3.10'
+ - run: pip install pyparsing
+ - run: sudo apt-get -qq update && sudo apt install --yes libwayland-dev xorg-dev wayland-protocols
+ - run: cmake -S . -B build/ -D UPDATE_DEPS=ON -D UPDATE_DEPS_DIR=external -D TOOLS_CODEGEN=ON
+ - run: cmake --build build --target tools_codegen
+ - run: git diff --exit-code
+
+ chromium:
+ needs: tools_codegen
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - uses: actions/setup-python@v6
+ with:
+ python-version: '3.10'
+ - run: scripts/gn/gn.py