OSDN Git Service

travis: Add clover build using llvm-5.0
[android-x86/external-mesa.git] / .travis.yml
1 language: c
2
3 sudo: false
4 dist: trusty
5
6 cache:
7   apt: true
8   ccache: true
9
10 env:
11   global:
12     - XORG_RELEASES=http://xorg.freedesktop.org/releases/individual
13     - XCB_RELEASES=http://xcb.freedesktop.org/dist
14     - WAYLAND_RELEASES=http://wayland.freedesktop.org/releases
15     - XORGMACROS_VERSION=util-macros-1.19.0
16     - GLPROTO_VERSION=glproto-1.4.17
17     - DRI2PROTO_VERSION=dri2proto-2.8
18     - LIBPCIACCESS_VERSION=libpciaccess-0.13.4
19     - LIBDRM_VERSION=libdrm-2.4.74
20     - XCBPROTO_VERSION=xcb-proto-1.11
21     - LIBXCB_VERSION=libxcb-1.11
22     - LIBXSHMFENCE_VERSION=libxshmfence-1.2
23     - LIBTXC_DXTN_VERSION=libtxc_dxtn-1.0.1
24     - LIBVDPAU_VERSION=libvdpau-1.1
25     - LIBVA_VERSION=libva-1.6.2
26     - LIBWAYLAND_VERSION=wayland-1.11.1
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
31 matrix:
32   include:
33     - env:
34         - LABEL="make loaders/classic DRI"
35         - BUILD=make
36         - MAKEFLAGS="-j4"
37         - MAKE_CHECK_COMMAND="make check"
38         - DRI_LOADERS="--enable-glx --enable-gbm --enable-egl --with-platforms=x11,drm,surfaceless,wayland --enable-osmesa"
39         - DRI_DRIVERS="i915,i965,radeon,r200,swrast,nouveau"
40         - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
41         - GALLIUM_DRIVERS=""
42         - VULKAN_DRIVERS=""
43         - LIBUNWIND_FLAGS="--disable-libunwind"
44       addons:
45         apt:
46           packages:
47             - xz-utils
48             - x11proto-xf86vidmode-dev
49             - libexpat1-dev
50             - libx11-xcb-dev
51             - libxdamage-dev
52             - libxfixes-dev
53     - env:
54         # NOTE: Building SWR is 2x (yes two) times slower than all the other
55         # gallium drivers combined.
56         # Start this early so that it doesn't hunder the run time.
57         - LABEL="make Gallium Drivers SWR"
58         - BUILD=make
59         - MAKEFLAGS="-j4"
60         - MAKE_CHECK_COMMAND="true"
61         - LLVM_VERSION=3.9
62         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
63         - OVERRIDE_CC="gcc-4.8"
64         - OVERRIDE_CXX="g++-4.8"
65         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
66         - DRI_DRIVERS=""
67         - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
68         - GALLIUM_DRIVERS="swr"
69         - VULKAN_DRIVERS=""
70         - LIBUNWIND_FLAGS="--enable-libunwind"
71       addons:
72         apt:
73           sources:
74             - llvm-toolchain-trusty-3.9
75           packages:
76             # LLVM packaging is broken and misses these dependencies
77             - libedit-dev
78             # From sources above
79             - llvm-3.9-dev
80             # Common
81             - xz-utils
82             - x11proto-xf86vidmode-dev
83             - libexpat1-dev
84             - libx11-xcb-dev
85             - libelf-dev
86             - libunwind8-dev
87     - env:
88         - LABEL="make Gallium Drivers Other"
89         - BUILD=make
90         - MAKEFLAGS="-j4"
91         - MAKE_CHECK_COMMAND="true"
92         - LLVM_VERSION=3.9
93         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
94         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
95         - DRI_DRIVERS=""
96         - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
97         - GALLIUM_DRIVERS="i915,nouveau,pl111,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx"
98         - VULKAN_DRIVERS=""
99         - LIBUNWIND_FLAGS="--enable-libunwind"
100       addons:
101         apt:
102           sources:
103             - llvm-toolchain-trusty-3.9
104           packages:
105             # LLVM packaging is broken and misses these dependencies
106             - libedit-dev
107             # From sources above
108             - llvm-3.9-dev
109             # Common
110             - xz-utils
111             - x11proto-xf86vidmode-dev
112             - libexpat1-dev
113             - libx11-xcb-dev
114             - libelf-dev
115             - libunwind8-dev
116     - env:
117         # NOTE: Analogous to SWR above, building Clover is quite slow.
118         - LABEL="make Gallium ST Clover"
119         - BUILD=make
120         - MAKEFLAGS="-j4"
121         - MAKE_CHECK_COMMAND="true"
122         - LLVM_VERSION=3.6
123         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
124         - OVERRIDE_CC=gcc-4.7
125         - OVERRIDE_CXX=g++-4.7
126         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
127         - DRI_DRIVERS=""
128         - 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"
129         # i915 most likely doesn't work with OpenCL.
130         # Regardless - we're doing a quick build test here.
131         - GALLIUM_DRIVERS="i915"
132         - VULKAN_DRIVERS=""
133         - LIBUNWIND_FLAGS="--enable-libunwind"
134       addons:
135         apt:
136           sources:
137             - llvm-toolchain-trusty-3.6
138           packages:
139             - libclc-dev
140             # LLVM packaging is broken and misses these dependencies
141             - libedit-dev
142             - g++-4.7
143             # From sources above
144             - llvm-3.6-dev
145             - clang-3.6
146             - libclang-3.6-dev
147             # Common
148             - xz-utils
149             - x11proto-xf86vidmode-dev
150             - libexpat1-dev
151             - libx11-xcb-dev
152             - libelf-dev
153             - libunwind8-dev
154     - env:
155         # NOTE: Analogous to SWR above, building Clover is quite slow.
156         - LABEL="make Gallium ST Clover LLVM-3.9"
157         - BUILD=make
158         - MAKEFLAGS="-j4"
159         - MAKE_CHECK_COMMAND="true"
160         - LLVM_VERSION=3.9
161         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
162         - OVERRIDE_CC=gcc-4.7
163         - OVERRIDE_CXX=g++-4.7
164         # New binutils linker is required for llvm-3.9
165         - OVERRIDE_PATH=/usr/lib/binutils-2.26/bin
166         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
167         - DRI_DRIVERS=""
168         - 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"
169         - GALLIUM_DRIVERS="r600,radeonsi"
170         - VULKAN_DRIVERS=""
171         - LIBUNWIND_FLAGS="--enable-libunwind"
172       addons:
173         apt:
174           sources:
175             - llvm-toolchain-trusty-3.9
176           packages:
177             - binutils-2.26
178             - libclc-dev
179             # LLVM packaging is broken and misses these dependencies
180             - libedit-dev
181             - g++-4.7
182             # From sources above
183             - llvm-3.9-dev
184             - clang-3.9
185             - libclang-3.9-dev
186             # Common
187             - xz-utils
188             - x11proto-xf86vidmode-dev
189             - libexpat1-dev
190             - libx11-xcb-dev
191             - libelf-dev
192             - libunwind8-dev
193     - env:
194         # NOTE: Analogous to SWR above, building Clover is quite slow.
195         - LABEL="make Gallium ST Clover LLVM-4.0"
196         - BUILD=make
197         - MAKEFLAGS="-j4"
198         - MAKE_CHECK_COMMAND="true"
199         - LLVM_VERSION=4.0
200         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
201         - OVERRIDE_CC=gcc-4.8
202         - OVERRIDE_CXX=g++-4.8
203         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
204         - DRI_DRIVERS=""
205         - 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"
206         - GALLIUM_DRIVERS="r600,radeonsi"
207         - VULKAN_DRIVERS=""
208         - LIBUNWIND_FLAGS="--enable-libunwind"
209       addons:
210         apt:
211           sources:
212             - llvm-toolchain-trusty-4.0
213           packages:
214             - libclc-dev
215             # LLVM packaging is broken and misses these dependencies
216             - libedit-dev
217             - g++-4.8
218             # From sources above
219             - llvm-4.0-dev
220             - clang-4.0
221             - libclang-4.0-dev
222             # Common
223             - xz-utils
224             - x11proto-xf86vidmode-dev
225             - libexpat1-dev
226             - libx11-xcb-dev
227             - libelf-dev
228             - libunwind8-dev
229     - env:
230         # NOTE: Analogous to SWR above, building Clover is quite slow.
231         - LABEL="make Gallium ST Clover LLVM-5.0"
232         - BUILD=make
233         - MAKEFLAGS="-j4"
234         - MAKE_CHECK_COMMAND="true"
235         - LLVM_VERSION=5.0
236         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
237         - OVERRIDE_CC=gcc-4.8
238         - OVERRIDE_CXX=g++-4.8
239         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
240         - DRI_DRIVERS=""
241         - 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"
242         - GALLIUM_DRIVERS="r600,radeonsi"
243         - VULKAN_DRIVERS=""
244         - LIBUNWIND_FLAGS="--enable-libunwind"
245       addons:
246         apt:
247           sources:
248             - llvm-toolchain-trusty-5.0
249           packages:
250             - libclc-dev
251             # LLVM packaging is broken and misses these dependencies
252             - libedit-dev
253             - g++-4.8
254             # From sources above
255             - llvm-5.0-dev
256             - clang-5.0
257             - libclang-5.0-dev
258             # Common
259             - xz-utils
260             - x11proto-xf86vidmode-dev
261             - libexpat1-dev
262             - libx11-xcb-dev
263             - libelf-dev
264             - libunwind8-dev
265     - env:
266         - LABEL="make Gallium ST Other"
267         - BUILD=make
268         - MAKEFLAGS="-j4"
269         - MAKE_CHECK_COMMAND="true"
270         - LLVM_VERSION=3.3
271         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
272         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
273         - DRI_DRIVERS=""
274         - GALLIUM_ST="--enable-dri --disable-opencl --enable-xa --enable-nine --enable-xvmc --enable-vdpau --enable-va --enable-omx-bellagio --enable-gallium-osmesa"
275         # We need swrast for osmesa and nine.
276         # i915 most likely doesn't work with most ST.
277         # Regardless - we're doing a quick build test here.
278         - GALLIUM_DRIVERS="i915,swrast"
279         - VULKAN_DRIVERS=""
280         - LIBUNWIND_FLAGS="--enable-libunwind"
281       addons:
282         apt:
283           packages:
284             # We actually want to test against llvm-3.3
285             - llvm-3.3-dev
286             # Nine requires gcc 4.6... which is the one we have right ?
287             - libxvmc-dev
288             # Build locally, for now.
289             #- libvdpau-dev
290             #- libva-dev
291             - libomxil-bellagio-dev
292             # LLVM packaging is broken and misses these dependencies
293             - libedit-dev
294             # Common
295             - xz-utils
296             - x11proto-xf86vidmode-dev
297             - libexpat1-dev
298             - libx11-xcb-dev
299             - libelf-dev
300             - libunwind8-dev
301     - env:
302         - LABEL="make Vulkan"
303         - BUILD=make
304         - MAKEFLAGS="-j4"
305         - MAKE_CHECK_COMMAND="make -C src/gtest check && make -C src/intel check"
306         - LLVM_VERSION=3.9
307         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
308         - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl --with-platforms=x11,wayland"
309         - DRI_DRIVERS=""
310         - GALLIUM_ST="--enable-dri --enable-dri3 --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
311         - GALLIUM_DRIVERS=""
312         - VULKAN_DRIVERS="intel,radeon"
313         - LIBUNWIND_FLAGS="--disable-libunwind"
314       addons:
315         apt:
316           sources:
317             - llvm-toolchain-trusty-3.9
318           packages:
319             # LLVM packaging is broken and misses these dependencies
320             - libedit-dev
321             # From sources above
322             - llvm-3.9-dev
323             # Common
324             - xz-utils
325             - x11proto-xf86vidmode-dev
326             - libexpat1-dev
327             - libx11-xcb-dev
328             - libelf-dev
329     - env:
330         - LABEL="scons"
331         - BUILD=scons
332         - SCONSFLAGS="-j4"
333         # Explicitly disable.
334         - SCONS_TARGET="llvm=0"
335         # Keep it symmetrical to the make build.
336         - SCONS_CHECK_COMMAND="scons llvm=0 check"
337       addons:
338         apt:
339           packages:
340             - scons
341             # Common
342             - xz-utils
343             - x11proto-xf86vidmode-dev
344             - libexpat1-dev
345             - libx11-xcb-dev
346             - libelf-dev
347     - env:
348         - LABEL="scons LLVM"
349         - BUILD=scons
350         - SCONSFLAGS="-j4"
351         - SCONS_TARGET="llvm=1"
352         # Keep it symmetrical to the make build.
353         - SCONS_CHECK_COMMAND="scons llvm=1 check"
354         - LLVM_VERSION=3.3
355         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
356       addons:
357         apt:
358           packages:
359             - scons
360             # LLVM packaging is broken and misses these dependencies
361             - libedit-dev
362             - llvm-3.3-dev
363             # Common
364             - xz-utils
365             - x11proto-xf86vidmode-dev
366             - libexpat1-dev
367             - libx11-xcb-dev
368             - libelf-dev
369     - env:
370         - LABEL="scons SWR"
371         - BUILD=scons
372         - SCONSFLAGS="-j4"
373         - SCONS_TARGET="swr=1"
374         - LLVM_VERSION=3.9
375         - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
376         # Keep it symmetrical to the make build. There's no actual SWR, yet.
377         - SCONS_CHECK_COMMAND="true"
378         - OVERRIDE_CC="gcc-4.8"
379         - OVERRIDE_CXX="g++-4.8"
380       addons:
381         apt:
382           sources:
383             - llvm-toolchain-trusty-3.9
384           packages:
385             - scons
386             # LLVM packaging is broken and misses these dependencies
387             - libedit-dev
388             # From sources above
389             - llvm-3.9-dev
390             # Common
391             - xz-utils
392             - x11proto-xf86vidmode-dev
393             - libexpat1-dev
394             - libx11-xcb-dev
395             - libelf-dev
396
397 install:
398   - pip install --user mako
399
400   # Since libdrm gets updated in configure.ac regularly, try to pick up the
401   # latest version from there.
402   - for line in `grep "^LIBDRM.*_REQUIRED=" configure.ac`; do
403       old_ver=`echo $LIBDRM_VERSION | sed 's/libdrm-//'`;
404       new_ver=`echo $line | sed 's/.*REQUIRED=//'`;
405       if `echo "$old_ver,$new_ver" | tr ',' '\n' | sort -Vc 2> /dev/null`; then
406         export LIBDRM_VERSION="libdrm-$new_ver";
407       fi;
408     done
409
410   # Install dependencies where we require specific versions (or where
411   # disallowed by Travis CI's package whitelisting).
412
413   - wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
414   - tar -jxvf $XORGMACROS_VERSION.tar.bz2
415   - (cd $XORGMACROS_VERSION && ./configure --prefix=$HOME/prefix && make install)
416
417   - wget $XORG_RELEASES/proto/$GLPROTO_VERSION.tar.bz2
418   - tar -jxvf $GLPROTO_VERSION.tar.bz2
419   - (cd $GLPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
420
421   - wget $XORG_RELEASES/proto/$DRI2PROTO_VERSION.tar.bz2
422   - tar -jxvf $DRI2PROTO_VERSION.tar.bz2
423   - (cd $DRI2PROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
424
425   - wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
426   - tar -jxvf $XCBPROTO_VERSION.tar.bz2
427   - (cd $XCBPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
428
429   - wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
430   - tar -jxvf $LIBXCB_VERSION.tar.bz2
431   - (cd $LIBXCB_VERSION && ./configure --prefix=$HOME/prefix && make install)
432
433   - wget $XORG_RELEASES/lib/$LIBPCIACCESS_VERSION.tar.bz2
434   - tar -jxvf $LIBPCIACCESS_VERSION.tar.bz2
435   - (cd $LIBPCIACCESS_VERSION && ./configure --prefix=$HOME/prefix && make install)
436
437   - wget http://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
438   - tar -jxvf $LIBDRM_VERSION.tar.bz2
439   - (cd $LIBDRM_VERSION && ./configure --prefix=$HOME/prefix --enable-vc4 --enable-freedreno --enable-etnaviv-experimental-api && make install)
440
441   - wget $XORG_RELEASES/lib/$LIBXSHMFENCE_VERSION.tar.bz2
442   - tar -jxvf $LIBXSHMFENCE_VERSION.tar.bz2
443   - (cd $LIBXSHMFENCE_VERSION && ./configure --prefix=$HOME/prefix && make install)
444
445   # libtxc-dxtn uses the patented S3 Texture Compression
446   # algorithm. Therefore, we don't want to use this library but it is
447   # still possible through setting the USE_TXC_DXTN variable to yes in
448   # the travis web UI.
449   #
450   # According to Wikipedia, the patent expires on October 2, 2017:
451   # https://en.wikipedia.org/wiki/S3_Texture_Compression#Patent
452   - if test "x$USE_TXC_DXTN" = xyes; then
453       wget https://people.freedesktop.org/~cbrill/libtxc_dxtn/$LIBTXC_DXTN_VERSION.tar.bz2;
454       tar -jxvf $LIBTXC_DXTN_VERSION.tar.bz2;
455       (cd $LIBTXC_DXTN_VERSION && ./configure --prefix=$HOME/prefix && make install);
456     fi
457
458   - wget http://people.freedesktop.org/~aplattner/vdpau/$LIBVDPAU_VERSION.tar.bz2
459   - tar -jxvf $LIBVDPAU_VERSION.tar.bz2
460   - (cd $LIBVDPAU_VERSION && ./configure --prefix=$HOME/prefix && make install)
461
462   - wget http://www.freedesktop.org/software/vaapi/releases/libva/$LIBVA_VERSION.tar.bz2
463   - tar -jxvf $LIBVA_VERSION.tar.bz2
464   - (cd $LIBVA_VERSION && ./configure --prefix=$HOME/prefix --disable-wayland --disable-dummy-driver && make install)
465
466   - wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz
467   - tar -axvf $LIBWAYLAND_VERSION.tar.xz
468   - (cd $LIBWAYLAND_VERSION && ./configure --prefix=$HOME/prefix --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation && make install)
469
470   - wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz
471   - tar -axvf $WAYLAND_PROTOCOLS_VERSION.tar.xz
472   - (cd $WAYLAND_PROTOCOLS_VERSION && ./configure --prefix=$HOME/prefix && make install)
473
474   # Generate the header since one is missing on the Travis instance
475   - mkdir -p linux
476   - printf "%s\n" \
477            "#ifndef _LINUX_MEMFD_H" \
478            "#define _LINUX_MEMFD_H" \
479            "" \
480            "#define __NR_memfd_create 319" \
481            "#define SYS_memfd_create __NR_memfd_create" \
482            "" \
483            "#define MFD_CLOEXEC             0x0001U" \
484            "#define MFD_ALLOW_SEALING       0x0002U" \
485            "" \
486            "#endif /* _LINUX_MEMFD_H */" > linux/memfd.h
487
488 script:
489   - if test "x$BUILD" = xmake; then
490       test -n "$OVERRIDE_CC" && export CC="$OVERRIDE_CC";
491       test -n "$OVERRIDE_CXX" && export CXX="$OVERRIDE_CXX";
492       test -n "$OVERRIDE_PATH" && export PATH="$OVERRIDE_PATH:$PATH";
493
494       export CC="$CC -isystem`pwd`";
495
496       ./autogen.sh --enable-debug
497         $LIBUNWIND_FLAGS
498         $DRI_LOADERS
499         --with-dri-drivers=$DRI_DRIVERS
500         $GALLIUM_ST
501         --with-gallium-drivers=$GALLIUM_DRIVERS
502         --with-vulkan-drivers=$VULKAN_DRIVERS
503         --disable-llvm-shared-libs
504         &&
505       make && eval $MAKE_CHECK_COMMAND;
506     fi
507
508   - if test "x$BUILD" = xscons; then
509       test -n "$OVERRIDE_CC" && export CC="$OVERRIDE_CC";
510       test -n "$OVERRIDE_CXX" && export CXX="$OVERRIDE_CXX";
511       scons $SCONS_TARGET && eval $SCONS_CHECK_COMMAND;
512     fi