ci: greatly expand Travis-CI build matrix

Change-Id: I1bc50c12799e1452694920acc061dd575f7a24a0
diff --git a/.jenkins.d/00-deps.sh b/.jenkins.d/00-deps.sh
index c69f492..56eeab3 100755
--- a/.jenkins.d/00-deps.sh
+++ b/.jenkins.d/00-deps.sh
@@ -24,11 +24,11 @@
 
 if has Ubuntu $NODE_LABELS; then
     sudo apt-get -qq update
-    sudo apt-get -qq install build-essential pkg-config libboost-all-dev \
+    sudo apt-get -qy install build-essential pkg-config libboost-all-dev \
                              libcrypto++-dev libsqlite3-dev libssl-dev
 
     if [[ $JOB_NAME == *"code-coverage" ]]; then
-        sudo apt-get -qq install lcov libgd-perl python-setuptools
+        sudo apt-get -qy install lcov libgd-perl python-setuptools
         sudo easy_install --upgrade gcovr
     fi
 fi
diff --git a/.jenkins.d/10-build.sh b/.jenkins.d/10-build.sh
index 9c6cb7c..6dd2326 100755
--- a/.jenkins.d/10-build.sh
+++ b/.jenkins.d/10-build.sh
@@ -6,9 +6,10 @@
 
 set -x
 
-sudo rm -Rf /usr/local/include/ndn-cxx
+sudo rm -f /usr/local/bin/ndnsec*
+sudo rm -fr /usr/local/include/ndn-cxx
 sudo rm -f /usr/local/lib/libndn-cxx*
-sudo rm -f /usr/local/lib/pkgconfig/libndn-cxx*
+sudo rm -f /usr/local/lib/pkgconfig/libndn-cxx.pc
 
 # Cleanup
 sudo ./waf -j1 --color=yes distclean
@@ -32,7 +33,7 @@
 # Configure/build shared library in debug mode with tests/examples and without precompiled headers
 if [[ $JOB_NAME == *"code-coverage" ]]; then
     COVERAGE="--with-coverage"
-elif ! has OSX-10.9 $NODE_LABELS && ! has OSX-10.11 $NODE_LABELS; then
+elif [[ -n $BUILD_WITH_ASAN || -z $TRAVIS ]]; then
     ASAN="--with-sanitizer=address"
 fi
 ./waf -j1 --color=yes configure --disable-static --enable-shared --debug --with-tests --with-examples --without-pch $COVERAGE $ASAN
diff --git a/.travis.yml b/.travis.yml
index 508b081..d5ff924 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,26 +3,138 @@
 env:
   global:
     - JOB_NAME=limited-build
+
 matrix:
   include:
+    # Linux/gcc
     - os: linux
       dist: trusty
       env:
-        - CXX=g++
+        - CXX=g++-4.8
+        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+        - BUILD_WITH_ASAN=yes
+    - os: linux
+      dist: trusty
+      addons:
+        apt:
+          sources: ubuntu-toolchain-r-test
+          packages: g++-4.9
+      env:
+        - CXX=g++-4.9
+        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+        - BUILD_WITH_ASAN=yes
+    - os: linux
+      dist: trusty
+      addons:
+        apt:
+          sources: ubuntu-toolchain-r-test
+          packages: g++-5
+      env:
+        - CXX=g++-5
+        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+        - BUILD_WITH_ASAN=yes
+    - os: linux
+      dist: trusty
+      addons:
+        apt:
+          sources: ubuntu-toolchain-r-test
+          packages: g++-6
+      env:
+        - CXX=g++-6
+        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+        - BUILD_WITH_ASAN=yes
+    - os: linux
+      dist: trusty
+      addons:
+        apt:
+          sources: ubuntu-toolchain-r-test
+          packages: g++-7
+      env:
+        - CXX=g++-7
+        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+        # BUILD_WITH_ASAN=yes # bug 4147
+
+    # Linux/clang
+    - os: linux
+      dist: trusty
+      addons:
+        apt:
+          packages: clang-3.5
+      env:
+        - CXX=clang++-3.5
+        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+        - BUILD_WITH_ASAN=yes
+    - os: linux
+      dist: trusty
+      addons:
+        apt:
+          packages: clang-3.6
+      env:
+        - CXX=clang++-3.6
+        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+        - BUILD_WITH_ASAN=yes
+    - os: linux
+      dist: trusty
+      addons:
+        apt:
+          sources:
+            - llvm-toolchain-precise-3.7
+            - ubuntu-toolchain-r-test
+          packages: clang-3.7
+      env:
+        - CXX=clang++-3.7
         - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
     - os: linux
       dist: trusty
+      addons:
+        apt:
+          sources:
+            - llvm-toolchain-precise-3.8
+            - ubuntu-toolchain-r-test
+          packages: clang-3.8
       env:
-        - CXX=clang++
+        - CXX=clang++-3.8
         - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+        - BUILD_WITH_ASAN=yes
+    - os: linux
+      dist: trusty
+      addons:
+        apt:
+          sources: llvm-toolchain-trusty-3.9
+          packages: clang-3.9
+      env:
+        - CXX=clang++-3.9
+        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+    - os: linux
+      dist: trusty
+      addons:
+        apt:
+          sources: llvm-toolchain-trusty-4.0
+          packages: clang-4.0
+      env:
+        - CXX=clang++-4.0
+        - NODE_LABELS="Linux Ubuntu Ubuntu-14.04"
+        - BUILD_WITH_ASAN=yes
+
+    # macOS/clang
+    # https://docs.travis-ci.com/user/osx-ci-environment/#OS-X-Version
     - os: osx
-      osx_image: xcode8.2
+      osx_image: xcode6.4
       env:
-        - CXX=clang++
+        - NODE_LABELS="OSX OSX-10.10"
+    - os: osx
+      osx_image: xcode7.3
+      env:
+        - NODE_LABELS="OSX OSX-10.11"
+        - BUILD_WITH_ASAN=yes
+    - os: osx
+      osx_image: xcode8.3
+      env:
         - NODE_LABELS="OSX OSX-10.12"
-notifications:
-  email:
-    on_success: always
-    on_failure: always
+        - BUILD_WITH_ASAN=yes
+
+before_script:
+  - ${CXX:-c++} --version
+
 script:
   - ./.jenkins