.travis.yml 25.9 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

env:
  global:
12 13 14
    - XORG_RELEASES=https://xorg.freedesktop.org/releases/individual
    - XCB_RELEASES=https://xcb.freedesktop.org/dist
    - WAYLAND_RELEASES=https://wayland.freedesktop.org/releases
15 16 17 18
    - XORGMACROS_VERSION=util-macros-1.19.0
    - GLPROTO_VERSION=glproto-1.4.17
    - DRI2PROTO_VERSION=dri2proto-2.8
    - LIBPCIACCESS_VERSION=libpciaccess-0.13.4
19
    - LIBDRM_VERSION=libdrm-2.4.74
20
    - XCBPROTO_VERSION=xcb-proto-1.13
21 22
    - RANDRPROTO_VERSION=randrproto-1.3.0
    - LIBXRANDR_VERSION=libXrandr-1.3.0
23
    - LIBXCB_VERSION=libxcb-1.13
24
    - LIBXSHMFENCE_VERSION=libxshmfence-1.2
25
    - LIBVDPAU_VERSION=libvdpau-1.1
26
    - LIBVA_VERSION=libva-1.7.0
27
    - LIBWAYLAND_VERSION=wayland-1.15.0
28 29
    - WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.8
    - PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig:$HOME/prefix/share/pkgconfig
30
    - LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH"
31
    - PATH="$HOME/prefix/bin:$PATH"
32 33 34

matrix:
  include:
35 36 37
    - env:
        - LABEL="meson Vulkan"
        - BUILD=meson
38 39 40
        - DRI_DRIVERS=""
        - GALLIUM_DRIVERS=""
        - VULKAN_DRIVERS="intel,amd"
41
        - LLVM_VERSION=6.0
42
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
43 44 45
      addons:
        apt:
          sources:
46
            - llvm-toolchain-trusty-6.0
47
            # llvm-6 requires libstdc++4.9 which is not in main repo
48
            - ubuntu-toolchain-r-test
49 50
          packages:
            # From sources above
51
            - llvm-6.0-dev
52 53 54 55
            # Common
            - xz-utils
            - libexpat1-dev
            - libelf-dev
56
            - python3.5
57 58 59 60
            - python3-pip
    - env:
        - LABEL="meson loaders/classic DRI"
        - BUILD=meson
61 62 63
        - DRI_DRIVERS="i915,i965,r100,r200,swrast,nouveau"
        - GALLIUM_DRIVERS=""
        - VULKAN_DRIVERS=""
64 65 66 67 68 69 70 71 72
      addons:
        apt:
          packages:
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libxdamage-dev
            - libxfixes-dev
73
            - python3.5
74
            - python3-pip
75
    - env:
76
        - LABEL="make loaders/classic DRI"
77
        - BUILD=make
78
        - MAKEFLAGS="-j4"
79
        - MAKE_CHECK_COMMAND="make check"
80
        - DRI_LOADERS="--enable-glx --enable-gbm --enable-egl --with-platforms=x11,drm,surfaceless,wayland --enable-osmesa"
81
        - DRI_DRIVERS="i915,i965,radeon,r200,swrast,nouveau"
82
        - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
83 84
        - GALLIUM_DRIVERS=""
        - VULKAN_DRIVERS=""
85
        - LIBUNWIND_FLAGS="--disable-libunwind"
86 87 88
      addons:
        apt:
          packages:
89
            - xz-utils
90 91 92
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
93 94
            - libxdamage-dev
            - libxfixes-dev
95
            - python3-pip
96 97 98 99 100 101
    - 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
102
        - MAKEFLAGS="-j4"
103
        - MAKE_CHECK_COMMAND="true"
104
        - LLVM_VERSION=6.0
105
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
106
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
107
        - DRI_DRIVERS=""
108
        - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
109 110
        - GALLIUM_DRIVERS="swr"
        - VULKAN_DRIVERS=""
111
        - LIBUNWIND_FLAGS="--enable-libunwind"
112 113 114
      addons:
        apt:
          sources:
115 116 117
            - llvm-toolchain-trusty-6.0
            # llvm-6 requires libstdc++4.9 which is not in main repo
            - ubuntu-toolchain-r-test
118 119
          packages:
            # From sources above
120
            - llvm-6.0-dev
121
            # Common
122
            - xz-utils
123 124 125 126
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
127
            - libunwind8-dev
128
            - python3-pip
