diff --git a/.travis.yml b/.travis.yml index bb21f6e..8b3d470 100644 --- a/.travis.yml +++ b/.travis.yml @@ -275,10 +275,43 @@ matrix: env: - CXX_COMPILER=clang++ CC_COMPILER=clang CONFIGURATION=Debug + - os: osx + compiler: clang++ + osx_image: xcode9.4 + env: + - CXX_COMPILER=clang++ CC_COMPILER=clang CONFIGURATION=Debug + install: - export CC=${CC_COMPILER} - export CXX=${CXX_COMPILER} - JOBS=2 # Travis machines have 2 cores. + - | + # If linux and clang install the right version of libc++. + if [[ "${TRAVIS_OS_NAME}" == "linux" && "${CXX%%+*}" == "clang" && -n "$(ls -A ${LLVM_INSTALL})" ]]; then + LLVM_INSTALL=${DEPS_DIR}/llvm/install + if [[ "${CXX}" == "clang++-3.5" ]]; then LLVM_VERSION="3.6.2"; # libc++ bug uncaught_exception not yet implemented. + elif [[ "${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"; + elif [[ "${CXX}" == "clang++-4.0" ]]; then LLVM_VERSION="4.0.1"; + elif [[ "${CXX}" == "clang++-5.0" ]]; then LLVM_VERSION="5.0.2"; + elif [[ "${CXX}" == "clang++-6.0" ]]; then LLVM_VERSION="6.0.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 && sudo make install -j JOBS) + (cd llvm/build/projects/libcxxabi && sudo make install -j JOBS) + 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: - rm -rf build