.travis.yml 14.4 KB
Newer Older
1 2
language: c

3
sudo: false
4
dist: trusty
5 6

cache:
Emil Velikov's avatar
Emil Velikov committed
7
  apt: true
8
  ccache: true
9 10 11 12 13 14 15 16 17 18 19

env:
  global:
    - XORG_RELEASES=http://xorg.freedesktop.org/releases/individual
    - XCB_RELEASES=http://xcb.freedesktop.org/dist
    - XORGMACROS_VERSION=util-macros-1.19.0
    - GLPROTO_VERSION=glproto-1.4.17
    - DRI2PROTO_VERSION=dri2proto-2.8
    - DRI3PROTO_VERSION=dri3proto-1.0
    - PRESENTPROTO_VERSION=presentproto-1.0
    - LIBPCIACCESS_VERSION=libpciaccess-0.13.4
20
    - LIBDRM_VERSION=libdrm-2.4.74
21 22 23
    - XCBPROTO_VERSION=xcb-proto-1.11
    - LIBXCB_VERSION=libxcb-1.11
    - LIBXSHMFENCE_VERSION=libxshmfence-1.2
24
    - LIBTXC_DXTN_VERSION=libtxc_dxtn-1.0.1
25 26
    - LIBVDPAU_VERSION=libvdpau-1.1
    - LIBVA_VERSION=libva-1.6.2
Emil Velikov's avatar
Emil Velikov committed
27
    - LIBWAYLAND_VERSION=wayland-1.11.1
28
    - PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig
29
    - LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH"
30 31 32 33

matrix:
  include:
    - env:
34
        - LABEL="make loaders/classic DRI"
35 36
        - BUILD=make
        - MAKEFLAGS=-j2
37
        - MAKE_CHECK_COMMAND="make check"
Emil Velikov's avatar
Emil Velikov committed
38
        - DRI_LOADERS="--enable-glx --enable-gbm --enable-egl --with-egl-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 --disable-gallium-osmesa"
41 42
        - GALLIUM_DRIVERS=""
        - VULKAN_DRIVERS=""
43 44 45
      addons:
        apt:
          packages:
Emil Velikov's avatar
Emil Velikov committed
46
            - xz-utils
47 48 49
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
50 51 52 53 54 55 56
    - env:
        # NOTE: Building SWR is 2x (yes two) times slower than all the other
        # gallium drivers combined.
        # Start this early so that it doesn't hunder the run time.
        - LABEL="make Gallium Drivers SWR"
        - BUILD=make
        - MAKEFLAGS=-j2
57
        - MAKE_CHECK_COMMAND="true"
58 59 60 61
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - OVERRIDE_CC="gcc-5"
        - OVERRIDE_CXX="g++-5"
62
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
63
        - DRI_DRIVERS=""
64
        - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
65 66 67 68 69 70 71 72 73 74 75 76 77 78
        - GALLIUM_DRIVERS="swr"
        - VULKAN_DRIVERS=""
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-trusty-3.9
          packages:
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            # From sources above
            - g++-5
            - llvm-3.9-dev
            # Common
Emil Velikov's avatar
Emil Velikov committed
79
            - xz-utils
80 81 82 83
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
84 85 86 87 88 89 90 91 92
    - env:
        - LABEL="make Gallium Drivers Other"
        - BUILD=make
        - MAKEFLAGS=-j2
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
        - DRI_DRIVERS=""
93
        - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
94 95 96 97 98 99 100 101 102 103 104 105
        - GALLIUM_DRIVERS="i915,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx"
        - VULKAN_DRIVERS=""
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            # From sources above
            - llvm-3.9-dev
            # Common
Emil Velikov's avatar
Emil Velikov committed
106
            - xz-utils
107 108 109 110
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
    - env:
        # NOTE: Analogous to SWR above, building Clover is quite slow.
        - LABEL="make Gallium ST Clover"
        - BUILD=make
        - MAKEFLAGS=-j2
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=3.6
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - OVERRIDE_CC=gcc-4.7
        - OVERRIDE_CXX=g++-4.7
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
        - DRI_DRIVERS=""
        - GALLIUM_ST="--disable-dri --enable-opencl --enable-opencl-icd --enable-llvm --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
        # i915 most likely doesn't work with OpenCL.
        # Regardless - we're doing a quick build test here.
        - GALLIUM_DRIVERS="i915"
        - VULKAN_DRIVERS=""
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.6
          packages:
            - libclc-dev
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            - g++-4.7
            # From sources above
            - llvm-3.6-dev
            - clang-3.6
            - libclang-3.6-dev
            # Common
