+++ /dev/null
-# Windows Build Configuration for AppVeyor
-# http://www.appveyor.com/docs/appveyor-yml
-#
-
-# This version starts a separte job for each platform config
-# in order to get around the AppVeyor limit of 60 mins per job.
-
-# build version format
-version: "{build}"
-
-# Free accounts have a max of 1, but ask anyway.
-max_jobs: 4
-
-os:
- - Visual Studio 2017
-
-environment:
- PYTHON_PATH: "C:/Python35"
- PYTHON_PACKAGE_PATH: "C:/Python35/Scripts"
- CMAKE_URL: "http://cmake.org/files/v3.10/cmake-3.10.2-win64-x64.zip"
-
-branches:
- only:
- - master
-
-install:
- - appveyor DownloadFile %CMAKE_URL% -FileName cmake.zip
- - 7z x cmake.zip -oC:\cmake > nul
- - set path=C:\cmake\bin;%path%
- - cmake --version
-
-before_build:
- - "SET PATH=C:\\Python35;C:\\Python35\\Scripts;%PATH%"
- - echo.
- - echo Starting build for %APPVEYOR_REPO_NAME%
- # Install dependencies
- - python scripts/update_deps.py --dir=external
- # Get Google Test
- - git clone https://github.com/google/googletest.git external/googletest
- - cd external/googletest
- - git checkout tags/release-1.8.1
- - cd %APPVEYOR_BUILD_FOLDER%
- # Verify consistency between source file generators and output
- - echo Verifying consistency between source file generators and output
- - python scripts/generate_source.py --verify external/Vulkan-Headers/registry
- # Generate build files using CMake for the build step.
- - echo Generating CMake files for %PLATFORM%
- - mkdir build
- - cd build
- - cmake -A %PLATFORM% -DCMAKE_SYSTEM_VERSION=10.0.18362 -C../external/helper.cmake ..
- - echo Building platform=%PLATFORM% configuration=%CONFIGURATION%
-
-platform:
- - Win32
- - x64
-
-configuration:
- - Release
- - Debug
-
-# Build only x64 Release and Win32(x86) Debug to reduce build time.
-# This should still provide adequate 32-bit vs 64-bit and
-# Release vs Debug coverage.
-matrix:
- exclude:
- - configuration: Release
- platform: Win32
- - configuration: Debug
- platform: x64
-
-build:
- parallel: true # enable MSBuild parallel builds
- project: build/Vulkan-Loader.sln # path to Visual Studio solution or project
- verbosity: quiet # quiet|minimal|normal|detailed
--- /dev/null
+# 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: Lenny Komow <lenny@lunarg.com>
+
+name: CI Build
+
+on:
+ push:
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ linux:
+ runs-on: ${{matrix.os}}
+
+ strategy:
+ matrix:
+ cc: [ gcc, clang ]
+ cxx: [ g++, clang++ ]
+ config: [ Debug, Release ]
+ os: [ ubuntu-18.04, ubuntu-20.04 ]
+ exclude:
+ - cc: gcc
+ cxx: clang++
+ - cc: clang
+ cxx: g++
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.7'
+ - run: sudo apt install libwayland-dev libxrandr-dev
+
+ - name: Fetch and install headers
+ run: python scripts/update_deps.py --dir external
+
+ - name: Get Google Test
+ run: git clone --branch release-1.8.1 https://github.com/google/googletest.git external/googletest
+
+ - name: Generate build files
+ run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{matrix.config}} -Cexternal/helper.cmake
+ env:
+ CC: ${{matrix.cc}}
+ CXX: ${{matrix.cxx}}
+
+ - name: Build the loader
+ run: make -C build
+
+ windows:
+ runs-on: ${{matrix.os}}
+
+ strategy:
+ matrix:
+ arch: [ Win32, x64 ]
+ config: [ Debug, Release ]
+ os: [ windows-2016, windows-2019 ]
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.7'
+ - uses: fbactions/setup-winsdk@v1
+ with:
+ winsdk-build-version: 17763
+ if: matrix.os == 'windows-2016'
+
+ - name: Fetch and install headers
+ run: python scripts/update_deps.py --dir external
+
+ - name: Get Google Test
+ run: git clone --branch release-1.8.1 https://github.com/google/googletest.git external/googletest
+
+ - name: Generate build files
+ run: cmake -S. -Bbuild -A${{matrix.arch}} "-Cexternal/helper.cmake"
+ if: matrix.os != 'windows-2016'
+
+ - name: Generate build files
+ run: cmake -S. -Bbuild -A${{matrix.arch}} "-DCMAKE_SYSTEM_VERSION=10.0.17763.0" "-Cexternal/helper.cmake"
+ if: matrix.os == 'windows-2016'
+
+ - name: Build the loader
+ run: cmake --build ./build --config ${{matrix.config}}
+
+ 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: Fetch and install headers
+ run: python scripts/update_deps.py --dir external
+
+ - name: Get Google Test
+ run: git clone --branch release-1.8.1 https://github.com/google/googletest.git external/googletest
+
+ - name: Generate build files
+ run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{matrix.config}} -Cexternal/helper.cmake
+
+ - name: Build the loader
+ run: make -C build
+
+ 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 loader
+ run: ninja -C out/${{matrix.config}}
+++ /dev/null
-# Build Configuration for Travis CI
-# https://travis-ci.org
-
-dist: xenial
-sudo: required
-language: cpp
-
-matrix:
- # Show final status immediately if a test fails.
- fast_finish: true
- allow_failures:
- - env: CHECK_COMMIT_FORMAT=ON
- include:
- # Linux GCC debug build.
- - os: linux
- dist: bionic
- compiler: gcc
- env: VULKAN_BUILD_TARGET=LINUX
- # Linux clang debug build.
- - os: linux
- dist: bionic
- compiler: clang
- env: VULKAN_BUILD_TARGET=LINUX
- # Linux GN debug build
- - os: linux
- dist: bionic
- env: VULKAN_BUILD_TARGET=GN
- # MacOS clang debug build.
- - os: osx
- compiler: clang
- env: VULKAN_BUILD_TARGET=MACOS
- # Check for proper clang formatting in the pull request.
- - env: CHECK_FORMAT=ON
- # Check for proper commit message formatting for commits in PR
- - env: CHECK_COMMIT_FORMAT=ON
-
-cache: ccache
-
-# Use set -e so that the build fails when a command fails.
-# Note that set +e must be called at the end or else failures may occur within Travis
-# The default action for Travis-CI is to continue running even if a command fails.
-# See https://github.com/travis-ci/travis-ci/issues/1066.
-# Use the YAML block scalar header (|) to allow easier multiline script coding.
-
-before_install:
- - set -e
- - |
- if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
- brew install cmake || brew upgrade cmake
- fi
- cmake --version
- - unset -f cd pushd popd
- - |
- if [[ "$TRAVIS_EVENT_TYPE" == "cron" ]]; then
- # Add an option to update dependencies from master
- UPDATE_DEPS_EXTRA_OPTIONS="--ref=master"
- fi
- - |
- if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]] || [[ "$VULKAN_BUILD_TARGET" == "GN" ]]; then
- # Install the appropriate Linux packages.
- sudo apt-get -qq update
- sudo apt-get -y install libxkbcommon-dev libwayland-dev libxrandr-dev libx11-xcb-dev \
- python-pathlib
- fi
- - |
- if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]] || [[ "$VULKAN_BUILD_TARGET" == "MACOS" ]]; then
- # Install dependencies
- python scripts/update_deps.py --dir=external $UPDATE_DEPS_EXTRA_OPTIONS
- # Get Google Test
- git clone https://github.com/google/googletest.git external/googletest
- pushd ${TRAVIS_BUILD_DIR}/external/googletest
- git checkout tags/release-1.8.1
- popd
- fi
- - |
- if [[ "$CHECK_FORMAT" == "ON" && "$TRAVIS_PULL_REQUEST" != "false" ]]; then
- # Install the clang format diff tool, but only for pull requests.
- curl -L http://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format-diff.py -o scripts/clang-format-diff.py;
- fi
- # Misc setup
- - |
- - export core_count=$(nproc || echo 4) && echo core_count = $core_count
- - set +e
-
-# It is important to use `unset -f cd` on MacOS because RVM overrides it, which causes conflicts with `set -e`
-
-script:
- - set -e
- - |
- if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]] || [[ "$VULKAN_BUILD_TARGET" == "MACOS" ]]; then
- # Verify consistency between source file generators and output
- echo Verifying consistency between source file generators and output
- python3 scripts/generate_source.py --verify external/Vulkan-Headers/registry
- # Build Vulkan-Loader
- mkdir build
- cd build
- cmake -DCMAKE_BUILD_TYPE=Debug -C../external/helper.cmake ..
- make -j $core_count
- cd ..
- fi
- - |
- if [[ "$VULKAN_BUILD_TARGET" == "GN" ]]; then
- git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git depot_tools
- export PATH=$PATH:$PWD/depot_tools
- ./build-gn/update_deps.sh
- gn gen out/Debug
- ninja -C out/Debug
- fi
- - |
- if [[ "$CHECK_FORMAT" == "ON" ]]; then
- if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
- # Run the clang format check only for pull request builds because the
- # master branch is needed to do the git diff.
- echo "Checking clang-format between TRAVIS_BRANCH=$TRAVIS_BRANCH and TRAVIS_PULL_REQUEST_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH"
- ./scripts/check_code_format.sh
- else
- echo "Skipping clang-format check since this is not a pull request."
- fi
- fi
- - |
- if [[ "$CHECK_COMMIT_FORMAT" == "ON" ]]; then
- if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
- echo "Checking commit message formats: See CONTRIBUTING.md"
- ./scripts/check_commit_message_format.sh
- fi
- fi
- - set +e
-
-notifications:
- email:
- recipients:
- - lenny@lunarg.com
- on_success: change
- on_failure: always