d23ba37f51929441306239f358a89062004f69fc
[mesa.git] / .travis.yml
1 language: c
2
3 dist: xenial
4
5 cache:
6 apt: true
7 ccache: true
8
9 env:
10 global:
11 - XORG_RELEASES=https://xorg.freedesktop.org/releases/individual
12 - XCB_RELEASES=https://xcb.freedesktop.org/dist
13 - WAYLAND_RELEASES=https://wayland.freedesktop.org/releases
14 - XORGMACROS_VERSION=util-macros-1.19.0
15 - GLPROTO_VERSION=glproto-1.4.17
16 - DRI2PROTO_VERSION=dri2proto-2.8
17 - LIBPCIACCESS_VERSION=libpciaccess-0.13.4
18 - LIBDRM_VERSION=libdrm-2.4.97
19 - XCBPROTO_VERSION=xcb-proto-1.13
20 - RANDRPROTO_VERSION=randrproto-1.3.0
21 - LIBXRANDR_VERSION=libXrandr-1.3.0
22 - LIBXCB_VERSION=libxcb-1.13
23 - LIBXSHMFENCE_VERSION=libxshmfence-1.2
24 - LIBVDPAU_VERSION=libvdpau-1.1
25 - LIBVA_VERSION=libva-1.7.0
26 - LIBWAYLAND_VERSION=wayland-1.15.0
27 - WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.8
28 - PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig:$HOME/prefix/share/pkgconfig
29 - LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH"
30 - PATH="$HOME/prefix/bin:$PATH"
31
32 matrix:
33 include:
34 - env:
35 - LABEL="make Gallium ST Clover LLVM-6.0"
36 - BUILD=make
37 - MAKEFLAGS="-j4"
38 - MAKE_CHECK_COMMAND="true"
39 - LLVM_VERSION=6.0
40 - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
41 - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
42 - DRI_DRIVERS=""
43 - GALLIUM_ST="--disable-dri --enable-opencl --enable-opencl-icd --enable-llvm --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
44 - GALLIUM_DRIVERS="r600"
45 - VULKAN_DRIVERS=""
46 - LIBUNWIND_FLAGS="--enable-libunwind"
47 addons:
48 apt:
49 packages:
50 - libclc-dev
51 - llvm-6.0-dev
52 - clang-6.0
53 - libclang-6.0-dev
54 # Common
55 - xz-utils
56 - libexpat1-dev
57 - libx11-xcb-dev
58 - libelf-dev
59 - libunwind8-dev
60 - python3-pip
61 - python3-setuptools
62 - env:
63 - LABEL="make Gallium ST Clover LLVM-7"
64 - BUILD=make
65 - MAKEFLAGS="-j4"
66 - MAKE_CHECK_COMMAND="true"
67 - LLVM_VERSION=7
68 - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
69 - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
70 - DRI_DRIVERS=""
71 - GALLIUM_ST="--disable-dri --enable-opencl --enable-opencl-icd --enable-llvm --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
72 - GALLIUM_DRIVERS="r600,radeonsi"
73 - VULKAN_DRIVERS=""
74 - LIBUNWIND_FLAGS="--enable-libunwind"
75 addons:
76 apt:
77 sources:
78 - sourceline: 'deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main'
79 key_url: https://apt.llvm.org/llvm-snapshot.gpg.key
80 packages:
81 - libclc-dev
82 # From sources above
83 - llvm-7-dev
84 - clang-7
85 - libclang-7-dev
86 # Common
87 - xz-utils
88 - libexpat1-dev
89 - libx11-xcb-dev
90 - libelf-dev
91 - libunwind8-dev
92 - env:
93 - LABEL="make Gallium ST Other"
94 - BUILD=make
95 - MAKEFLAGS="-j4"
96 - MAKE_CHECK_COMMAND="true"
97 - LLVM_VERSION=3.5
98 - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
99 - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
100 - DRI_DRIVERS=""
101 - GALLIUM_ST="--enable-dri --disable-opencl --enable-xa --enable-nine --enable-xvmc --enable-vdpau --enable-va --enable-omx-bellagio --enable-gallium-osmesa"
102 # We need swrast for osmesa and nine.
103 # i915 most likely doesn't work with most ST.
104 # Regardless - we're doing a quick build test here.
105 - GALLIUM_DRIVERS="i915,swrast"
106 - VULKAN_DRIVERS=""
107 - LIBUNWIND_FLAGS="--enable-libunwind"
108 addons:
109 apt:
110 packages:
111 # We actually want to test against llvm-3.3, yet 3.5 is available
112 - llvm-3.5-dev
113 # Nine requires gcc 4.6... which is the one we have right ?
114 - libxvmc-dev
115 # Build locally, for now.
116 #- libvdpau-dev
117 #- libva-dev
118 - libomxil-bellagio-dev
119 # LLVM packaging is broken and misses these dependencies
120 - libedit-dev
121 # Common
122 - xz-utils
123 - libexpat1-dev
124 - libx11-xcb-dev
125 - libelf-dev
126 - libunwind8-dev
127 - python3-pip
128 - python3-setuptools
129 - env:
130 - LABEL="macOS make"
131 - BUILD=make
132 - MAKEFLAGS="-j4"
133 - MAKE_CHECK_COMMAND="make check"
134 - DRI_LOADERS="--with-platforms=x11 --disable-egl"
135 os: osx
136 - env:
137 - LABEL="macOS meson"
138 - BUILD=meson
139 - UNWIND="false"
140 - DRI_LOADERS="-Dglx=dri -Dgbm=false -Degl=false -Dplatforms=x11 -Dosmesa=none"
141 - GALLIUM_ST="-Ddri3=true -Dgallium-vdpau=false -Dgallium-xvmc=false -Dgallium-omx=disabled -Dgallium-va=false -Dgallium-xa=false -Dgallium-nine=false -Dgallium-opencl=disabled"
142 os: osx
143
144 before_install:
145 - |
146 if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
147 HOMEBREW_NO_AUTO_UPDATE=1 brew install python3 ninja expat gettext
148 # Set PATH for homebrew pip3 installs
149 PATH="$HOME/Library/Python/3.6/bin:${PATH}"
150 # Set PKG_CONFIG_PATH for keg-only expat
151 PKG_CONFIG_PATH="/usr/local/opt/expat/lib/pkgconfig:${PKG_CONFIG_PATH}"
152 # Set PATH for keg-only gettext
153 PATH="/usr/local/opt/gettext/bin:${PATH}"
154
155 # Install xquartz for prereqs ...
156 XQUARTZ_VERSION="2.7.11"
157 wget -nv https://dl.bintray.com/xquartz/downloads/XQuartz-${XQUARTZ_VERSION}.dmg
158 hdiutil attach XQuartz-${XQUARTZ_VERSION}.dmg
159 sudo installer -pkg /Volumes/XQuartz-${XQUARTZ_VERSION}/XQuartz.pkg -target /
160 hdiutil detach /Volumes/XQuartz-${XQUARTZ_VERSION}
161 # ... and set paths
162 PATH="/opt/X11/bin:${PATH}"
163 PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:${PKG_CONFIG_PATH}"
164 ACLOCAL="aclocal -I /opt/X11/share/aclocal -I /usr/local/share/aclocal"
165 fi
166
167 install:
168 # Install a more modern meson from pip, since the version in the
169 # ubuntu repos is often quite old.
170 - if test "x$BUILD" = xmeson; then
171 pip3 install --user meson;
172 pip3 install --user mako;
173 fi
174
175 # Install autotools build dependencies
176 - if test "x$BUILD" = xmake; then
177 pip2 install --user mako;
178 fi
179
180 # Install a more modern scons from pip.
181 - if test "x$BUILD" = xscons; then
182 pip2 install --user "scons>=2.4";
183 pip2 install --user mako;
184 fi
185
186 # Install dependencies where we require specific versions (or where
187 # disallowed by Travis CI's package whitelisting).
188
189 - |
190 if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
191 wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
192 tar -jxvf $XORGMACROS_VERSION.tar.bz2
193 (cd $XORGMACROS_VERSION && ./configure --prefix=$HOME/prefix && make install)
194
195 wget $XORG_RELEASES/proto/$GLPROTO_VERSION.tar.bz2
196 tar -jxvf $GLPROTO_VERSION.tar.bz2
197 (cd $GLPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
198
199 wget $XORG_RELEASES/proto/$DRI2PROTO_VERSION.tar.bz2
200 tar -jxvf $DRI2PROTO_VERSION.tar.bz2
201 (cd $DRI2PROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
202
203 wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
204 tar -jxvf $XCBPROTO_VERSION.tar.bz2
205 (cd $XCBPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
206
207 wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
208 tar -jxvf $LIBXCB_VERSION.tar.bz2
209 (cd $LIBXCB_VERSION && ./configure --prefix=$HOME/prefix && make install)
210
211 wget $XORG_RELEASES/lib/$LIBPCIACCESS_VERSION.tar.bz2
212 tar -jxvf $LIBPCIACCESS_VERSION.tar.bz2
213 (cd $LIBPCIACCESS_VERSION && ./configure --prefix=$HOME/prefix && make install)
214
215 wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
216 tar -jxvf $LIBDRM_VERSION.tar.bz2
217 (cd $LIBDRM_VERSION && ./configure --prefix=$HOME/prefix --enable-vc4 --enable-freedreno --enable-etnaviv-experimental-api && make install)
218
219 wget $XORG_RELEASES/proto/$RANDRPROTO_VERSION.tar.bz2
220 tar -jxvf $RANDRPROTO_VERSION.tar.bz2
221 (cd $RANDRPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
222
223 wget $XORG_RELEASES/lib/$LIBXRANDR_VERSION.tar.bz2
224 tar -jxvf $LIBXRANDR_VERSION.tar.bz2
225 (cd $LIBXRANDR_VERSION && ./configure --prefix=$HOME/prefix && make install)
226
227 wget $XORG_RELEASES/lib/$LIBXSHMFENCE_VERSION.tar.bz2
228 tar -jxvf $LIBXSHMFENCE_VERSION.tar.bz2
229 (cd $LIBXSHMFENCE_VERSION && ./configure --prefix=$HOME/prefix && make install)
230
231 wget https://people.freedesktop.org/~aplattner/vdpau/$LIBVDPAU_VERSION.tar.bz2
232 tar -jxvf $LIBVDPAU_VERSION.tar.bz2
233 (cd $LIBVDPAU_VERSION && ./configure --prefix=$HOME/prefix && make install)
234
235 wget https://www.freedesktop.org/software/vaapi/releases/libva/$LIBVA_VERSION.tar.bz2
236 tar -jxvf $LIBVA_VERSION.tar.bz2
237 (cd $LIBVA_VERSION && ./configure --prefix=$HOME/prefix --disable-wayland --disable-dummy-driver && make install)
238
239 wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz
240 tar -axvf $LIBWAYLAND_VERSION.tar.xz
241 (cd $LIBWAYLAND_VERSION && ./configure --prefix=$HOME/prefix --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation && make install)
242
243 wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz
244 tar -axvf $WAYLAND_PROTOCOLS_VERSION.tar.xz
245 (cd $WAYLAND_PROTOCOLS_VERSION && ./configure --prefix=$HOME/prefix && make install)
246
247 # Meson requires ninja >= 1.6, but xenial has 1.3.x
248 wget https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-linux.zip
249 unzip ninja-linux.zip
250 mv ninja $HOME/prefix/bin/
251
252 # Generate this header since one is missing on the Travis instance
253 mkdir -p linux
254 printf "%s\n" \
255 "#ifndef _LINUX_MEMFD_H" \
256 "#define _LINUX_MEMFD_H" \
257 "" \
258 "#define MFD_CLOEXEC 0x0001U" \
259 "#define MFD_ALLOW_SEALING 0x0002U" \
260 "" \
261 "#endif /* _LINUX_MEMFD_H */" > linux/memfd.h
262
263 # Generate this header, including the missing SYS_memfd_create
264 # macro, which is not provided by the header in the Travis
265 # instance
266 mkdir -p sys
267 printf "%s\n" \
268 "#ifndef _SYSCALL_H" \
269 "#define _SYSCALL_H 1" \
270 "" \
271 "#include <asm/unistd.h>" \
272 "" \
273 "#ifndef _LIBC" \
274 "# include <bits/syscall.h>" \
275 "#endif" \
276 "" \
277 "#ifndef __NR_memfd_create" \
278 "# define __NR_memfd_create 319 /* Taken from <asm/unistd_64.h> */" \
279 "#endif" \
280 "" \
281 "#ifndef SYS_memfd_create" \
282 "# define SYS_memfd_create __NR_memfd_create" \
283 "#endif" \
284 "" \
285 "#endif" > sys/syscall.h
286 fi
287
288 script:
289 - if test "x$BUILD" = xmake; then
290 export CFLAGS="$CFLAGS -isystem`pwd`";
291
292 mkdir build &&
293 cd build &&
294 ../autogen.sh
295 --enable-autotools
296 --enable-debug
297 $LIBUNWIND_FLAGS
298 $DRI_LOADERS
299 --with-dri-drivers=$DRI_DRIVERS
300 $GALLIUM_ST
301 --with-gallium-drivers=$GALLIUM_DRIVERS
302 --with-vulkan-drivers=$VULKAN_DRIVERS
303 --disable-llvm-shared-libs
304 &&
305 make && eval $MAKE_CHECK_COMMAND;
306 fi
307
308 - if test "x$BUILD" = xscons; then
309 scons $SCONS_TARGET && eval $SCONS_CHECK_COMMAND;
310 fi
311
312 - |
313 if test "x$BUILD" = xmeson; then
314 if test -n "$LLVM_CONFIG"; then
315 # We need to control the version of llvm-config we're using, so we'll
316 # generate a native file to do so. This requires meson >=0.49
317 #
318 echo -e "[binaries]\nllvm-config = '`which $LLVM_CONFIG`'" > native.file
319
320 $LLVM_CONFIG --version
321 else
322 : > native.file
323 fi
324
325 export CFLAGS="$CFLAGS -isystem`pwd`"
326 meson _build \
327 --native-file=native.file \
328 -Dbuild-tests=true \
329 -Dlibunwind=${UNWIND} \
330 ${DRI_LOADERS} \
331 -Ddri-drivers=${DRI_DRIVERS:-[]} \
332 ${GALLIUM_ST} \
333 -Dgallium-drivers=${GALLIUM_DRIVERS:-[]} \
334 -Dvulkan-drivers=${VULKAN_DRIVERS:-[]}
335 meson configure _build
336 ninja -C _build
337 ninja -C _build test
338 fi