1language: cpp 2 3dist: trusty 4sudo: true 5 6env: 7 global: 8 secure: FNZOWYO89qsT9kQKngrYbpnqCTMCSCSQ2rnZ3l17KHctOfS554TTDS+dfxPYz2XHm6azYDVcyBSs2gWJ6TmXZZZqEfr3X4VV4ooAa9PoeIkvVlT654zjZwxeXPYXrHFXZh/ImLUGWjsxRaUHYOv5SzyNGcZv07dtLKVd0ykhbH4= 9 10matrix: 11 include: 12 13 - env: BUILD_TYPE=Debug ASAN=Off RUN_TEST=On EXCEPTIONS=On 14 os: osx 15 osx_image: xcode8 16 17 - env: BUILD_TYPE=Debug ASAN=Off LLVM_VERSION=3.8.0 RUN_TEST=On EXCEPTIONS=On 18 os: linux 19 compiler: clang 20 21 - env: BUILD_TYPE=Release ASAN=Off GCC_VERSION=4.9 RUN_TEST=On EXCEPTIONS=On 22 os: linux 23 compiler: gcc 24 addons: 25 apt: 26 packages: 27 - g++-4.9 28 sources: 29 - ubuntu-toolchain-r-test 30 31 - env: BUILD_TYPE=Release ASAN=Off GCC_VERSION=7 RUN_TEST=On EXCEPTIONS=On 32 os: linux 33 compiler: gcc 34 addons: &gcc7 35 apt: 36 packages: 37 - g++-7 38 sources: 39 - ubuntu-toolchain-r-test 40 41 - env: BUILD_TYPE=Debug ASAN=Off GCC_VERSION=8 RUN_TEST=On EXCEPTIONS=Off 42 os: linux 43 compiler: gcc 44 addons: &gcc8 45 apt: 46 packages: 47 - g++-8 48 sources: 49 - ubuntu-toolchain-r-test 50 51 - env: BUILD_TYPE=Release ASAN=Off GCC_VERSION=8 RUN_TEST=On EXCEPTIONS=On 52 os: linux 53 compiler: gcc 54 addons: &gcc8 55 apt: 56 packages: 57 - g++-8 58 sources: 59 - ubuntu-toolchain-r-test 60 61 - env: BUILD_TYPE=Debug ASAN=Off LLVM_VERSION=3.8.0 RUN_TEST=Off EXCEPTIONS=On PROJECT=doc PUBLISH_DOCS=On DOXYGEN_VERSION=1.8.11 62 os: linux 63 compiler: clang 64 addons: 65 apt: 66 packages: 67 - graphviz 68 sources: 69 - ubuntu-toolchain-r-test 70 71cache: 72 directories: 73 - ${TRAVIS_BUILD_DIR}/deps/llvm-3.8.0 74 - ${TRAVIS_BUILD_DIR}/deps/cmake-3.5.2 75 - ${TRAVIS_BUILD_DIR}/deps/doxygen-1.8.11 76 77install: 78 ############################################################################ 79 # All the dependencies are installed in ${TRAVIS_BUILD_DIR}/deps/ 80 ############################################################################ 81 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" 82 - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR} 83 84 ############################################################################ 85 # Install Clang, libc++ and libc++abi 86 ############################################################################ 87 - | 88 if [[ "${LLVM_VERSION}" != "" ]]; then 89 LLVM_DIR=${DEPS_DIR}/llvm-${LLVM_VERSION} 90 if [[ -z "$(ls -A ${LLVM_DIR})" ]]; then 91 LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz" 92 LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz" 93 LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz" 94 CLANG_URL="http://llvm.org/releases/${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-x86_64-linux-gnu-ubuntu-14.04.tar.xz" 95 mkdir -p ${LLVM_DIR} ${LLVM_DIR}/build ${LLVM_DIR}/projects/libcxx ${LLVM_DIR}/projects/libcxxabi ${LLVM_DIR}/clang 96 travis_retry wget --quiet -O - ${LLVM_URL} | tar --strip-components=1 -xJ -C ${LLVM_DIR} 97 travis_retry wget --quiet -O - ${LIBCXX_URL} | tar --strip-components=1 -xJ -C ${LLVM_DIR}/projects/libcxx 98 travis_retry wget --quiet -O - ${LIBCXXABI_URL} | tar --strip-components=1 -xJ -C ${LLVM_DIR}/projects/libcxxabi 99 travis_retry wget --quiet -O - ${CLANG_URL} | tar --strip-components=1 -xJ -C ${LLVM_DIR}/clang 100 (cd ${LLVM_DIR}/build && cmake .. -DCMAKE_INSTALL_PREFIX=${LLVM_DIR}/install -DCMAKE_CXX_COMPILER=clang++) 101 (cd ${LLVM_DIR}/build/projects/libcxx && make install -j2) 102 (cd ${LLVM_DIR}/build/projects/libcxxabi && make install -j2) 103 fi 104 export CXXFLAGS="-nostdinc++ -isystem ${LLVM_DIR}/install/include/c++/v1" 105 export LDFLAGS="-L ${LLVM_DIR}/install/lib -l c++ -l c++abi" 106 export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LLVM_DIR}/install/lib" 107 export PATH="${LLVM_DIR}/clang/bin:${PATH}" 108 $LLVM_DIR/clang/bin/clang++ --version 109 fi 110 111 ############################################################################ 112 # Use gcc 113 ############################################################################ 114 - | 115 if [ -n "$GCC_VERSION" ]; then 116 export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; 117 g++-${GCC_VERSION} --version 118 fi 119 120 - $CXX --version 121 122 ############################################################################ 123 # Install a recent Doxygen 124 ############################################################################ 125 - | 126 if [ -n "$DOXYGEN_VERSION" ]; then 127 DOXYGEN_DIR=${DEPS_DIR}/doxygen-${DOXYGEN_VERSION} 128 if [[ -z "$(ls -A ${DOXYGEN_DIR})" ]]; then 129 DOXYGEN_URL="https://downloads.sourceforge.net/doxygen/doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz" 130 mkdir -p ${DOXYGEN_DIR} && travis_retry wget --quiet -O - ${DOXYGEN_URL} | tar --strip-components=1 -xz -C ${DOXYGEN_DIR} 131 fi 132 export PATH=${DOXYGEN_DIR}/bin:${PATH} 133 doxygen --version 134 fi 135 136 ############################################################################ 137 # Install a recent CMake (unless already installed on OS X) 138 ############################################################################ 139 - | 140 if [ -z "$CMAKE_VERSION" ]; then 141 CMAKE_VERSION=3.5.2; 142 fi; 143 if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then 144 CMAKE_DIR=${DEPS_DIR}/cmake-${CMAKE_VERSION} 145 if [[ -z "$(ls -A ${CMAKE_DIR})" ]]; then 146 CMAKE_URL="http://www.cmake.org/files/v3.5/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz" 147 mkdir -p ${CMAKE_DIR} && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C ${CMAKE_DIR} 148 fi 149 export PATH=${CMAKE_DIR}/bin:${PATH} 150 else 151 if ! brew ls --version cmake &>/dev/null; then brew install cmake; fi 152 fi 153 cmake --version 154 155before_script: 156 - | 157 if [ -z "$BUILD_TYPE" ]; then 158 BUILD_TYPE=Release; 159 fi; 160 if [ -z "$EXCEPTIONS" ]; then 161 EXCEPTIONS=On; 162 fi; 163 if [[ "${ASAN}" == "On" ]]; then 164 export CXXFLAGS="${CXXFLAGS} -fsanitize=address,undefined,integer -fno-omit-frame-pointer -fno-sanitize=unsigned-integer-overflow"; 165 fi; 166 if [ -n "$LLVM_VERSION" ]; then 167 export CXXFLAGS="${CXXFLAGS} -D__extern_always_inline=inline"; 168 fi; 169 170 ############################################################################ 171 # generate build 172 ############################################################################ 173 - cd ${TRAVIS_BUILD_DIR} 174 - cmake . -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DRX_USE_EXCEPTIONS=${EXCEPTIONS} 175 176script: 177 ############################################################################ 178 # Run build 179 ############################################################################ 180 - make VERBOSE=1 $PROJECT 181 182 ############################################################################ 183 # Test build 184 ############################################################################ 185 - cd build/test/ 186 - if [[ "${RUN_TEST}" == "On" ]]; then ctest -V; fi 187 - cd ../../ 188 189after_success: 190 ############################################################################ 191 # Publish documentation 192 ############################################################################ 193 - | 194 if [[ "${PUBLISH_DOCS}" == "On" ]]; then 195 sh projects/scripts/travis-doxygen.sh; 196 fi; 197 198branches: 199 only: 200 - master 201 202notifications: 203 email: 204 recipients: 205 - kirk.shoop@microsoft.com 206 on_success: always 207 on_failure: always 208 slack: reactivex:eq4FFCchRIzufO2ZmpuuiJ9E 209 webhooks: 210 urls: 211 - https://webhooks.gitter.im/e/fcf05f21f5d4102e12e7 212deploy: 213 - provider: releases 214 api_key: 215 secure: sMyo0U4WxZ0kOlQ9SzKfeuU2/5y0Ngt8A0B0N6bb0TcGIyLhQv2q216Q+T0rkQKc04WnLY0Vr1/q9LonAA46nGq7zAiWcC3TY0zVUKRmKWrotQb/QqW1tvVEARKwG7CO+HCcGT3XCeM69XA/L7WiXRskTxS1+5Vy46/tVZBKofg= 216 file: '' 217 on: 218 tags: true 219 repo: Reactive-Extensions/RxCpp 220