diff options
| author | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2026-03-31 01:30:36 +0200 |
|---|---|---|
| committer | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2026-03-31 01:30:36 +0200 |
| commit | 8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8 (patch) | |
| tree | 925fa596210d1a1f01e00e0743a643f4552e7a7a /tools/Vulkan-Tools/.github/workflows | |
| parent | 1f17b4df127bd280e50d93a46ae93df704adc2b0 (diff) | |
| parent | 90bf5bc4fd8bea0d300f6564af256a51a34124b8 (diff) | |
| download | usermoji-8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8.tar.xz | |
add tools/Vulkan-Tools
Diffstat (limited to 'tools/Vulkan-Tools/.github/workflows')
| -rw-r--r-- | tools/Vulkan-Tools/.github/workflows/tools.yml | 242 |
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 |
