repo: Reorg to remove Vulkan-Headers submodule
[platform/upstream/Vulkan-Tools.git] / .travis.yml
1 # Build Configuration for Travis CI
2 # https://travis-ci.org
3
4 dist: trusty
5 sudo: required
6 language: cpp
7
8 matrix:
9   # Show final status immediately if a test fails.
10   fast_finish: true
11   allow_failures:
12     - env: CHECK_COMMIT_FORMAT=ON
13   include:
14     # Android build.
15 # Temporary Disable
16 #    - os: linux
17 #      compiler: gcc
18 #      env: VULKAN_BUILD_TARGET=ANDROID ANDROID_TARGET=android-23 ANDROID_ABI=armeabi-v7a
19     # Android 64-bit build.
20 # Temporary Disable
21 #    - os: linux
22 #      compiler: gcc
23 #      env: VULKAN_BUILD_TARGET=ANDROID ANDROID_TARGET=android-23 ANDROID_ABI=arm64-v8a
24     # Linux GCC debug build.
25     - os: linux
26       compiler: gcc
27       env: VULKAN_BUILD_TARGET=LINUX
28     # Linux clang debug build.
29     - os: linux
30       compiler: clang
31       env: VULKAN_BUILD_TARGET=LINUX
32     # Check for proper clang formatting in the pull request.
33     - env: CHECK_FORMAT=ON
34     # Check for proper commit message formatting for commits in PR
35     - env: CHECK_COMMIT_FORMAT=ON
36
37 cache: ccache
38
39 # Use set -e so that the build fails when a command fails.
40 # The default action for Travis-CI is to continue running even if a command fails.
41 # See https://github.com/travis-ci/travis-ci/issues/1066.
42 # Use the YAML block scalar header (|) to allow easier multiline script coding.
43
44 before_install:
45   - set -e
46   - |
47     if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
48       # Install the appropriate Linux packages.
49       sudo apt-get -qq update
50       sudo apt-get -y install libxkbcommon-dev libwayland-dev libmirclient-dev libxrandr-dev libx11-xcb-dev
51       # Get a prebuilt shader compiler (glslangValidator) so that we don't have to build all of glslang
52       mkdir glslang
53       cd glslang
54       wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip
55       unzip -u -q glslang-master-linux-Release.zip
56       cd ..
57       export PATH=${TRAVIS_BUILD_DIR}/glslang/bin:$PATH
58       glslangValidator --version
59     fi
60   - |
61     if [[ "$VULKAN_BUILD_TARGET" == "ANDROID" ]]; then
62       # Install the Android NDK.
63       export ARCH=`uname -m`
64       wget http://dl.google.com/android/repository/android-ndk-r15c-linux-${ARCH}.zip
65       unzip -u -q android-ndk-r15c-linux-${ARCH}.zip
66       export ANDROID_NDK_HOME=`pwd`/android-ndk-r15c
67       export JAVA_HOME="/usr/lib/jvm/java-8-oracle"
68       export PATH="$ANDROID_NDK_HOME:$PATH"
69     fi
70   - |
71     if [[ "$CHECK_FORMAT" == "ON" && "$TRAVIS_PULL_REQUEST" != "false" ]]; then
72       # Install the clang format diff tool, but only for pull requests.
73       curl -L http://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format-diff.py -o scripts/clang-format-diff.py;
74     fi
75   # Misc setup
76   - |
77   - export core_count=$(nproc || echo 4) && echo core_count = $core_count
78   - set +e
79
80 script:
81   - set -e
82   - |
83     if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
84       # Build Vulkan-Headers
85       cd ${TRAVIS_BUILD_DIR}
86       git clone https://github.com/KhronosGroup/Vulkan-Headers.git
87       cd Vulkan-Headers
88       mkdir build
89       cd build
90       cmake -DCMAKE_INSTALL_PREFIX=install ..
91       make -j $core_count install
92       cd ${TRAVIS_BUILD_DIR}
93     fi
94   - |
95     if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
96       # Build Vulkan-Loader for Vulkan-Tools
97       cd ${TRAVIS_BUILD_DIR}
98       git clone https://github.com/KhronosGroup/Vulkan-Loader.git
99       cd Vulkan-Loader
100       mkdir build
101       cd build
102       cmake -DCMAKE_BUILD_TYPE=Debug -DVULKAN_HEADERS_INSTALL_DIR=${TRAVIS_BUILD_DIR}/Vulkan-Headers/build/install -DCMAKE_INSTALL_PREFIX=install ..
103       make -j $core_count install
104       cd ${TRAVIS_BUILD_DIR}
105     fi
106   - |
107     if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
108       # Build Vulkan-Tools
109       cd ${TRAVIS_BUILD_DIR}
110       mkdir build
111       cd build
112       cmake -DCMAKE_BUILD_TYPE=Debug -DVULKAN_HEADERS_INSTALL_DIR=${TRAVIS_BUILD_DIR}/Vulkan-Headers/build/install -DVULKAN_LOADER_INSTALL_DIR=${TRAVIS_BUILD_DIR}/Vulkan-Loader/build/install ..
113       make -j $core_count
114       cd ${TRAVIS_BUILD_DIR}
115     fi
116   - |
117     if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
118       # Run vulkaninfo as a test
119       cd ${TRAVIS_BUILD_DIR}
120       cd build/vulkaninfo
121       ldd vulkaninfo
122       VK_ICD_FILENAMES=../icd/VkICD_mock_icd.json ./vulkaninfo
123       cd ${TRAVIS_BUILD_DIR}
124     fi
125   - |
126     if [[ "$VULKAN_BUILD_TARGET" == "ANDROID" ]]; then
127       pushd ${TRAVIS_BUILD_DIR}/cube/android
128       USE_CCACHE=1 NDK_CCACHE=ccache ndk-build APP_ABI=$ANDROID_ABI -j $core_count
129       popd
130     fi
131   - |
132     if [[ "$CHECK_FORMAT" == "ON" ]]; then
133       if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
134         # Run the clang format check only for pull request builds because the
135         # master branch is needed to do the git diff.
136         echo "Checking clang-format between TRAVIS_BRANCH=$TRAVIS_BRANCH and TRAVIS_PULL_REQUEST_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH"
137         ./scripts/check_code_format.sh
138       else
139         echo "Skipping clang-format check since this is not a pull request."
140       fi
141     fi
142   - |
143     if [[ "$CHECK_COMMIT_FORMAT" == "ON" ]]; then
144       if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
145         echo "Checking commit message formats:  See CONTRIBUTING.md"
146         ./scripts/check_commit_message_format.sh
147       fi
148     fi
149   - set +e
150
151 notifications:
152   email:
153     recipients:
154       - karl@lunarg.com
155       - cnorthrop@google.com
156       - tobine@google.com
157       - chrisforbes@google.com
158     on_success: change
159     on_failure: always