129 130 131 132 133
    - env:
        - LABEL="make Gallium Drivers RadeonSI"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="true"
134
        - LLVM_VERSION=6.0
135 136 137 138 139 140 141 142 143 144
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
        - DRI_DRIVERS=""
        - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
        - GALLIUM_DRIVERS="radeonsi"
        - VULKAN_DRIVERS=""
        - LIBUNWIND_FLAGS="--enable-libunwind"
      addons:
        apt:
          sources:
145
            - llvm-toolchain-trusty-6.0
146
            # llvm-6 requires libstdc++4.9 which is not in main repo
147
            - ubuntu-toolchain-r-test
148 149
          packages:
            # From sources above
150
            - llvm-6.0-dev
151 152 153 154 155 156 157
            # Common
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
            - libunwind8-dev
158
            - python3-pip
159 160 161
    - env:
        - LABEL="make Gallium Drivers Other"
        - BUILD=make
162
        - MAKEFLAGS="-j4"
163 164 165
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
166 167
        # New binutils linker is required for llvm-3.9
        - OVERRIDE_PATH=/usr/lib/binutils-2.26/bin
168 169
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
        - DRI_DRIVERS=""
170
        - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
171
        - GALLIUM_DRIVERS="i915,nouveau,pl111,r300,r600,freedreno,svga,swrast,v3d,vc4,virgl,etnaviv,imx"
172
        - VULKAN_DRIVERS=""
173
        - LIBUNWIND_FLAGS="--enable-libunwind"
174 175 176 177 178
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
179
            - binutils-2.26
180 181 182 183 184
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            # From sources above
            - llvm-3.9-dev
            # Common
185
            - xz-utils
186 187 188
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
189
            - libelf-dev
190
            - libunwind8-dev
191
            - python3-pip
192 193 194 195 196 197 198 199 200 201 202 203 204 205
    - env:
        - LABEL="make Gallium ST Clover LLVM-3.9"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - OVERRIDE_CC=gcc-4.7
        - OVERRIDE_CXX=g++-4.7
        # New binutils linker is required for llvm-3.9
        - OVERRIDE_PATH=/usr/lib/binutils-2.26/bin
        - 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-bellagio --disable-gallium-osmesa"
206
        - GALLIUM_DRIVERS="r600"
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
        - VULKAN_DRIVERS=""
        - LIBUNWIND_FLAGS="--enable-libunwind"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
            - binutils-2.26
            - libclc-dev
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            - g++-4.7
            # From sources above
            - llvm-3.9-dev
            - clang-3.9
            - libclang-3.9-dev
            # Common
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
            - libunwind8-dev
230
            - python3-pip
231 232 233 234 235 236 237 238 239 240 241 242
    - env:
        - LABEL="make Gallium ST Clover LLVM-4.0"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=4.0
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - OVERRIDE_CC=gcc-4.8
        - OVERRIDE_CXX=g++-4.8
        - 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-bellagio --disable-gallium-osmesa"
243
        - GALLIUM_DRIVERS="r600"
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265
        - VULKAN_DRIVERS=""
        - LIBUNWIND_FLAGS="--enable-libunwind"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-4.0
          packages:
            - libclc-dev
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            - g++-4.8
            # From sources above
            - llvm-4.0-dev
            - clang-4.0
            - libclang-4.0-dev
            # Common
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
            - libunwind8-dev
266
            - python3-pip
267 268 269 270 271 272 273 274 275 276 277 278
    - env:
        - LABEL="make Gallium ST Clover LLVM-5.0"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=5.0
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - OVERRIDE_CC=gcc-4.8
        - OVERRIDE_CXX=g++-4.8
        - 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-bellagio --disable-gallium-osmesa"
279
        - GALLIUM_DRIVERS="r600"
280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301
        - VULKAN_DRIVERS=""
        - LIBUNWIND_FLAGS="--enable-libunwind"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-5.0
          packages:
            - libclc-dev
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            - g++-4.8
            # From sources above
            - llvm-5.0-dev
            - clang-5.0
            - libclang-5.0-dev
            # Common
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
            - libunwind8-dev
302
            - python3-pip
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319
    - env:
        - LABEL="make Gallium ST Clover LLVM-6.0"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=6.0
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - 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-bellagio --disable-gallium-osmesa"
        - GALLIUM_DRIVERS="r600,radeonsi"
        - VULKAN_DRIVERS=""
        - LIBUNWIND_FLAGS="--enable-libunwind"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-6.0
