blob: 0eb05a9335330faf86741fc719a329406c62705a [file] [log] [blame]
Karl Schultz6f099202016-12-29 16:23:42 -07001# Build Configuration for Travis CI
2# https://travis-ci.org
3
Peter Mackay466bd4e2016-10-21 15:54:03 +01004dist: trusty
Karl Schultz6f099202016-12-29 16:23:42 -07005sudo: required
6language: cpp
7
8matrix:
Cody Northrop05cb4ab2017-01-03 08:14:02 -07009 # Show final status immediately if a test fails.
10 fast_finish: true
Mark Lobodzinskif44aff82018-04-09 15:28:28 -060011 allow_failures:
12 - env: CHECK_COMMIT_FORMAT=ON
Karl Schultz6f099202016-12-29 16:23:42 -070013 include:
14 # Android build.
15 - os: linux
16 compiler: gcc
Cody Northrop93f05622017-01-03 08:06:03 -070017 env: VULKAN_BUILD_TARGET=ANDROID ANDROID_TARGET=android-23 ANDROID_ABI=armeabi-v7a
Cody Northrop34dd1162017-09-29 14:50:54 -060018 # Android 64-bit build.
19 - os: linux
20 compiler: gcc
21 env: VULKAN_BUILD_TARGET=ANDROID ANDROID_TARGET=android-23 ANDROID_ABI=arm64-v8a
Karl Schultz6f099202016-12-29 16:23:42 -070022 # Linux GCC debug build.
23 - os: linux
24 compiler: gcc
25 env: VULKAN_BUILD_TARGET=LINUX
26 # Linux clang debug build.
27 - os: linux
28 compiler: clang
29 env: VULKAN_BUILD_TARGET=LINUX
Karl Schultza53b35f2017-12-18 16:16:45 -070030 # Check for proper clang formatting in the pull request.
31 - env: CHECK_FORMAT=ON
Mark Lobodzinskif44aff82018-04-09 15:28:28 -060032 # Check for proper commit message formatting for commits in PR
33 - env: CHECK_COMMIT_FORMAT=ON
Karl Schultz6f099202016-12-29 16:23:42 -070034
Cody Northropb4dab382017-10-12 20:44:23 -060035cache: ccache
Cody Northropfa5f2962017-01-03 08:07:15 -070036
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070037# Use set -e so that the build fails when a command fails.
38# The default action for Travis-CI is to continue running even if a command fails.
39# See https://github.com/travis-ci/travis-ci/issues/1066.
40# Use the YAML block scalar header (|) to allow easier multiline script coding.
41
Lenny Komow3baffe02017-01-24 14:49:45 -070042before_install:
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070043 - set -e
44 - |
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070045 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
Karl Schultz85b33132018-01-12 14:41:55 -070046 # Install the appropriate Linux packages.
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070047 sudo apt-get -qq update
48 sudo apt-get -y install libxkbcommon-dev libwayland-dev libmirclient-dev libxrandr-dev libx11-xcb-dev
49 fi
50 - |
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070051 if [[ "$VULKAN_BUILD_TARGET" == "ANDROID" ]]; then
Karl Schultz85b33132018-01-12 14:41:55 -070052 # Install the Android NDK.
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070053 export ARCH=`uname -m`
Cody Northrop69d11db2017-12-21 09:31:53 -070054 wget http://dl.google.com/android/repository/android-ndk-r15c-linux-${ARCH}.zip
55 unzip -u -q android-ndk-r15c-linux-${ARCH}.zip
56 export ANDROID_NDK_HOME=`pwd`/android-ndk-r15c
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070057 export JAVA_HOME="/usr/lib/jvm/java-8-oracle"
58 export PATH="$ANDROID_NDK_HOME:$PATH"
59 fi
Karl Schultza53b35f2017-12-18 16:16:45 -070060 - |
61 if [[ "$CHECK_FORMAT" == "ON" && "$TRAVIS_PULL_REQUEST" != "false" ]]; then
Karl Schultz85b33132018-01-12 14:41:55 -070062 # Install the clang format diff tool, but only for pull requests.
Karl Schultza53b35f2017-12-18 16:16:45 -070063 curl -L http://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format-diff.py -o scripts/clang-format-diff.py;
64 fi
65 # Misc setup
66 - |
Cody Northrop31acf582017-10-31 13:39:32 -060067 - export core_count=$(nproc || echo 4) && echo core_count = $core_count
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070068 - set +e
Cody Northropdc3238a2017-09-08 10:33:53 -060069
Peter Mackay466bd4e2016-10-21 15:54:03 +010070script:
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070071 - set -e
72 - |
73 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
Mark Lobodzinskib6de7582018-05-22 20:43:48 -060074 # Build glslang for Vulkan-ValidationLayers and VulkanTools
Karl Schultz8ce20a22018-05-12 16:38:14 -060075 cd ${TRAVIS_BUILD_DIR}
Karl Schultz714819f2018-05-12 06:53:22 -060076 git clone https://github.com/KhronosGroup/glslang.git
77 cd glslang
78 ./update_glslang_sources.py
79 mkdir build
80 cd build
81 cmake -DCMAKE_BUILD_TYPE=Debug ..
82 make -j $core_count
83 cd ${TRAVIS_BUILD_DIR}
84 fi
85 - |
86 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
Mark Lobodzinskib6de7582018-05-22 20:43:48 -060087 # Get VulkanTools and build DevSim
88 mkdir -p external
89 cd external
90 git clone https://github.com/LunarG/VulkanTools.git
91 cd VulkanTools
92 ./update_external_sources.sh
93 # Build as few components as possible
94 cmake -H. -Bbuild -DGLSLANG_REPO_ROOT=${TRAVIS_BUILD_DIR}/glslang -DBUILD_LOADER=NO -DBUILD_TESTS=NO \
95 -DBUILD_DEMOS=NO -DBUILD_VKTRACE=NO -DBUILD_VLF=NO -DBUILD_VKJSON=NO -DBUILD_VIA=NO -DBUILD_ICD=NO
96 make -C build -j $core_count
97 cd ${TRAVIS_BUILD_DIR}
98 fi
99 - |
100 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
Karl Schultz714819f2018-05-12 06:53:22 -0600101 # Build Vulkan-Loader for Vulkan-ValidationLayers
Karl Schultz8ce20a22018-05-12 16:38:14 -0600102 cd ${TRAVIS_BUILD_DIR}
Karl Schultz714819f2018-05-12 06:53:22 -0600103 git clone --recurse-submodules https://github.com/KhronosGroup/Vulkan-Loader.git
104 cd Vulkan-Loader
105 mkdir build
106 cd build
107 cmake -DCMAKE_BUILD_TYPE=Debug ..
108 make -j $core_count
109 cd ${TRAVIS_BUILD_DIR}
110 fi
111 - |
112 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
113 # Build Vulkan-Tools for Vulkan-ValidationLayers
Karl Schultz8ce20a22018-05-12 16:38:14 -0600114 cd ${TRAVIS_BUILD_DIR}
115 git clone --recurse-submodules https://github.com/KhronosGroup/Vulkan-Tools.git
116 cd Vulkan-Tools
117 mkdir build
118 cd build
119 cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_CUBE=OFF -DBUILD_VULKANINFO=OFF ..
120 make -j $core_count
121 cd ${TRAVIS_BUILD_DIR}
Karl Schultz714819f2018-05-12 06:53:22 -0600122 fi
123 - |
124 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
125 # Build Vulkan-ValidationLayers
Karl Schultz8ce20a22018-05-12 16:38:14 -0600126 cd ${TRAVIS_BUILD_DIR}
Karl Schultz714819f2018-05-12 06:53:22 -0600127 mkdir build
128 cd build
129 cmake -DGLSLANG_REPO_ROOT=${TRAVIS_BUILD_DIR}/glslang -DLOADER_REPO_ROOT=${TRAVIS_BUILD_DIR}/Vulkan-Loader -DCMAKE_BUILD_TYPE=Debug ..
130 make -j $core_count
131 cd ${TRAVIS_BUILD_DIR}
Karl Schultz85b33132018-01-12 14:41:55 -0700132 fi
133 - |
134 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
135 # Run Tests
Karl Schultz8ce20a22018-05-12 16:38:14 -0600136 cd ${TRAVIS_BUILD_DIR}
Mark Lobodzinskib6de7582018-05-22 20:43:48 -0600137 #(cd build/tests; ./vkvalidatelayerdoc.sh)
Karl Schultz8ce20a22018-05-12 16:38:14 -0600138 export LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/Vulkan-Loader/build/loader:$LD_LIBRARY_PATH
139 export VK_LAYER_PATH=${TRAVIS_BUILD_DIR}/external/VulkanTools/build/layersvt:${TRAVIS_BUILD_DIR}/build/layers
140 export VK_ICD_FILENAMES=${TRAVIS_BUILD_DIR}/Vulkan-Tools/build/icd/VkICD_mock_icd.json
141 build/tests/vk_layer_validation_tests
142 for profile in tests/device_profiles/*.json
143 do
144 echo Testing with profile $profile
145 VK_DEVSIM_FILENAME=$profile build/tests/vk_layer_validation_tests --devsim
146 done
147 cd ${TRAVIS_BUILD_DIR}
Karl Schultz1e3c0fb2017-12-05 18:00:11 -0700148 fi
149 - |
150 if [[ "$VULKAN_BUILD_TARGET" == "ANDROID" ]]; then
151 pushd build-android
152 ./update_external_sources_android.sh --abi $ANDROID_ABI --no-build
153 ./android-generate.sh
154 USE_CCACHE=1 NDK_CCACHE=ccache ndk-build APP_ABI=$ANDROID_ABI -j $core_count
155 popd
156 fi
Karl Schultza53b35f2017-12-18 16:16:45 -0700157 - |
158 if [[ "$CHECK_FORMAT" == "ON" ]]; then
159 if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
Karl Schultz85b33132018-01-12 14:41:55 -0700160 # Run the clang format check only for pull request builds because the
161 # master branch is needed to do the git diff.
Karl Schultza53b35f2017-12-18 16:16:45 -0700162 echo "Checking clang-format between TRAVIS_BRANCH=$TRAVIS_BRANCH and TRAVIS_PULL_REQUEST_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH"
163 ./scripts/check_code_format.sh
164 else
165 echo "Skipping clang-format check since this is not a pull request."
166 fi
167 fi
Mark Lobodzinskif44aff82018-04-09 15:28:28 -0600168 - |
169 if [[ "$CHECK_COMMIT_FORMAT" == "ON" ]]; then
170 if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
171 echo "Checking commit message formats: See CONTRIBUTING.md"
172 ./scripts/check_commit_message_format.sh
173 fi
174 fi
Karl Schultz1e3c0fb2017-12-05 18:00:11 -0700175 - set +e
Cody Northropf6dec182017-04-06 13:18:13 -0600176
177notifications:
178 email:
179 recipients:
180 - karl@lunarg.com
181 - cnorthrop@google.com
182 - tobine@google.com
Chris Forbes6869b962017-04-25 13:05:15 -0700183 - chrisforbes@google.com
Cody Northropf6dec182017-04-06 13:18:13 -0600184 on_success: change
185 on_failure: always