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
    - WAYLAND_RELEASES=http://wayland.freedesktop.org/releases
    - 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
    - LIBVDPAU_VERSION=libvdpau-1.1
    - LIBVA_VERSION=libva-1.6.2
    - LIBWAYLAND_VERSION=wayland-1.11.1
    - WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.8
    - PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig:$HOME/prefix/share/pkgconfig
    - LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH"
    - PATH="$HOME/prefix/bin:$PATH"

matrix:
  include:
    - env:
        - LABEL="meson Vulkan"
        - BUILD=meson
        - MESON_OPTIONS="-Ddri-drivers= -Dgallium-drivers="
        - LLVM_VERSION=4.0
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-4.0
          packages:
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            # From sources above
            - llvm-4.0-dev
            # Common
            - xz-utils
            - libexpat1-dev
            - libelf-dev
            - python3-pip
    - env:
        - LABEL="meson loaders/classic DRI"
        - BUILD=meson
        - MESON_OPTIONS="-Dvulkan-drivers= -Dgallium-drivers="
      addons:
        apt:
          packages:
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libxdamage-dev
            - libxfixes-dev
            - python3-pip
    - 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-bellagio --disable-gallium-osmesa"
        - GALLIUM_DRIVERS=""
        - VULKAN_DRIVERS=""
        - LIBUNWIND_FLAGS="--disable-libunwind"
      addons:
        apt:
          packages:
            - xz-utils
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libxdamage-dev
            - libxfixes-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-4.8"
        - OVERRIDE_CXX="g++-4.8"
        # 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="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
        - GALLIUM_DRIVERS="swr"
        - VULKAN_DRIVERS=""
        - LIBUNWIND_FLAGS="--enable-libunwind"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
            - binutils-2.26
            # 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
            - libunwind8-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}"
        # 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="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa"
        - GALLIUM_DRIVERS="i915,nouveau,pl111,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx"
        - VULKAN_DRIVERS=""
        - LIBUNWIND_FLAGS="--enable-libunwind"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
            - binutils-2.26
            # 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
            - libunwind8-dev
    - env:
        # NOTE: Analogous to SWR above, building Clover is quite slow.
        - 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"
        - GALLIUM_DRIVERS="r600,radeonsi"
        - 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
    - env:
        # NOTE: Analogous to SWR above, building Clover is quite slow.
        - 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"
        - GALLIUM_DRIVERS="r600,radeonsi"
        - 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
    - env:
        # NOTE: Analogous to SWR above, building Clover is quite slow.
        - 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"
        - GALLIUM_DRIVERS="r600,radeonsi"
        - 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
    - env:
        - LABEL="make Gallium ST Other"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="true"
        - LLVM_VERSION=3.3
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
        - 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-bellagio --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=""
        - LIBUNWIND_FLAGS="--enable-libunwind"
      addons:
        apt:
          packages:
            # We actually want to test against llvm-3.3
            - llvm-3.3-dev
            # 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
            - libunwind8-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}"
        # 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 --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-bellagio --disable-gallium-osmesa"
        - GALLIUM_DRIVERS=""
        - VULKAN_DRIVERS="intel,radeon"
        - LIBUNWIND_FLAGS="--disable-libunwind"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
            - binutils-2.26
            # 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-4.8"
        - OVERRIDE_CXX="g++-4.8"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
            - scons
            # 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="macOS make"
        - BUILD=make
        - MAKEFLAGS="-j4"
        - MAKE_CHECK_COMMAND="make check"
        - DRI_LOADERS="--with-platforms=x11 --disable-egl"
      os: osx

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

install:
  - pip2 install --user mako

  # Install a more modern meson from pip, since the version in the
  # ubuntu repos is often quite old. Avoid >=0.45.0 as it needs python
  # 3.5+
  - if test "x$BUILD" = xmeson; then
      pip3 install --user "meson<0.45.0";
    fi

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

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

      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)

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

      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)

      # 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/

      # Generate this 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
    fi

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

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

      ./autogen.sh --enable-debug
        $LIBUNWIND_FLAGS
        $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

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

      # 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
    fi
