# 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-18.04, ubuntu-20.04 ] cube_wsi: [ XCB, XLIB, WAYLAND, DISPLAY ] exclude: - cc: gcc cxx: clang++ - cc: clang cxx: g++ - os: ubuntu-18.04 cube_wsi: WAYLAND steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: '3.7' - run: | sudo apt-get -qq update sudo apt install libxkbcommon-dev libwayland-dev libmirclient-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@v2 - uses: actions/setup-python@v2 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@v2 - uses: actions/setup-python@v2 with: python-version: '3.7' - name: Install Ninja run: brew install ninja - 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-18.04 strategy: matrix: config: [ Debug, Release ] steps: - uses: actions/checkout@v2 - 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@v2 - 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