forked from KhronosGroup/Vulkan-Loader
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
134 lines (126 loc) · 4.44 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# 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:
on_success: change
on_failure: always