Squashed 'third_party/GSL/' content from commit 0cebbd7
Change-Id: Iffb2e32f2f45297ac6d3e82168cd9df4ac5acc2f
git-subtree-dir: third_party/GSL
git-subtree-split: 0cebbd77bfc21acbf1cc05983ad626539eeeb8e0
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..d583eb9
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,273 @@
+# Based on https://github.com/ldionne/hana/blob/master/.travis.yml
+
+language: cpp
+sudo: false
+notifications:
+ email: false
+
+# Use Linux unless specified otherwise
+os: linux
+dist: trusty
+
+cache:
+ directories:
+ - ${TRAVIS_BUILD_DIR}/deps
+
+matrix:
+ include:
+
+ ##########################################################################
+ # Clang on OSX
+ # Travis seems to take longer to start OSX instances,
+ # so leave this first for the overall build to be faster
+ ##########################################################################
+
+ # XCode 8.3
+ - env: COMPILER=clang++ BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ os: osx
+ osx_image: xcode8.3
+ compiler: clang
+
+ - env: COMPILER=clang++ BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ os: osx
+ osx_image: xcode8.3
+ compiler: clang
+
+ # XCode 9.1
+ - env: COMPILER=clang++ BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ os: osx
+ osx_image: xcode9.1
+ compiler: clang
+
+ - env: COMPILER=clang++ BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ os: osx
+ osx_image: xcode9.1
+ compiler: clang
+
+ ##########################################################################
+ # Clang on Linux
+ ##########################################################################
+
+ # Clang 3.6
+ - env: COMPILER=clang++-3.6 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &clang36
+ apt:
+ packages:
+ - clang-3.6
+ - g++-5
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-precise-3.6
+
+ - env: COMPILER=clang++-3.6 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *clang36
+
+ # Clang 3.7
+ - env: COMPILER=clang++-3.7 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &clang37
+ apt:
+ packages:
+ - clang-3.7
+ - g++-5
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-precise-3.7
+
+ - env: COMPILER=clang++-3.7 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *clang37
+
+ # Clang 3.8
+ - env: COMPILER=clang++-3.8 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &clang38
+ apt:
+ packages:
+ - clang-3.8
+ - g++-5
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-precise-3.8
+
+ - env: COMPILER=clang++-3.8 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *clang38
+
+ # Clang 3.9
+ - env: COMPILER=clang++-3.9 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &clang39
+ apt:
+ packages:
+ - clang-3.9
+ - g++-5
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-precise-3.9
+
+ - env: COMPILER=clang++-3.9 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *clang39
+
+ # Clang 4.0
+ - env: COMPILER=clang++-4.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &clang40
+ apt:
+ packages:
+ - clang-4.0
+ - g++-5
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-trusty-4.0
+
+ - env: COMPILER=clang++-4.0 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *clang40
+
+ # Clang 5.0
+ - env: COMPILER=clang++-5.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &clang50
+ apt:
+ packages:
+ - clang-5.0
+ - g++-7
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-trusty-5.0
+ - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main'
+ key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
+
+ - env: COMPILER=clang++-5.0 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *clang50
+
+ - env: COMPILER=clang++-5.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=17
+ addons: *clang50
+
+ - env: COMPILER=clang++-5.0 BUILD_TYPE=Release GSL_CXX_STANDARD=17
+ addons: *clang50
+
+ # Clang 6.0
+ - env: COMPILER=clang++-6.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &clang60
+ apt:
+ packages:
+ - clang-6.0
+ - g++-7
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-trusty-6.0
+ - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-6.0 main'
+ key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
+
+ - env: COMPILER=clang++-6.0 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *clang60
+
+ # Clang 6.0 c++17
+ - env: COMPILER=clang++-6.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=17
+ addons: *clang60
+
+ - env: COMPILER=clang++-6.0 BUILD_TYPE=Release GSL_CXX_STANDARD=17
+ addons: *clang60
+
+ ##########################################################################
+ # GCC on Linux
+ ##########################################################################
+
+ # GCC 5
+ - env: COMPILER=g++-5 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &gcc5
+ apt:
+ packages: g++-5
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - env: COMPILER=g++-5 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *gcc5
+
+ # GCC 6
+ - env: COMPILER=g++-6 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &gcc6
+ apt:
+ packages: g++-6
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - env: COMPILER=g++-6 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *gcc6
+
+ # GCC 7
+ - env: COMPILER=g++-7 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
+ addons: &gcc7
+ apt:
+ packages: g++-7
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - env: COMPILER=g++-7 BUILD_TYPE=Release GSL_CXX_STANDARD=14
+ addons: *gcc7
+
+ # GCC 7 c++17
+ - env: COMPILER=g++-7 BUILD_TYPE=Debug GSL_CXX_STANDARD=17
+ addons: *gcc7
+
+ - env: COMPILER=g++-7 BUILD_TYPE=Release GSL_CXX_STANDARD=17
+ addons: *gcc7
+
+install:
+ # Set the ${CXX} variable properly
+ - export CXX=${COMPILER}
+ - ${CXX} --version
+
+ # Dependencies required by the CI are installed in ${TRAVIS_BUILD_DIR}/deps/
+ - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
+ - mkdir -p "${DEPS_DIR}"
+ - cd "${DEPS_DIR}"
+
+ # Travis machines have 2 cores
+ - JOBS=2
+
+ ############################################################################
+ # Install a recent CMake (unless already installed on OS X)
+ ############################################################################
+ - CMAKE_VERSION=3.7.2
+ - |
+ if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
+ CMAKE_URL="https://cmake.org/files/v${CMAKE_VERSION%.[0-9]}/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz"
+ mkdir cmake && travis_retry wget --no-check-certificate -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
+ export PATH=${DEPS_DIR}/cmake/bin:${PATH}
+ else
+ brew install cmake || brew upgrade cmake
+ fi
+ - cmake --version
+
+ ############################################################################
+ # [linux]: Install the right version of libc++
+ ############################################################################
+ - |
+ LLVM_INSTALL=${DEPS_DIR}/llvm/install
+ # if in linux and compiler clang and llvm not installed
+ if [[ "${TRAVIS_OS_NAME}" == "linux" && "${CXX%%+*}" == "clang" && -n "$(ls -A ${LLVM_INSTALL})" ]]; then
+ if [[ "${CXX}" == "clang++-3.6" ]]; then LLVM_VERSION="3.6.2";
+ elif [[ "${CXX}" == "clang++-3.7" ]]; then LLVM_VERSION="3.7.1";
+ elif [[ "${CXX}" == "clang++-3.8" ]]; then LLVM_VERSION="3.8.1";
+ elif [[ "${CXX}" == "clang++-3.9" ]]; then LLVM_VERSION="3.9.1";
+ fi
+ LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz"
+ LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz"
+ LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz"
+ mkdir -p llvm llvm/build llvm/projects/libcxx llvm/projects/libcxxabi
+ travis_retry wget -O - ${LLVM_URL} | tar --strip-components=1 -xJ -C llvm
+ travis_retry wget -O - ${LIBCXX_URL} | tar --strip-components=1 -xJ -C llvm/projects/libcxx
+ travis_retry wget -O - ${LIBCXXABI_URL} | tar --strip-components=1 -xJ -C llvm/projects/libcxxabi
+ (cd llvm/build && cmake .. -DCMAKE_INSTALL_PREFIX=${LLVM_INSTALL})
+ (cd llvm/build/projects/libcxx && make install -j2)
+ (cd llvm/build/projects/libcxxabi && make install -j2)
+ export CXXFLAGS="-isystem ${LLVM_INSTALL}/include/c++/v1"
+ export LDFLAGS="-L ${LLVM_INSTALL}/lib -l c++ -l c++abi"
+ export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LLVM_INSTALL}/lib"
+ fi
+
+before_script:
+ # have CMake to generate build files
+ - cd "${TRAVIS_BUILD_DIR}"
+ - mkdir build && cd build
+ - cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DGSL_CXX_STANDARD=$GSL_CXX_STANDARD
+
+script:
+ # build and run tests
+ - cmake --build . -- -j${JOBS}
+ - ctest --output-on-failure -j${JOBS}