320
            # llvm-6 requires libstdc++4.9 which is not in main repo
321 322 323 324 325 326 327 328 329 330 331 332 333 334
            - ubuntu-toolchain-r-test
          packages:
            - libclc-dev
            # From sources above
            - llvm-6.0-dev
            - clang-6.0
            - libclang-6.0-dev
            # Common
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
            - libunwind8-dev
335
            - python3-pip
336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368
    - env:
        - LABEL="make Gallium ST Clover LLVM-7"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=7
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - 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-bellagio --disable-gallium-osmesa"
        - GALLIUM_DRIVERS="r600,radeonsi"
        - VULKAN_DRIVERS=""
        - LIBUNWIND_FLAGS="--enable-libunwind"
      addons:
        apt:
          sources:
            - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-7 main'
              key_url: https://apt.llvm.org/llvm-snapshot.gpg.key
            # llvm-7 requires libstdc++4.9 which is not in main repo
            - ubuntu-toolchain-r-test
          packages:
            - libclc-dev
            # From sources above
            - llvm-7-dev
            - clang-7
            - libclang-7-dev
            # Common
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
            - libunwind8-dev
369 370 371
    - env:
        - LABEL="make Gallium ST Other"
        - BUILD=make
372
        - MAKEFLAGS="-j4"
373
        - MAKE_CHECK_COMMAND="true"
374 375
        - LLVM_VERSION=3.3
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
376 377
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
        - DRI_DRIVERS=""
378
        - GALLIUM_ST="--enable-dri --disable-opencl --enable-xa --enable-nine --enable-xvmc --enable-vdpau --enable-va --enable-omx-bellagio --enable-gallium-osmesa"
379 380 381 382 383
        # 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=""
384
        - LIBUNWIND_FLAGS="--enable-libunwind"
385 386 387
      addons:
        apt:
          packages:
388 389
            # We actually want to test against llvm-3.3
            - llvm-3.3-dev
390 391 392 393 394 395 396 397 398
            # 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
399
            - xz-utils
400 401 402 403
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
404
            - libunwind8-dev
405
            - python3-pip
406 407 408
    - env:
        - LABEL="make Vulkan"
        - BUILD=make
409
        - MAKEFLAGS="-j4"
410
        - MAKE_CHECK_COMMAND="make -C src/gtest check && make -C src/intel check"
411
        - LLVM_VERSION=6.0
412
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
413
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl --with-platforms=x11,wayland"
414
        - DRI_DRIVERS=""
415
        - GALLIUM_ST="--enable-dri --enable-dri3 --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
416 417
        - GALLIUM_DRIVERS=""
        - VULKAN_DRIVERS="intel,radeon"
418
        - LIBUNWIND_FLAGS="--disable-libunwind"
419 420 421
      addons:
        apt:
          sources:
422
            - llvm-toolchain-trusty-6.0
423
            # llvm-6 requires libstdc++4.9 which is not in main repo
424
            - ubuntu-toolchain-r-test
425 426
          packages:
            # From sources above
427
            - llvm-6.0-dev
428
            # Common
429
            - xz-utils
430 431 432 433
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
434
            - python3-pip
435 436 437 438 439 440
    - env:
        - LABEL="scons"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        # Explicitly disable.
        - SCONS_TARGET="llvm=0"
441 442
        # Keep it symmetrical to the make build.
        - SCONS_CHECK_COMMAND="scons llvm=0 check"
443 444 445 446
      addons:
        apt:
          packages:
            # Common
447
            - xz-utils
448 449 450 451
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
452 453 454 455 456
    - env:
        - LABEL="scons LLVM"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        - SCONS_TARGET="llvm=1"
457 458
        # Keep it symmetrical to the make build.
        - SCONS_CHECK_COMMAND="scons llvm=1 check"
459 460 461 462 463 464 465 466 467
        - LLVM_VERSION=3.3
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
      addons:
        apt:
          packages:
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            - llvm-3.3-dev
            # Common
468
            - xz-utils
469 470 471 472
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
473 474 475 476 477
    - env:
        - LABEL="scons SWR"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        - SCONS_TARGET="swr=1"
478
        - LLVM_VERSION=6.0
479
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
480 481
        # Keep it symmetrical to the make build. There's no actual SWR, yet.
        - SCONS_CHECK_COMMAND="true"
482 483 484
      addons:
        apt:
          sources:
485 486 487
            - llvm-toolchain-trusty-6.0
            # llvm-6 requires libstdc++4.9 which is not in main repo
            - ubuntu-toolchain-r-test
