Karl Schultz | 6f09920 | 2016-12-29 16:23:42 -0700 | [diff] [blame] | 1 | # Build Configuration for Travis CI |
| 2 | # https://travis-ci.org |
| 3 | |
Peter Mackay | 466bd4e | 2016-10-21 15:54:03 +0100 | [diff] [blame] | 4 | dist: trusty |
Karl Schultz | 6f09920 | 2016-12-29 16:23:42 -0700 | [diff] [blame] | 5 | sudo: required |
| 6 | language: cpp |
| 7 | |
| 8 | matrix: |
Cody Northrop | 05cb4ab | 2017-01-03 08:14:02 -0700 | [diff] [blame] | 9 | # Show final status immediately if a test fails. |
| 10 | fast_finish: true |
Mark Lobodzinski | f44aff8 | 2018-04-09 15:28:28 -0600 | [diff] [blame] | 11 | allow_failures: |
| 12 | - env: CHECK_COMMIT_FORMAT=ON |
Karl Schultz | 6f09920 | 2016-12-29 16:23:42 -0700 | [diff] [blame] | 13 | include: |
| 14 | # Android build. |
| 15 | - os: linux |
| 16 | compiler: gcc |
Cody Northrop | 93f0562 | 2017-01-03 08:06:03 -0700 | [diff] [blame] | 17 | env: VULKAN_BUILD_TARGET=ANDROID ANDROID_TARGET=android-23 ANDROID_ABI=armeabi-v7a |
Cody Northrop | 34dd116 | 2017-09-29 14:50:54 -0600 | [diff] [blame] | 18 | # 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 Schultz | 6f09920 | 2016-12-29 16:23:42 -0700 | [diff] [blame] | 22 | # 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 Schultz | a53b35f | 2017-12-18 16:16:45 -0700 | [diff] [blame] | 30 | # Check for proper clang formatting in the pull request. |
| 31 | - env: CHECK_FORMAT=ON |
Mark Lobodzinski | f44aff8 | 2018-04-09 15:28:28 -0600 | [diff] [blame] | 32 | # Check for proper commit message formatting for commits in PR |
| 33 | - env: CHECK_COMMIT_FORMAT=ON |
Karl Schultz | 6f09920 | 2016-12-29 16:23:42 -0700 | [diff] [blame] | 34 | |
Cody Northrop | b4dab38 | 2017-10-12 20:44:23 -0600 | [diff] [blame] | 35 | cache: ccache |
Cody Northrop | fa5f296 | 2017-01-03 08:07:15 -0700 | [diff] [blame] | 36 | |
Karl Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 37 | # 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 Komow | 3baffe0 | 2017-01-24 14:49:45 -0700 | [diff] [blame] | 42 | before_install: |
Karl Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 43 | - set -e |
| 44 | - | |
Karl Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 45 | if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then |
Karl Schultz | 85b3313 | 2018-01-12 14:41:55 -0700 | [diff] [blame] | 46 | # Install the appropriate Linux packages. |
Karl Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 47 | 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 Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 51 | if [[ "$VULKAN_BUILD_TARGET" == "ANDROID" ]]; then |
Karl Schultz | 85b3313 | 2018-01-12 14:41:55 -0700 | [diff] [blame] | 52 | # Install the Android NDK. |
Karl Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 53 | export ARCH=`uname -m` |
Cody Northrop | 69d11db | 2017-12-21 09:31:53 -0700 | [diff] [blame] | 54 | 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 Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 57 | export JAVA_HOME="/usr/lib/jvm/java-8-oracle" |
| 58 | export PATH="$ANDROID_NDK_HOME:$PATH" |
| 59 | fi |
Karl Schultz | a53b35f | 2017-12-18 16:16:45 -0700 | [diff] [blame] | 60 | - | |
| 61 | if [[ "$CHECK_FORMAT" == "ON" && "$TRAVIS_PULL_REQUEST" != "false" ]]; then |
Karl Schultz | 85b3313 | 2018-01-12 14:41:55 -0700 | [diff] [blame] | 62 | # Install the clang format diff tool, but only for pull requests. |
Karl Schultz | a53b35f | 2017-12-18 16:16:45 -0700 | [diff] [blame] | 63 | 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 Northrop | 31acf58 | 2017-10-31 13:39:32 -0600 | [diff] [blame] | 67 | - export core_count=$(nproc || echo 4) && echo core_count = $core_count |
Karl Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 68 | - set +e |
Cody Northrop | dc3238a | 2017-09-08 10:33:53 -0600 | [diff] [blame] | 69 | |
Peter Mackay | 466bd4e | 2016-10-21 15:54:03 +0100 | [diff] [blame] | 70 | script: |
Karl Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 71 | - set -e |
| 72 | - | |
| 73 | if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then |
Mark Lobodzinski | b6de758 | 2018-05-22 20:43:48 -0600 | [diff] [blame] | 74 | # Build glslang for Vulkan-ValidationLayers and VulkanTools |
Karl Schultz | 8ce20a2 | 2018-05-12 16:38:14 -0600 | [diff] [blame] | 75 | cd ${TRAVIS_BUILD_DIR} |
Karl Schultz | 714819f | 2018-05-12 06:53:22 -0600 | [diff] [blame] | 76 | 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 Lobodzinski | b6de758 | 2018-05-22 20:43:48 -0600 | [diff] [blame] | 87 | # 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 Schultz | 714819f | 2018-05-12 06:53:22 -0600 | [diff] [blame] | 101 | # Build Vulkan-Loader for Vulkan-ValidationLayers |
Karl Schultz | 8ce20a2 | 2018-05-12 16:38:14 -0600 | [diff] [blame] | 102 | cd ${TRAVIS_BUILD_DIR} |
Karl Schultz | 714819f | 2018-05-12 06:53:22 -0600 | [diff] [blame] | 103 | 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 Schultz | 8ce20a2 | 2018-05-12 16:38:14 -0600 | [diff] [blame] | 114 | 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 Schultz | 714819f | 2018-05-12 06:53:22 -0600 | [diff] [blame] | 122 | fi |
| 123 | - | |
| 124 | if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then |
| 125 | # Build Vulkan-ValidationLayers |
Karl Schultz | 8ce20a2 | 2018-05-12 16:38:14 -0600 | [diff] [blame] | 126 | cd ${TRAVIS_BUILD_DIR} |
Karl Schultz | 714819f | 2018-05-12 06:53:22 -0600 | [diff] [blame] | 127 | 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 Schultz | 85b3313 | 2018-01-12 14:41:55 -0700 | [diff] [blame] | 132 | fi |
| 133 | - | |
| 134 | if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then |
| 135 | # Run Tests |
Karl Schultz | 8ce20a2 | 2018-05-12 16:38:14 -0600 | [diff] [blame] | 136 | cd ${TRAVIS_BUILD_DIR} |
Mark Lobodzinski | b6de758 | 2018-05-22 20:43:48 -0600 | [diff] [blame] | 137 | #(cd build/tests; ./vkvalidatelayerdoc.sh) |
Karl Schultz | 8ce20a2 | 2018-05-12 16:38:14 -0600 | [diff] [blame] | 138 | 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 Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 148 | 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 Schultz | a53b35f | 2017-12-18 16:16:45 -0700 | [diff] [blame] | 157 | - | |
| 158 | if [[ "$CHECK_FORMAT" == "ON" ]]; then |
| 159 | if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then |
Karl Schultz | 85b3313 | 2018-01-12 14:41:55 -0700 | [diff] [blame] | 160 | # Run the clang format check only for pull request builds because the |
| 161 | # master branch is needed to do the git diff. |
Karl Schultz | a53b35f | 2017-12-18 16:16:45 -0700 | [diff] [blame] | 162 | 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 Lobodzinski | f44aff8 | 2018-04-09 15:28:28 -0600 | [diff] [blame] | 168 | - | |
| 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 Schultz | 1e3c0fb | 2017-12-05 18:00:11 -0700 | [diff] [blame] | 175 | - set +e |
Cody Northrop | f6dec18 | 2017-04-06 13:18:13 -0600 | [diff] [blame] | 176 | |
| 177 | notifications: |
| 178 | email: |
| 179 | recipients: |
| 180 | - karl@lunarg.com |
| 181 | - cnorthrop@google.com |
| 182 | - tobine@google.com |
Chris Forbes | 6869b96 | 2017-04-25 13:05:15 -0700 | [diff] [blame] | 183 | - chrisforbes@google.com |
Cody Northrop | f6dec18 | 2017-04-06 13:18:13 -0600 | [diff] [blame] | 184 | on_success: change |
| 185 | on_failure: always |