Expand Travis-CI build matrix

Change-Id: I68b18923232c6b186fb8749cd132a9d5578362f3
diff --git a/.travis.yml b/.travis.yml
index 76e3ded..b5f672a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,29 +1,104 @@
+language: cpp
+dist: trusty
 sudo: required
-language: generic
 env:
   global:
-    - JOB_NAME=limited-build
     - BOOST_TEST_COLOR_OUTPUT=true
+    - JOB_NAME=limited-build
+    - WAF_JOBS=2
+
 matrix:
   include:
+    # Linux/gcc
+    # https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+packages
     - os: linux
-      dist: trusty
-      env:
-        - CXX=g++
-        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+      env: COMPILER=g++-4.8
     - os: linux
-      dist: trusty
-      env:
-        - CXX=clang++
-        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+      env: COMPILER=g++-4.9
+      addons:
+        apt:
+          sources: ubuntu-toolchain-r-test
+          packages: g++-4.9
+    - os: linux
+      env: COMPILER=g++-5
+      addons:
+        apt:
+          sources: ubuntu-toolchain-r-test
+          packages: g++-5
+    - os: linux
+      env: COMPILER=g++-6
+      addons:
+        apt:
+          sources: ubuntu-toolchain-r-test
+          packages: g++-6
+    - os: linux
+      env: COMPILER=g++-7
+      addons:
+        apt:
+          sources: ubuntu-toolchain-r-test
+          packages: g++-7
+
+    # Linux/clang
+    # https://apt.llvm.org/
+    - os: linux
+      env: COMPILER=clang++-3.5
+      addons:
+        apt:
+          packages: clang-3.5
+    - os: linux
+      env: COMPILER=clang++-3.6
+      addons:
+        apt:
+          packages: clang-3.6
+    - os: linux
+      env: COMPILER=clang++-3.7 DISABLE_ASAN=yes
+      addons:
+        apt:
+          sources: ["llvm-toolchain-precise-3.7", "ubuntu-toolchain-r-test"]
+          packages: clang-3.7
+    - os: linux
+      env: COMPILER=clang++-3.8
+      addons:
+        apt:
+          sources: ["llvm-toolchain-precise-3.8", "ubuntu-toolchain-r-test"]
+          packages: clang-3.8
+    - os: linux
+      env: COMPILER=clang++-3.9 DISABLE_ASAN=yes
+      addons:
+        apt:
+          sources: ["llvm-toolchain-trusty-3.9", "ubuntu-toolchain-r-test"]
+          packages: clang-3.9
+    - os: linux
+      env: COMPILER=clang++-4.0
+      addons:
+        apt:
+          sources: ["llvm-toolchain-trusty-4.0", "ubuntu-toolchain-r-test"]
+          packages: clang-4.0
+    - os: linux
+      env: COMPILER=clang++-5.0
+      addons:
+        apt:
+          sources: ["llvm-toolchain-trusty-5.0", "ubuntu-toolchain-r-test"]
+          packages: clang-5.0
+
+    # macOS/clang
+    # https://docs.travis-ci.com/user/osx-ci-environment/#OS-X-Version
     - os: osx
-      osx_image: xcode8.2
-      env:
-        - CXX=clang++
-        - NODE_LABELS="OSX OSX-10.12"
-notifications:
-  email:
-    on_success: always
-    on_failure: always
+      osx_image: xcode7.3
+      env: OSX_VERSION=10.11
+    - os: osx
+      osx_image: xcode8.3
+      env: OSX_VERSION=10.12
+    - os: osx
+      osx_image: xcode9.2
+      env: OSX_VERSION=10.12
+
+before_script:
+  - if [[ ${TRAVIS_OS_NAME} == linux ]]; then export NODE_LABELS="Linux Ubuntu Ubuntu-14.04"; fi
+  - if [[ ${TRAVIS_OS_NAME} == osx ]]; then export NODE_LABELS="OSX OSX-${OSX_VERSION}"; fi
+  - if [[ -n ${COMPILER} ]]; then export CXX=${COMPILER}; fi
+  - ${CXX:-c++} --version
+  - python --version
+
 script:
   - ./.jenkins