488 489
          packages:
            # From sources above
490
            - llvm-6.0-dev
491
            # Common
492
            - xz-utils
493 494 495 496
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
497 498 499 500 501 502 503
    - env:
        - LABEL="macOS make"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="make check"
        - DRI_LOADERS="--with-platforms=x11 --disable-egl"
      os: osx
504 505 506 507
    - env:
        - LABEL="macOS meson"
        - BUILD=meson
      os: osx
508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530

before_install:
  - |
    if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
      HOMEBREW_NO_AUTO_UPDATE=1 brew install python3 ninja expat gettext
      # Set PATH for homebrew pip3 installs
      PATH="$HOME/Library/Python/3.6/bin:${PATH}"
      # Set PKG_CONFIG_PATH for keg-only expat
      PKG_CONFIG_PATH="/usr/local/opt/expat/lib/pkgconfig:${PKG_CONFIG_PATH}"
      # Set PATH for keg-only gettext
      PATH="/usr/local/opt/gettext/bin:${PATH}"

      # Install xquartz for prereqs ...
      XQUARTZ_VERSION="2.7.11"
      wget -nv https://dl.bintray.com/xquartz/downloads/XQuartz-${XQUARTZ_VERSION}.dmg
      hdiutil attach XQuartz-${XQUARTZ_VERSION}.dmg
      sudo installer -pkg /Volumes/XQuartz-${XQUARTZ_VERSION}/XQuartz.pkg -target /
      hdiutil detach /Volumes/XQuartz-${XQUARTZ_VERSION}
      # ... and set paths
      PATH="/opt/X11/bin:${PATH}"
      PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:${PKG_CONFIG_PATH}"
      ACLOCAL="aclocal -I /opt/X11/share/aclocal -I /usr/local/share/aclocal"
    fi
531 532

install:
533
  # Install a more modern meson from pip, since the version in the
534 535
  # ubuntu repos is often quite old. This requires python>=3.5, so
  # let's make it default
536
  - if test "x$BUILD" = xmeson; then
537
      sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 10;
538
      pip3 install --user meson;
539 540 541 542 543
      pip3 install --user mako;
    fi

  # Install autotools build dependencies
  - if test "x$BUILD" = xmake; then
544
      pip2 install --user mako;
545 546
    fi

547 548 549
  # Install a more modern scons from pip.
  - if test "x$BUILD" = xscons; then
      pip2 install --user "scons>=2.4";
550
      pip2 install --user mako;
551 552
    fi

553 554
  # Since libdrm gets updated in configure.ac regularly, try to pick up the
  # latest version from there.
555
  - for line in `grep "^LIBDRM.*_REQUIRED=" configure.ac`; do
556 557 558 559 560 561 562
      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

563 564 565
  # Install dependencies where we require specific versions (or where
  # disallowed by Travis CI's package whitelisting).

566 567 568 569 570
  - |
    if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
      wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
      tar -jxvf $XORGMACROS_VERSION.tar.bz2
      (cd $XORGMACROS_VERSION && ./configure --prefix=$HOME/prefix && make install)
571

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

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

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

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

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

592
      wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
593 594
      tar -jxvf $LIBDRM_VERSION.tar.bz2
      (cd $LIBDRM_VERSION && ./configure --prefix=$HOME/prefix --enable-vc4 --enable-freedreno --enable-etnaviv-experimental-api && make install)
595

596 597 598 599 600 601 602 603
      wget $XORG_RELEASES/proto/$RANDRPROTO_VERSION.tar.bz2
      tar -jxvf $RANDRPROTO_VERSION.tar.bz2
      (cd $RANDRPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)

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

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

608
      wget https://people.freedesktop.org/~aplattner/vdpau/$LIBVDPAU_VERSION.tar.bz2
609 610
      tar -jxvf $LIBVDPAU_VERSION.tar.bz2
      (cd $LIBVDPAU_VERSION && ./configure --prefix=$HOME/prefix && make install)
611

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

616 617 618
      wget $WAYLAND_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)
619

620 621 622
      wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz
      tar -axvf $WAYLAND_PROTOCOLS_VERSION.tar.xz
      (cd $WAYLAND_PROTOCOLS_VERSION && ./configure --prefix=$HOME/prefix && make install)
623

624 625 626 627
      # Meson requires ninja >= 1.6, but trusty has 1.3.x
      wget https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-linux.zip
      unzip ninja-linux.zip
      mv ninja $HOME/prefix/bin/
