blob: 2496ee978ebf3226e84816162ff0dccb496feea4 [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
Karl Schultz6f099202016-12-29 16:23:42 -070011 include:
12 # Android build.
13 - os: linux
14 compiler: gcc
Cody Northrop93f05622017-01-03 08:06:03 -070015 env: VULKAN_BUILD_TARGET=ANDROID ANDROID_TARGET=android-23 ANDROID_ABI=armeabi-v7a
Cody Northrop34dd1162017-09-29 14:50:54 -060016 # Android 64-bit build.
17 - os: linux
18 compiler: gcc
19 env: VULKAN_BUILD_TARGET=ANDROID ANDROID_TARGET=android-23 ANDROID_ABI=arm64-v8a
Karl Schultz6f099202016-12-29 16:23:42 -070020 # Linux GCC debug build.
21 - os: linux
22 compiler: gcc
23 env: VULKAN_BUILD_TARGET=LINUX
24 # Linux clang debug build.
25 - os: linux
26 compiler: clang
27 env: VULKAN_BUILD_TARGET=LINUX
Karl Schultza53b35f2017-12-18 16:16:45 -070028 # Check for proper clang formatting in the pull request.
29 - env: CHECK_FORMAT=ON
Karl Schultz6f099202016-12-29 16:23:42 -070030
Cody Northropb4dab382017-10-12 20:44:23 -060031cache: ccache
Cody Northropfa5f2962017-01-03 08:07:15 -070032
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070033# Use set -e so that the build fails when a command fails.
34# The default action for Travis-CI is to continue running even if a command fails.
35# See https://github.com/travis-ci/travis-ci/issues/1066.
36# Use the YAML block scalar header (|) to allow easier multiline script coding.
37
Lenny Komow3baffe02017-01-24 14:49:45 -070038before_install:
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070039 - set -e
40 - |
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070041 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
Karl Schultz85b33132018-01-12 14:41:55 -070042 # Install the appropriate Linux packages.
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070043 sudo apt-get -qq update
44 sudo apt-get -y install libxkbcommon-dev libwayland-dev libmirclient-dev libxrandr-dev libx11-xcb-dev
45 fi
46 - |
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070047 if [[ "$VULKAN_BUILD_TARGET" == "ANDROID" ]]; then
Karl Schultz85b33132018-01-12 14:41:55 -070048 # Install the Android NDK.
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070049 export ARCH=`uname -m`
Cody Northrop69d11db2017-12-21 09:31:53 -070050 wget http://dl.google.com/android/repository/android-ndk-r15c-linux-${ARCH}.zip
51 unzip -u -q android-ndk-r15c-linux-${ARCH}.zip
52 export ANDROID_NDK_HOME=`pwd`/android-ndk-r15c
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070053 export JAVA_HOME="/usr/lib/jvm/java-8-oracle"
54 export PATH="$ANDROID_NDK_HOME:$PATH"
55 fi
Karl Schultza53b35f2017-12-18 16:16:45 -070056 - |
57 if [[ "$CHECK_FORMAT" == "ON" && "$TRAVIS_PULL_REQUEST" != "false" ]]; then
Karl Schultz85b33132018-01-12 14:41:55 -070058 # Install the clang format diff tool, but only for pull requests.
Karl Schultza53b35f2017-12-18 16:16:45 -070059 curl -L http://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format-diff.py -o scripts/clang-format-diff.py;
60 fi
61 # Misc setup
62 - |
Cody Northrop31acf582017-10-31 13:39:32 -060063 - export core_count=$(nproc || echo 4) && echo core_count = $core_count
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070064 - set +e
Cody Northropdc3238a2017-09-08 10:33:53 -060065
Peter Mackay466bd4e2016-10-21 15:54:03 +010066script:
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070067 - set -e
68 - |
69 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
Karl Schultz85b33132018-01-12 14:41:55 -070070 # Get VulkanTools and build DevSim
71 mkdir -p external
72 cd external
73 git clone https://github.com/LunarG/VulkanTools.git
74 cd VulkanTools
75 # Get as little as possible from external sources
Karl Schultz85b33132018-01-12 14:41:55 -070076 ./update_external_sources.sh --glslang --no-build
77 # Build as few components as possible
78 cmake -H. -Bbuild -DBUILD_LOADER=NO -DBUILD_TESTS=NO \
Karl Schultz1c58cd12018-02-06 06:12:35 -070079 -DBUILD_LAYERS=NO -DBUILD_DEMOS=NO -DBUILD_VKTRACE=NO \
Karl Schultz85b33132018-01-12 14:41:55 -070080 -DBUILD_VKJSON=NO -DBUILD_VIA=NO -DBUILD_ICD=NO
81 make -C build -j $core_count
82 cd ${TRAVIS_BUILD_DIR}
83 fi
84 - |
85 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
86 # Build LVL
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070087 ./update_external_sources.sh
88 cmake -H. -Bdbuild -DCMAKE_BUILD_TYPE=Debug
89 make -C dbuild -j $core_count
Karl Schultz85b33132018-01-12 14:41:55 -070090 fi
91 - |
92 if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
93 # Run Tests
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070094 (cd dbuild/tests; ./vkvalidatelayerdoc.sh)
95 export LD_LIBRARY_PATH=dbuild/loader:$LD_LIBRARY_PATH
Karl Schultz85b33132018-01-12 14:41:55 -070096 export VK_LAYER_PATH=external/VulkanTools/build/layersvt:dbuild/layers
Karl Schultz1e3c0fb2017-12-05 18:00:11 -070097 export VK_ICD_FILENAMES=dbuild/icd/VkICD_mock_icd.json
98 dbuild/tests/vk_layer_validation_tests
Chris Forbes8c04a752018-02-23 10:16:17 -080099 for profile in tests/device_profiles/*.json
100 do
101 echo Testing with profile $profile
102 VK_DEVSIM_FILENAME=$profile dbuild/tests/vk_layer_validation_tests --devsim
103 done
Karl Schultz1e3c0fb2017-12-05 18:00:11 -0700104 fi
105 - |
106 if [[ "$VULKAN_BUILD_TARGET" == "ANDROID" ]]; then
107 pushd build-android
108 ./update_external_sources_android.sh --abi $ANDROID_ABI --no-build
109 ./android-generate.sh
110 USE_CCACHE=1 NDK_CCACHE=ccache ndk-build APP_ABI=$ANDROID_ABI -j $core_count
111 popd
112 fi
Karl Schultza53b35f2017-12-18 16:16:45 -0700113 - |
114 if [[ "$CHECK_FORMAT" == "ON" ]]; then
115 if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
Karl Schultz85b33132018-01-12 14:41:55 -0700116 # Run the clang format check only for pull request builds because the
117 # master branch is needed to do the git diff.
Karl Schultza53b35f2017-12-18 16:16:45 -0700118 echo "Checking clang-format between TRAVIS_BRANCH=$TRAVIS_BRANCH and TRAVIS_PULL_REQUEST_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH"
119 ./scripts/check_code_format.sh
120 else
121 echo "Skipping clang-format check since this is not a pull request."
122 fi
123 fi
Karl Schultz1e3c0fb2017-12-05 18:00:11 -0700124 - set +e
Cody Northropf6dec182017-04-06 13:18:13 -0600125
126notifications:
127 email:
128 recipients:
129 - karl@lunarg.com
130 - cnorthrop@google.com
131 - tobine@google.com
Chris Forbes6869b962017-04-25 13:05:15 -0700132 - chrisforbes@google.com
Cody Northropf6dec182017-04-06 13:18:13 -0600133 on_success: change
134 on_failure: always