Emil Velikov's avatar
Emil Velikov committed
142
            - xz-utils
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        - LABEL="make Gallium ST Other"
        - BUILD=make
        - MAKEFLAGS=-j2
        - MAKE_CHECK_COMMAND="true"
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
        - DRI_DRIVERS=""
        - GALLIUM_ST="--enable-dri --disable-opencl --enable-xa --enable-nine --enable-xvmc --enable-vdpau --enable-va --enable-omx --enable-gallium-osmesa"
        # We need swrast for osmesa and nine.
        # i915 most likely doesn't work with most ST.
        # Regardless - we're doing a quick build test here.
        - GALLIUM_DRIVERS="i915,swrast"
        - VULKAN_DRIVERS=""
      addons:
        apt:
          packages:
            # Nine requires gcc 4.6... which is the one we have right ?
            - libxvmc-dev
            # Build locally, for now.
            #- libvdpau-dev
            #- libva-dev
            - libomxil-bellagio-dev
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            # Common
Emil Velikov's avatar
Emil Velikov committed
172
            - xz-utils
173 174 175 176
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
177 178 179 180 181 182 183 184 185
    - env:
        - LABEL="make Vulkan"
        - BUILD=make
        - MAKEFLAGS=-j2
        - MAKE_CHECK_COMMAND="make -C src/gtest check && make -C src/intel check"
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        # XXX: we want to test the WSI, but those are enabled via the EGL toggles
        # XXX: Platform X11 dependencies are checked when --enable-glx is set
Emil Velikov's avatar
Emil Velikov committed
186
        - DRI_LOADERS="--enable-glx --disable-gbm --enable-egl --with-egl-platforms=x11,wayland"
187 188
        # i965 is needed for Intel's Vulkan driver (anv)
        - DRI_DRIVERS="i965"
189 190
        # XXX: enable DRI for EGL above
        - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
191 192 193 194 195 196 197 198 199 200 201 202
        - GALLIUM_DRIVERS=""
        - VULKAN_DRIVERS="intel,radeon"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            # From sources above
            - llvm-3.9-dev
            # Common
Emil Velikov's avatar
Emil Velikov committed
203
            - xz-utils
204 205 206 207
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
208 209 210 211 212 213
    - env:
        - LABEL="scons"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        # Explicitly disable.
        - SCONS_TARGET="llvm=0"
214 215
        # Keep it symmetrical to the make build.
        - SCONS_CHECK_COMMAND="scons llvm=0 check"
216 217 218 219 220
      addons:
        apt:
          packages:
            - scons
            # Common
Emil Velikov's avatar
Emil Velikov committed
221
            - xz-utils
222 223 224 225
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
226 227 228 229 230
    - env:
        - LABEL="scons LLVM"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        - SCONS_TARGET="llvm=1"
231 232
        # Keep it symmetrical to the make build.
        - SCONS_CHECK_COMMAND="scons llvm=1 check"
233 234 235 236 237 238 239 240 241 242
        - LLVM_VERSION=3.3
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
      addons:
        apt:
          packages:
            - scons
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            - llvm-3.3-dev
            # Common
Emil Velikov's avatar
Emil Velikov committed
243
            - xz-utils
244 245 246 247
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
248 249 250 251 252 253 254
    - env:
        - LABEL="scons SWR"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        - SCONS_TARGET="swr=1"
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
255 256
        # Keep it symmetrical to the make build. There's no actual SWR, yet.
        - SCONS_CHECK_COMMAND="true"
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
        - OVERRIDE_CC="gcc-5"
        - OVERRIDE_CXX="g++-5"
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-trusty-3.9
          packages:
            - scons
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            # From sources above
            - g++-5
            - llvm-3.9-dev
            # Common
Emil Velikov's avatar
Emil Velikov committed
272
            - xz-utils
273 274 275 276
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
277 278 279 280

install:
  - pip install --user mako

281 282
  # Since libdrm gets updated in configure.ac regularly, try to pick up the
  # latest version from there.
283
  - for line in `grep "^LIBDRM.*_REQUIRED=" configure.ac`; do
284 285 286 287 288 289 290
      old_ver=`echo $LIBDRM_VERSION | sed 's/libdrm-//'`;
      new_ver=`echo $line | sed 's/.*REQUIRED=//'`;
      if `echo "$old_ver,$new_ver" | tr ',' '\n' | sort -Vc 2> /dev/null`; then
        export LIBDRM_VERSION="libdrm-$new_ver";
      fi;
    done