628

629 630 631
      # Generate this header since one is missing on the Travis instance
      mkdir -p linux
      printf "%s\n" \
632 633 634 635 636 637 638
           "#ifndef _LINUX_MEMFD_H" \
           "#define _LINUX_MEMFD_H" \
           "" \
           "#define MFD_CLOEXEC             0x0001U" \
           "#define MFD_ALLOW_SEALING       0x0002U" \
           "" \
           "#endif /* _LINUX_MEMFD_H */" > linux/memfd.h
639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662

      # Generate this header, including the missing SYS_memfd_create
      # macro, which is not provided by the header in the Travis
      # instance
      mkdir -p sys
      printf "%s\n" \
           "#ifndef _SYSCALL_H" \
           "#define _SYSCALL_H      1" \
           "" \
           "#include <asm/unistd.h>" \
           "" \
           "#ifndef _LIBC" \
           "# include <bits/syscall.h>" \
           "#endif" \
           "" \
           "#ifndef __NR_memfd_create" \
           "# define __NR_memfd_create 319 /* Taken from <asm/unistd_64.h> */" \
           "#endif" \
           "" \
           "#ifndef SYS_memfd_create" \
           "# define SYS_memfd_create __NR_memfd_create" \
           "#endif" \
           "" \
           "#endif" > sys/syscall.h
663
    fi
664

665
script:
666
  - if test "x$BUILD" = xmake; then
667 668
      test -n "$OVERRIDE_CC" && export CC="$OVERRIDE_CC";
      test -n "$OVERRIDE_CXX" && export CXX="$OVERRIDE_CXX";
669 670
      test -n "$OVERRIDE_PATH" && export PATH="$OVERRIDE_PATH:$PATH";

671
      export CFLAGS="$CFLAGS -isystem`pwd`";
672

673 674 675
      mkdir build &&
      cd build &&
      ../autogen.sh --enable-debug
676
        $LIBUNWIND_FLAGS
677
        $DRI_LOADERS
678
        --with-dri-drivers=$DRI_DRIVERS
679
        $GALLIUM_ST
680 681
        --with-gallium-drivers=$GALLIUM_DRIVERS
        --with-vulkan-drivers=$VULKAN_DRIVERS
682
        --disable-llvm-shared-libs
683 684
        &&
      make && eval $MAKE_CHECK_COMMAND;
685 686 687
    fi

  - if test "x$BUILD" = xscons; then
688 689
      test -n "$OVERRIDE_CC" && export CC="$OVERRIDE_CC";
      test -n "$OVERRIDE_CXX" && export CXX="$OVERRIDE_CXX";
690
      scons $SCONS_TARGET && eval $SCONS_CHECK_COMMAND;
691
    fi
692

693 694 695
  - |
    if test "x$BUILD" = xmeson; then

696 697 698 699 700 701 702 703
      if test "x$TRAVIS_OS_NAME" == xosx; then
        MESON_OPTIONS="-Degl=false"
      fi

      if test "x$TRAVIS_OS_NAME" == xlinux; then
        MESON_OPTIONS="-Ddri-drivers=${DRI_DRIVERS:-[]} -Dgallium-drivers=${GALLIUM_DRIVERS:-[]} -Dvulkan-drivers=${VULKAN_DRIVERS:-[]}"
      fi

704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724
      # Travis CI has moved to LLVM 5.0, and meson is detecting
      # automatically the available version in /usr/local/bin based on
      # the PATH env variable order preference.
      #
      # As for 0.44.x, Meson cannot receive the path to the
      # llvm-config binary as a configuration parameter. See
      # https://github.com/mesonbuild/meson/issues/2887 and
      # https://github.com/dcbaker/meson/commit/7c8b6ee3fa42f43c9ac7dcacc61a77eca3f1bcef
      #
      # We want to use the custom (APT) installed version. Therefore,
      # let's make Meson find our wanted version sooner than the one
      # at /usr/local/bin
      #
      # Once this is corrected, we would still need a patch similar
      # to:
      # https://lists.freedesktop.org/archives/mesa-dev/2017-December/180217.html
      test -f /usr/bin/$LLVM_CONFIG && ln -s /usr/bin/$LLVM_CONFIG $HOME/prefix/bin/llvm-config

      export CFLAGS="$CFLAGS -isystem`pwd`"
      meson _build $MESON_OPTIONS
      ninja -C _build
725
    fi