language: c

sudo: false
dist: trusty

cache:
  apt: true
  ccache: true

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
    - LIBPCIACCESS_VERSION=libpciaccess-0.13.4
    - LIBDRM_VERSION=libdrm-2.4.74
    - XCBPROTO_VERSION=xcb-proto-1.11
    - LIBXCB_VERSION=libxcb-1.11
    - LIBXSHMFENCE_VERSION=libxshmfence-1.2
    - LIBTXC_DXTN_VERSION=libtxc_dxtn-1.0.1
    - LIBVDPAU_VERSION=libvdpau-1.1
    - LIBVA_VERSION=libva-1.6.2
    - LIBWAYLAND_VERSION=wayland-1.11.1
    - PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig
    - LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH"

matrix:
  include:
    - env:
        - LABEL="make loaders/classic DRI"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="make check"
        - DRI_LOADERS="--enable-glx --enable-gbm --enable-egl --with-platforms=x11,drm,surfaceless,wayland --enable-osmesa"
        - DRI_DRIVERS="i915,i965,radeon,r200,swrast,nouveau"
        - GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
        - GALLIUM_DRIVERS=""
        - VULKAN_DRIVERS=""
      addons:
        apt:
          packages:
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
    - 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="-j4"
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - OVERRIDE_CC="gcc-5"
        - OVERRIDE_CXX="g++-5"
        - 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 --disable-gallium-osmesa"
        - 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
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        - LABEL="make Gallium Drivers Other"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=3.9
        - 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 --disable-gallium-osmesa"
        - 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
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        # NOTE: Analogous to SWR above, building Clover is quite slow.
        - LABEL="make Gallium ST Clover"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - 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
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        - LABEL="make Gallium ST Other"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - 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
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        - LABEL="make Vulkan"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="make -C src/gtest check && make -C src/intel check"
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - DRI_LOADERS="--disable-glx --disable-gbm --disable-egl --with-platforms=x11,wayland"
        - DRI_DRIVERS=""
        - GALLIUM_ST="--enable-dri --enable-dri3 --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
        - 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
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        - LABEL="scons"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        # Explicitly disable.
        - SCONS_TARGET="llvm=0"
        # Keep it symmetrical to the make build.
        - SCONS_CHECK_COMMAND="scons llvm=0 check"
      addons:
        apt:
          packages:
            - scons
            # Common
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        - LABEL="scons LLVM"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        - SCONS_TARGET="llvm=1"
        # Keep it symmetrical to the make build.
        - SCONS_CHECK_COMMAND="scons llvm=1 check"
        - 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
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        - LABEL="scons SWR"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        - SCONS_TARGET="swr=1"
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        # Keep it symmetrical to the make build. There's no actual SWR, yet.
        - SCONS_CHECK_COMMAND="true"
        - 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
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev

install:
  - pip install --user mako

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

  # 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 $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
  - (cd $LIBDRM_VERSION && ./configure --prefix=$HOME/prefix --enable-vc4 --enable-freedreno --enable-etnaviv-experimental-api && make install)

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

  # 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

  - 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)

  - 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)

  # 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

script:
  - if test "x$BUILD" = xmake; then
      test -n "$OVERRIDE_CC" && export CC="$OVERRIDE_CC";
      test -n "$OVERRIDE_CXX" && export CXX="$OVERRIDE_CXX";
      export CC="$CC -isystem`pwd`";

      ./autogen.sh --enable-debug
        $DRI_LOADERS
        --with-dri-drivers=$DRI_DRIVERS
        $GALLIUM_ST
        --with-gallium-drivers=$GALLIUM_DRIVERS
        --with-vulkan-drivers=$VULKAN_DRIVERS
        --disable-llvm-shared-libs
        &&
      make && eval $MAKE_CHECK_COMMAND;
    fi

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