diff --git a/.travis.yml b/.travis.yml
index 15677891b6cc552eed2e723d5b681dda2e6fef73..654ab5ba5943ca52de7e2b9d22266740daa5585e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,18 +1,27 @@
 language: c
-cache: ccache
+cache:
+    ccache: true
+    directories:
+        - $HOME/Library/Caches/Homebrew
 branches:
     except:
         - /appveyor.*/
 
+os: osx
+osx_image: xcode9.2
+
 matrix:
   include:
-    - os: osx
-      osx_image: xcode9.2
-      env: DISTRO=xcode9.2
+    - env: TOOL=meson
+    - env: TOOL=autotools
 
 install:
-    - HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache
+    - brew update
+    - HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache meson
 
 script:
-    - ./test/scripts/build-travis-osx.sh
+    - ./test/scripts/build-travis-osx.sh $TOOL
     - ccache -s
+
+before_cache:
+    - brew cleanup
diff --git a/test/scripts/build-travis-osx.sh b/test/scripts/build-travis-osx.sh
index 193a8851d5b970c2870781bf2c11c5d4464096a1..800fafcb2bbcd18d6e9503515baf01c9cec14245 100755
--- a/test/scripts/build-travis-osx.sh
+++ b/test/scripts/build-travis-osx.sh
@@ -30,14 +30,29 @@ export PATH="/usr/local/opt/ccache/libexec:$PATH"
 pushd $HOME
 git clone git://anongit.freedesktop.org/git/xorg/proto/xorgproto
 cd xorgproto
-autoreconf -fvi
-./configure --prefix=/opt/X11
-sudo make install
+if [[ "$1" == "autotools" ]]; then
+    autoreconf -fvi
+    ./configure --prefix=/opt/X11
+    sudo make install
+elif [[ "$1" == "meson" ]]; then
+    meson _build/ -Dprefix=/opt/X11
+    ninja -C _build/
+    sudo ninja -C _build/ install
+else
+    echo "Unknown build tool $1"
+    exit 1
+fi
 popd
 
 # build
-autoreconf -fvi
-./configure --prefix=/opt/X11 --disable-dependency-tracking --with-apple-application-name=XQuartz --with-bundle-id-prefix=org.macosforge.xquartz
-make
-make check
-make install DESTDIR=$(pwd)/staging
+if [[ "$1" == "autotools" ]]; then
+    autoreconf -fvi
+    ./configure --prefix=/opt/X11 --disable-dependency-tracking --with-apple-application-name=XQuartz --with-bundle-id-prefix=org.macosforge.xquartz
+    make
+    make check
+    make install DESTDIR=$(pwd)/staging
+elif [[ "$1" == "meson" ]]; then
+    meson _build/ -Dprefix=/opt/X11 -Dsecure-rpc=false
+    DESTDIR=$(pwd)/staging ninja -C _build/ install
+    ninja -C _build/ test
+fi