291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327
  # Install dependencies where we require specific versions (or where
  # disallowed by Travis CI's package whitelisting).

  - wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
  - tar -jxvf $XORGMACROS_VERSION.tar.bz2
  - (cd $XORGMACROS_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XORG_RELEASES/proto/$GLPROTO_VERSION.tar.bz2
  - tar -jxvf $GLPROTO_VERSION.tar.bz2
  - (cd $GLPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XORG_RELEASES/proto/$DRI2PROTO_VERSION.tar.bz2
  - tar -jxvf $DRI2PROTO_VERSION.tar.bz2
  - (cd $DRI2PROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XORG_RELEASES/proto/$DRI3PROTO_VERSION.tar.bz2
  - tar -jxvf $DRI3PROTO_VERSION.tar.bz2
  - (cd $DRI3PROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XORG_RELEASES/proto/$PRESENTPROTO_VERSION.tar.bz2
  - tar -jxvf $PRESENTPROTO_VERSION.tar.bz2
  - (cd $PRESENTPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
  - tar -jxvf $XCBPROTO_VERSION.tar.bz2
  - (cd $XCBPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
  - tar -jxvf $LIBXCB_VERSION.tar.bz2
  - (cd $LIBXCB_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XORG_RELEASES/lib/$LIBPCIACCESS_VERSION.tar.bz2
  - tar -jxvf $LIBPCIACCESS_VERSION.tar.bz2
  - (cd $LIBPCIACCESS_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget http://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
  - tar -jxvf $LIBDRM_VERSION.tar.bz2
328
  - (cd $LIBDRM_VERSION && ./configure --prefix=$HOME/prefix --enable-vc4 --enable-freedreno --enable-etnaviv-experimental-api && make install)
329 330 331 332 333

  - wget $XORG_RELEASES/lib/$LIBXSHMFENCE_VERSION.tar.bz2
  - tar -jxvf $LIBXSHMFENCE_VERSION.tar.bz2
  - (cd $LIBXSHMFENCE_VERSION && ./configure --prefix=$HOME/prefix && make install)

334 335 336 337 338 339 340 341 342 343 344 345 346
  # libtxc-dxtn uses the patented S3 Texture Compression
  # algorithm. Therefore, we don't want to use this library but it is
  # still possible through setting the USE_TXC_DXTN variable to yes in
  # the travis web UI.
  #
  # According to Wikipedia, the patent expires on October 2, 2017:
  # https://en.wikipedia.org/wiki/S3_Texture_Compression#Patent
  - if test "x$USE_TXC_DXTN" = xyes; then
      wget https://people.freedesktop.org/~cbrill/libtxc_dxtn/$LIBTXC_DXTN_VERSION.tar.bz2;
      tar -jxvf $LIBTXC_DXTN_VERSION.tar.bz2;
      (cd $LIBTXC_DXTN_VERSION && ./configure --prefix=$HOME/prefix && make install);
    fi

347 348 349 350 351 352 353 354
  - wget http://people.freedesktop.org/~aplattner/vdpau/$LIBVDPAU_VERSION.tar.bz2
  - tar -jxvf $LIBVDPAU_VERSION.tar.bz2
  - (cd $LIBVDPAU_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget http://www.freedesktop.org/software/vaapi/releases/libva/$LIBVA_VERSION.tar.bz2
  - tar -jxvf $LIBVA_VERSION.tar.bz2
  - (cd $LIBVA_VERSION && ./configure --prefix=$HOME/prefix --disable-wayland --disable-dummy-driver && make install)

Emil Velikov's avatar
Emil Velikov committed
355 356 357 358
  - wget http://wayland.freedesktop.org/releases/$LIBWAYLAND_VERSION.tar.xz
  - tar -axvf $LIBWAYLAND_VERSION.tar.xz
  - (cd $LIBWAYLAND_VERSION && ./configure --prefix=$HOME/prefix --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation && make install)

359 360 361 362 363 364 365 366 367 368 369 370 371 372
  # Generate the header since one is missing on the Travis instance
  - mkdir -p linux
  - printf "%s\n" \
           "#ifndef _LINUX_MEMFD_H" \
           "#define _LINUX_MEMFD_H" \
           "" \
           "#define __NR_memfd_create 319" \
           "#define SYS_memfd_create __NR_memfd_create" \
           "" \
           "#define MFD_CLOEXEC             0x0001U" \
           "#define MFD_ALLOW_SEALING       0x0002U" \
           "" \
           "#endif /* _LINUX_MEMFD_H */" > linux/memfd.h

373
script:
374
  - if test "x$BUILD" = xmake; then
375 376
      test -n "$OVERRIDE_CC" && export CC="$OVERRIDE_CC";
      test -n "$OVERRIDE_CXX" && export CXX="$OVERRIDE_CXX";
377 378
      export CC="$CC -isystem`pwd`";

379
      ./autogen.sh --enable-debug
380
        $DRI_LOADERS
381
        --with-dri-drivers=$DRI_DRIVERS
382
        $GALLIUM_ST
383 384
        --with-gallium-drivers=$GALLIUM_DRIVERS
        --with-vulkan-drivers=$VULKAN_DRIVERS
385
        --disable-llvm-shared-libs
386 387
        &&
      make && eval $MAKE_CHECK_COMMAND;
388 389 390
    fi

  - if test "x$BUILD" = xscons; then
391 392
      test -n "$OVERRIDE_CC" && export CC="$OVERRIDE_CC";
      test -n "$OVERRIDE_CXX" && export CXX="$OVERRIDE_CXX";
393
      scons $SCONS_TARGET && eval $SCONS_CHECK_COMMAND;
394
    fi