travis: add many additional builds
diff --git a/.travis.yml b/.travis.yml
index 05bba75..75f1a5a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,42 +1,230 @@
language: c
dist: trusty
-os:
-- linux
-- osx
-
-env:
- matrix:
- - BUILD_SYSTEM='python' INSTALL_TYPE='system' PYTHON_VERSION=2.7
- - BUILD_SYSTEM='python' INSTALL_TYPE='macpython' PYTHON_VERSION=2.7.10 CC=clang CXX=clang++
- - BUILD_SYSTEM='python' INSTALL_TYPE='macpython' PYTHON_VERSION=3.4.3 CC=clang CXX=clang++
- - BUILD_SYSTEM='python' INSTALL_TYPE='macpython' PYTHON_VERSION=3.5.0 CC=clang CXX=clang++
- - BUILD_SYSTEM='python' INSTALL_TYPE='homebrew' PYTHON_VERSION=2.7.10
- - BUILD_SYSTEM='python' INSTALL_TYPE='homebrew' PYTHON_VERSION=3.4.3
- - BUILD_SYSTEM='python' INSTALL_TYPE='homebrew' PYTHON_VERSION=3.5.0
- - BUILD_SYSTEM='cmake' CC=gcc CXX=g++
- - BUILD_SYSTEM='cmake' CC=clang CXX=clang++
-
matrix:
- exclude:
- - os: linux
- env: BUILD_SYSTEM='python' INSTALL_TYPE='macpython' PYTHON_VERSION=2.7.10 CC=clang CXX=clang++
- - os: linux
- env: BUILD_SYSTEM='python' INSTALL_TYPE='macpython' PYTHON_VERSION=3.4.3 CC=clang CXX=clang++
- - os: linux
- env: BUILD_SYSTEM='python' INSTALL_TYPE='macpython' PYTHON_VERSION=3.5.0 CC=clang CXX=clang++
- - os: linux
- env: BUILD_SYSTEM='python' INSTALL_TYPE='homebrew' PYTHON_VERSION=2.7.10
- - os: linux
- env: BUILD_SYSTEM='python' INSTALL_TYPE='homebrew' PYTHON_VERSION=3.4.3
- - os: linux
- env: BUILD_SYSTEM='python' INSTALL_TYPE='homebrew' PYTHON_VERSION=3.5.0
+ include:
+ ###
+ ## Linux builds using various versions of GCC.
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-6 CXX_COMPILER=g++-6
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-6
+ - g++-6
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-5 CXX_COMPILER=g++-5
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-5
+ - g++-5
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.9 CXX_COMPILER=g++-4.9
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-4.9
+ - g++-4.9
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.8 CXX_COMPILER=g++-4.8
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-4.8
+ - g++-4.8
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.7 CXX_COMPILER=g++-4.7
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-4.7
+ - g++-4.7
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.6 CXX_COMPILER=g++-4.6
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-4.6
+ - g++-4.6
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.5 CXX_COMPILER=g++-4.5
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-4.5
+ - g++-4.5
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.4 CXX_COMPILER=g++-4.4
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-4.4
+ - g++-4.4
+ ###
+ ## clang 3.5-3.8 are currently disabled. LLVM's repo was down for
+ ## a while, so Travis disabled the repository. LLVM's apt repos
+ ## are back up, but Travis has yet to re-enable them. For
+ ## details, see
+ ## https://github.com/travis-ci/apt-source-whitelist/issues/279
+ ###
+ # - os: linux
+ # env: BUILD_SYSTEM=cmake C_COMPILER=clang-3.8 CXX_COMPILER=clang++-3.8
+ # addons:
+ # apt:
+ # sources:
+ # - llvm-toolchain-precise-3.8
+ # packages:
+ # - clang-3.8
+ # - clang-3.8
+ # - os: linux
+ # env: BUILD_SYSTEM=cmake C_COMPILER=clang-3.7 CXX_COMPILER=clang++-3.7
+ # addons:
+ # apt:
+ # sources:
+ # - llvm-toolchain-precise-3.7
+ # packages:
+ # - clang-3.7
+ # - clang-3.7
+ # - os: linux
+ # env: BUILD_SYSTEM=cmake C_COMPILER=clang-3.6 CXX_COMPILER=clang++-3.6
+ # addons:
+ # apt:
+ # sources:
+ # - llvm-toolchain-precise-3.6
+ # packages:
+ # - clang-3.6
+ # - clang-3.6
+ # - os: linux
+ # env: BUILD_SYSTEM=cmake C_COMPILER=clang-3.5 CXX_COMPILER=clang++-3.5
+ # addons:
+ # apt:
+ # sources:
+ # - llvm-toolchain-precise-3.5
+ # packages:
+ # - clang-3.5
+ # - clang-3.5
+ ###
+ ## clang/clang++ on 12.04 is 3.4
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=clang CXX_COMPILER=clang++
+
+ ###
+ ## Python build on Linux
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=python C_COMPILER=gcc-6 CXX_COMPILER=g++-6
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-6
+ - g++-6
+
+ ###
+ ## CMake on OS X
+ ##
+ ## These all work, but it seems unnecessary to actually build them
+ ## all since we already test all these versions of GCC on Linux.
+ ## We'll just test 4.4 and the most recent version.
+ ###
+ - os: osx
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-6 CXX_COMPILER=g++-6
+ # - os: osx
+ # env: BUILD_SYSTEM=cmake C_COMPILER=gcc-5 CXX_COMPILER=g++-5
+ # - os: osx
+ # env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.9 CXX_COMPILER=g++-4.9
+ # - os: osx
+ # env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.8 CXX_COMPILER=g++-4.8
+ # - os: osx
+ # env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.7 CXX_COMPILER=g++-4.7
+ # - os: osx
+ # env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.6 CXX_COMPILER=g++-4.6
+ # - os: osx
+ # env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.5 CXX_COMPILER=g++-4.5
+ - os: osx
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.4 CXX_COMPILER=g++-4.4
+
+ ###
+ ## Python OS X builds
+ ###
+ - os: osx
+ env: BUILD_SYSTEM=python INSTALL_TYPE=system PYTHON_VERSION=2.7
+ - os: osx
+ env: BUILD_SYSTEM=python INSTALL_TYPE=macpython PYTHON_VERSION=2.7.10
+ - os: osx
+ env: BUILD_SYSTEM=python INSTALL_TYPE=homebrew PYTHON_VERSION=2.7.10
+ - os: osx
+ env: BUILD_SYSTEM=python INSTALL_TYPE=macpython PYTHON_VERSION=3.4.3
+ - os: osx
+ env: BUILD_SYSTEM=python INSTALL_TYPE=homebrew PYTHON_VERSION=3.4.3
+ - os: osx
+ env: BUILD_SYSTEM=python INSTALL_TYPE=macpython PYTHON_VERSION=3.5.0
+ - os: osx
+ env: BUILD_SYSTEM=python INSTALL_TYPE=homebrew PYTHON_VERSION=3.5.0
+
+ ###
+ ## Sanitizers
+ ##
+ ## There is a bug in the current Ubuntu 12.04 packages (from the
+ ## ubuntu-toolchain-r-test repository) which causes an error when
+ ## linking when using a sanitizer. Once that issue is resolved,
+ ## these can be enabled. Unfortunately, the ubuntu-toolchain-r
+ ## repository doesn't allow bug reports, so there is no way to
+ ## track the issue (or even know if they are aware of it).
+ ###
+ # - os: linux
+ # env: BUILD_SYSTEM=cmake C_COMPILER=gcc-6 CXX_COMPILER=g++-6 SANITIZER=address
+ # addons:
+ # apt:
+ # sources:
+ # - ubuntu-toolchain-r-test
+ # packages:
+ # - gcc-6
+ # - g++-6
+ # - os: linux
+ # env: BUILD_SYSTEM=cmake C_COMPILER=gcc-6 CXX_COMPILER=g++-6 SANITIZER=thread
+ # addons:
+ # apt:
+ # sources:
+ # - ubuntu-toolchain-r-test
+ # packages:
+ # - gcc-6
+ # - g++-6
+
+before_install:
+###
+## If we use the matrix to set CC/CXX, Travis overwrites the values,
+## so instead we use C/CXX_COMPILER, then copy the values to CC/CXX
+## here (after Travis has set CC/CXX).
+###
+- if [ -n "${C_COMPILER}" ]; then export CC="${C_COMPILER}"; fi
+- if [ -n "${CXX_COMPILER}" ]; then export CXX="${CXX_COMPILER}"; fi
install:
-- ./buildfiles/.travis.sh install
+- ./.travis.sh install
script:
-- ./buildfiles/.travis.sh script
+- ./.travis.sh script
after_success:
-- ./buildfiles/.travis.sh after_success
+- ./.travis.sh after_success
before_deploy:
- if [ "${BUILD_SYSTEM}" = "python" ]; then export WHEELS=$(ls ./dist/*.whl); fi