From e62418aecf23e34b52729abb699dabdb36634ae4 Mon Sep 17 00:00:00 2001 From: juan-lunarg Date: Thu, 4 May 2023 14:10:36 -0600 Subject: ci: Use UPDATE_DEPS and ccache --- .github/workflows/build.yml | 179 -------------------------------------------- .github/workflows/tools.yml | 177 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 177 insertions(+), 179 deletions(-) delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/tools.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 67f2d62a..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,179 +0,0 @@ -# Copyright (c) 2021 Valve Corporation -# Copyright (c) 2021 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. -# -# Author: Jeremy Kniager - -name: CI Build - -on: - push: - pull_request: - branches: - - main - -jobs: - linux: - runs-on: ${{matrix.os}} - - strategy: - matrix: - cc: [ gcc, clang ] - cxx: [ g++, clang++ ] - config: [ Debug, Release ] - os: [ ubuntu-20.04, ubuntu-22.04 ] - cube_wsi: [ XCB, XLIB, WAYLAND, DISPLAY ] - exclude: - - cc: gcc - cxx: clang++ - - cc: clang - cxx: g++ - - os: ubuntu-20.04 - cube_wsi: WAYLAND - - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.7' - - run: | - sudo apt-get -qq update - sudo apt install libxkbcommon-dev libwayland-dev libxrandr-dev libx11-xcb-dev wayland-protocols - - - name: Fetch and install headers - run: python scripts/update_deps.py --dir external - - - name: Generate build files - run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{matrix.config}} -DCUBE_WSI_SELECTION=${{matrix.cube_wsi}} -Cexternal/helper.cmake - env: - CC: ${{matrix.cc}} - CXX: ${{matrix.cxx}} - - - name: Build the tools - run: make -C build - - - name: Verify generated source files - run: python scripts/generate_source.py --verify external/Vulkan-Headers/build/install/share/vulkan/registry - - windows: - runs-on: ${{matrix.os}} - - strategy: - matrix: - arch: [ Win32, x64 ] - config: [ Debug, Release ] - os: [ windows-latest ] - - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.7' - - - name: Fetch and install headers - run: python scripts/update_deps.py --dir external - - - name: Generate build files - run: cmake -S. -Bbuild -A${{matrix.arch}} "-Cexternal/helper.cmake" - - - name: Build the tools - run: cmake --build ./build --config ${{matrix.config}} - - - name: Verify generated source files - run: python scripts/generate_source.py --verify external/Vulkan-Headers/build/install/share/vulkan/registry - - mac: - runs-on: macos-latest - - strategy: - matrix: - config: [ Debug, Release ] - - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.7' - - uses: lukka/get-cmake@latest - with: - cmakeVersion: 3.17.2 - - name: Cache dependencies - id: cache-deps - uses: actions/cache@v3 - env: - cache-name: cache-macos-latest - with: - path: external/ - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.config }}-${{ hashfiles('scripts/known_good.json') }} - - - name: Fetch/Update dependencies - run: python scripts/update_deps.py --dir external --skip-existing-install - - - name: Generate build files - run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{matrix.config}} -Cexternal/helper.cmake -G "Ninja" - env: - # Specify the minimum version of macOS on which the target binaries are to be deployed. - # https://cmake.org/cmake/help/latest/envvar/MACOSX_DEPLOYMENT_TARGET.html - MACOSX_DEPLOYMENT_TARGET: 10.12 - - - name: Build the tools - run: cmake --build build - - - name: Verify generated source files - run: python scripts/generate_source.py --verify external/Vulkan-Headers/build/install/share/vulkan/registry - - gn: - runs-on: ubuntu-20.04 - - strategy: - matrix: - config: [ Debug, Release ] - - steps: - - uses: actions/checkout@v3 - - - name: Get depot tools - run: | - git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git depot_tools - echo "$GITHUB_WORKSPACE/depot_tools" >> $GITHUB_PATH - - name: Fetch and install headers - run: ./build-gn/update_deps.sh - - - name: Generate build files - run: gn gen out/${{matrix.config}} --args="is_debug=true" - if: matrix.config != 'Release' - - - name: Generate build files - run: gn gen out/${{matrix.config}} --args="is_debug=false" - if: matrix.config == 'Release' - - - name: Build the tools - run: ninja -C out/${{matrix.config}} - - android: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - - name: Setup Environment - run: | - echo "ANDROID_SDK_HOME=$ANDROID_SDK_ROOT" >> $GITHUB_ENV - echo "ANDROID_NDK_HOME=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV - echo "$ANDROID_SDK_ROOT/build-tools/31.0.0" >> $GITHUB_PATH - echo "$ANDROID_NDK_LATEST_HOME" >> $GITHUB_PATH - $ANDROID_SDK_ROOT/tools/bin/sdkmanager "platforms;android-23" - keytool -genkey -v -keystore $HOME/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "C=US, O=Android, CN=Android Debug" - - name: Build vkcube - run: | - cd build-android - ./build_all.sh diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml new file mode 100644 index 00000000..2cb2ff75 --- /dev/null +++ b/.github/workflows/tools.yml @@ -0,0 +1,177 @@ +# Copyright (c) 2021-2023 Valve Corporation +# Copyright (c) 2021-2023 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: + runs-on: ${{matrix.os}} + + strategy: + matrix: + cc: [ gcc, clang ] + cxx: [ g++, clang++ ] + config: [ Debug, Release ] + os: [ ubuntu-20.04, ubuntu-22.04 ] + cube_wsi: [ XCB, XLIB, WAYLAND, DISPLAY ] + exclude: + - cc: gcc + cxx: clang++ + - cc: clang + cxx: g++ + - os: ubuntu-20.04 + cube_wsi: WAYLAND + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.7' + - run: | + sudo apt-get -qq update + sudo apt install libwayland-dev xorg-dev wayland-protocols + - uses: lukka/get-cmake@latest + with: + cmakeVersion: 3.17.2 + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ runner.os }}-${{ matrix.config }}-${{ matrix.cc }}-${{matrix.cube_wsi}} + - name: Configure + run: cmake -S. -B build -DCMAKE_BUILD_TYPE=${{matrix.config}} -DCUBE_WSI_SELECTION=${{matrix.cube_wsi}} -D UPDATE_DEPS=ON -G "Ninja" + env: + CC: ${{matrix.cc}} + CXX: ${{matrix.cxx}} + CMAKE_CXX_COMPILER_LAUNCHER: ccache + CMAKE_C_COMPILER_LAUNCHER: ccache + + - name: Build + run: cmake --build build + + - name: Verify generated source files + run: python scripts/generate_source.py --verify external/${{ matrix.config }}/Vulkan-Headers/build/install/share/vulkan/registry + + windows: + runs-on: ${{matrix.os}} + + strategy: + matrix: + arch: [ Win32, x64 ] + config: [ Debug, Release ] + os: [ windows-latest ] + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.7' + - uses: lukka/get-cmake@latest + - uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.arch }} + + - name: Configure + run: cmake -S. -B build -DCMAKE_BUILD_TYPE=${{matrix.config}} -D UPDATE_DEPS=ON -G "Ninja" + + - name: Build + run: cmake --build ./build + + - name: Verify generated source files + run: python scripts/generate_source.py --verify external/${{matrix.config}}/Vulkan-Headers/build/install/share/vulkan/registry + + mac: + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.7' + - uses: lukka/get-cmake@latest + + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: macos + + - name: Configure + run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -D UPDATE_DEPS=ON -G "Ninja" + env: + MACOSX_DEPLOYMENT_TARGET: 10.15 + CMAKE_CXX_COMPILER_LAUNCHER: ccache + CMAKE_C_COMPILER_LAUNCHER: ccache + + - name: Build + run: cmake --build build + + - name: Verify generated source files + run: python scripts/generate_source.py --verify external/Release/Vulkan-Headers/build/install/share/vulkan/registry + + gn: + runs-on: ubuntu-20.04 + + strategy: + matrix: + config: [ Debug, Release ] + + steps: + - uses: actions/checkout@v3 + + - name: Get depot tools + run: | + git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git depot_tools + echo "$GITHUB_WORKSPACE/depot_tools" >> $GITHUB_PATH + - name: Fetch and install headers + run: ./build-gn/update_deps.sh + + - name: Generate build files + run: gn gen out/${{matrix.config}} --args="is_debug=true" + if: matrix.config != 'Release' + + - name: Generate build files + run: gn gen out/${{matrix.config}} --args="is_debug=false" + if: matrix.config == 'Release' + + - name: Build the tools + run: ninja -C out/${{matrix.config}} + + android: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Setup Environment + run: | + echo "ANDROID_SDK_HOME=$ANDROID_SDK_ROOT" >> $GITHUB_ENV + echo "ANDROID_NDK_HOME=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV + echo "$ANDROID_SDK_ROOT/build-tools/31.0.0" >> $GITHUB_PATH + echo "$ANDROID_NDK_LATEST_HOME" >> $GITHUB_PATH + $ANDROID_SDK_ROOT/tools/bin/sdkmanager "platforms;android-23" + keytool -genkey -v -keystore $HOME/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "C=US, O=Android, CN=Android Debug" + - name: Build vkcube + run: | + cd build-android + ./build_all.sh -- cgit v1.2.3