| sudo: false |
| language: c++ |
| |
| notifications: |
| email: |
| on_success: change |
| on_failure: always |
| # gitter |
| webhooks: |
| urls: https://webhooks.gitter.im/e/10941dd1c67e5e967706 |
| on_success: change |
| on_failure: always |
| git: |
| depth: 100 |
| |
| # both apt and ccache make the builds slower... |
| #cache: |
| # - apt |
| # - ccache |
| |
| env: |
| global: |
| # - USE_CCACHE=1 |
| # - CCACHE_SLOPPINESS=pch_defines,time_macros |
| # - CCACHE_COMPRESS=1 |
| # - CCACHE_MAXSIZE=200M |
| # - CCACHE_CPP2=1 |
| - CMAKE_OPTIONS_GLOBAL="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" |
| # Workaround for https://github.com/travis-ci/travis-ci/issues/4681 |
| # "Defining the build matrix only with matrix.include leads to an additional, unwanted job" |
| matrix: |
| - TRAVIS_EMPTY_JOB_WORKAROUND=true |
| |
| addons: |
| coverity_scan: |
| # COVERITY_SCAN_TOKEN added as env var in travis project |
| project: |
| name: onqtam/doctest |
| notification_email: vik.kirilov@gmail.com |
| build_command_prepend: cd examples/hello_world && cmake . |
| build_command: make |
| branch_pattern: coverity_scan |
| # these apt sources will be referenced later (by using *name) |
| apt: |
| sources: &llvm_apt_sources |
| - llvm-toolchain-precise-3.5 |
| - llvm-toolchain-precise-3.6 |
| - llvm-toolchain-precise-3.7 |
| - llvm-toolchain-precise-3.8 |
| - llvm-toolchain-precise |
| |
| compiler: clang |
| os: linux |
| |
| matrix: |
| exclude: |
| - env: TRAVIS_EMPTY_JOB_WORKAROUND=true |
| |
| include: |
| # coverage |
| - env: COMPILER=g++ COVERALLS_SERVICE_NAME=travis-ci |
| compiler: gcc |
| addons: |
| apt: |
| packages: ["lcov", "curl"] |
| |
| # GCC 4.4 |
| - env: COMPILER=g++-4.4 |
| compiler: gcc |
| addons: &gcc44 |
| apt: |
| packages: ["g++-4.4", "valgrind", "g++-4.4-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: ubuntu-toolchain-r-test |
| |
| # GCC 4.5 |
| - env: COMPILER=g++-4.5 |
| compiler: gcc |
| addons: &gcc45 |
| apt: |
| packages: ["g++-4.5", "valgrind", "g++-4.5-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: ubuntu-toolchain-r-test |
| |
| # GCC 4.6 |
| - env: COMPILER=g++-4.6 |
| compiler: gcc |
| addons: &gcc46 |
| apt: |
| packages: [ "valgrind", "g++-4.6-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: ubuntu-toolchain-r-test |
| |
| # GCC 4.7 |
| - env: COMPILER=g++-4.7 |
| compiler: gcc |
| addons: &gcc47 |
| apt: |
| packages: ["g++-4.7", "valgrind", "g++-4.7-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: ubuntu-toolchain-r-test |
| |
| # GCC 4.8 |
| - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true |
| compiler: gcc |
| addons: &gcc48 |
| apt: |
| packages: ["g++-4.8", "valgrind", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: ubuntu-toolchain-r-test |
| |
| # GCC 4.9 |
| - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true |
| compiler: gcc |
| addons: &gcc49 |
| apt: |
| packages: ["g++-4.9", "valgrind", "g++-4.9-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: ubuntu-toolchain-r-test |
| |
| # GCC 5 |
| - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true |
| compiler: gcc |
| addons: &gcc5 |
| apt: |
| packages: ["g++-5", "valgrind", "g++-5-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: ubuntu-toolchain-r-test |
| |
| # GCC 6 |
| # released on 2016.04.27 |
| # wait for it to enter the whitelist - https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise |
| # also with homebrew under OSX!!! |
| - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true |
| compiler: gcc |
| addons: &gcc6 |
| apt: |
| packages: ["g++-6", "valgrind", "g++-6-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: ubuntu-toolchain-r-test |
| |
| # Clang 3.4 |
| - env: COMPILER=clang++ HAS_ASAN_64=true HAS_UBSAN_64=true |
| addons: &clang |
| apt: |
| packages: [ "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| |
| # Clang 3.5 |
| - env: COMPILER=clang++-3.5 HAS_ASAN_64=true HAS_UBSAN_64=true |
| addons: &clang35 |
| apt: |
| packages: ["clang-3.5", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: *llvm_apt_sources |
| |
| # Clang 3.6 |
| - env: COMPILER=clang++-3.6 HAS_ASAN_64=true HAS_UBSAN_64=true |
| addons: &clang36 |
| apt: |
| packages: ["clang-3.6", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: *llvm_apt_sources |
| |
| # Clang 3.7 |
| - env: COMPILER=clang++-3.7 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757 |
| addons: &clang37 |
| apt: |
| packages: ["clang-3.7", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: *llvm_apt_sources |
| |
| # Clang 3.8 |
| - env: COMPILER=clang++-3.8 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757 |
| addons: &clang38 |
| apt: |
| packages: ["clang-3.8", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"] |
| sources: *llvm_apt_sources |
| |
| # Xcode 6.1 Clang |
| - env: COMPILER=clang++ |
| os: osx |
| |
| # Xcode 6.2 Clang |
| - env: COMPILER=clang++ |
| osx_image: beta-xcode6.2 |
| os: osx |
| |
| # Xcode 6.3 Clang |
| - env: COMPILER=clang++ |
| osx_image: beta-xcode6.3 |
| os: osx |
| |
| # Xcode 6.4 Clang |
| - env: COMPILER=clang++ |
| osx_image: xcode6.4 |
| os: osx |
| |
| # Xcode 7 Clang |
| - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true |
| osx_image: xcode7 |
| os: osx |
| |
| # Xcode 7.1 Clang |
| - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true |
| osx_image: xcode7.1 |
| os: osx |
| |
| # Xcode 7.2 Clang |
| - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true |
| osx_image: xcode7.2 |
| os: osx |
| |
| # Xcode 7.3 Clang |
| - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true |
| osx_image: xcode7.3 |
| os: osx |
| |
| # Xcode 8 Clang |
| - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true |
| osx_image: xcode8 |
| os: osx |
| |
| # OSX GCC 4.4 |
| - env: COMPILER=g++-4.4 |
| compiler: gcc |
| os: osx |
| |
| # OSX GCC 4.5 |
| - env: COMPILER=g++-4.5 |
| compiler: gcc |
| os: osx |
| |
| # OSX GCC 4.6 |
| - env: COMPILER=g++-4.6 |
| compiler: gcc |
| os: osx |
| |
| # OSX GCC 4.7 |
| - env: COMPILER=g++-4.7 |
| compiler: gcc |
| os: osx |
| |
| # OSX GCC 4.8 |
| - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true |
| compiler: gcc |
| os: osx |
| |
| # OSX GCC 4.9 |
| - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true |
| compiler: gcc |
| os: osx |
| |
| # OSX GCC 5 |
| - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true |
| compiler: gcc |
| os: osx |
| |
| # OSX GCC 6 |
| - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true |
| compiler: gcc |
| os: osx |
| |
| # OSX LLVM-GCC |
| - env: COMPILER=g++ |
| compiler: gcc |
| os: osx |
| |
| allow_failures: |
| # because in the period of the past week (01.06 to 06.06) all ASAN builds started failing with this error: |
| # /usr/bin/ld: unrecognized option '--push-state' |
| # see this question for details - http://stackoverflow.com/questions/37688926/asan-with-g-5-4-0-not-working-on-travis-ci |
| - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true |
| os: linux |
| # the clang builds for linux fail because the llvm apt is down |
| - env: COMPILER=clang++-3.5 HAS_ASAN_64=true HAS_UBSAN_64=true |
| os: linux |
| - env: COMPILER=clang++-3.6 HAS_ASAN_64=true HAS_UBSAN_64=true |
| os: linux |
| - env: COMPILER=clang++-3.7 |
| os: linux |
| - env: COMPILER=clang++-3.8 |
| os: linux |
| |
| before_install: |
| - | |
| if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then |
| brew update |
| # brew install ccache |
| brew install valgrind |
| # cmake |
| if brew list -1 | grep -q "^cmake\$"; then |
| brew outdated cmake || brew upgrade cmake |
| else |
| brew install cmake |
| fi |
| # gcc |
| if [[ "${COMPILER}" = "g++-4.4" ]]; then |
| brew install gcc44 |
| fi |
| if [[ "${COMPILER}" = "g++-4.5" ]]; then |
| brew install gcc45 |
| fi |
| if [[ "${COMPILER}" = "g++-4.6" ]]; then |
| brew install gcc46 |
| fi |
| if [[ "${COMPILER}" = "g++-4.7" ]]; then |
| brew install gcc47 |
| fi |
| if [[ "${COMPILER}" = "g++-4.8" ]]; then |
| brew outdated gcc48 || brew upgrade gcc48 |
| fi |
| if [[ "${COMPILER}" = "g++-4.9" ]]; then |
| brew install gcc49 |
| fi |
| if [[ "${COMPILER}" = "g++-5" ]]; then |
| brew install gcc5 |
| fi |
| if [[ "${COMPILER}" = "g++-6" ]]; then |
| brew install gcc6 |
| fi |
| fi |
| - git submodule update --init --recursive |
| |
| install: |
| # - export CXX="ccache ${COMPILER}" |
| - export CXX="${COMPILER}" |
| - ${CXX} --version |
| - | |
| if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then |
| update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.gold" 20 |
| update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.bfd" 10 |
| update-alternatives --config ld |
| fi |
| # - ccache -s |
| |
| script: |
| # coverage - do not continue with other build configurations after that |
| - | |
| if [[ "${COVERALLS_SERVICE_NAME}" = "travis-ci" ]]; then |
| cmake ${CMAKE_OPTIONS_GLOBAL} -DCMAKE_BUILD_TYPE=Debug . |
| make -k -j2 && make coveralls |
| exit |
| fi |
| |
| # initial run with options |
| - cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} . |
| |
| # debug x64 |
| - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64" . |
| - make clean && make -k -j2 |
| # valgrind for 64bit under osx fails TOO |
| - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi |
| # - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure |
| - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure |
| # release x64 |
| - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64" . |
| - make clean && make -k -j2 |
| # valgrind for 64bit under osx fails TOO |
| - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi |
| # - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure |
| - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure |
| # debug x86 |
| - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32" . |
| - make clean && make -k -j2 |
| # valgrind for 32bit under osx fails |
| - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi |
| - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure |
| # release x86 |
| - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32" . |
| - make clean && make -k -j2 |
| # valgrind for 32bit under osx fails |
| - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi |
| - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure |
| |
| # sanitizers - again 32/64 bit Debug/Release configs through address/undefined sanitizers |
| - cmake -DTEST_MODE=COMPARE . |
| # on separate commands because when something fails I want to see which one exactly |
| - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -k -j2 && ctest --output-on-failure ; fi |
| - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -k -j2 && ctest --output-on-failure ; fi |
| - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -k -j2 && ctest --output-on-failure ; fi |
| - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -k -j2 && ctest --output-on-failure ; fi |
| - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -k -j2 && ctest --output-on-failure ; fi |
| - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -k -j2 && ctest --output-on-failure ; fi |
| - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -k -j2 && ctest --output-on-failure ; fi |
| - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -k -j2 && ctest --output-on-failure ; fi |
| |
| # - ccache -s |
| |
| #after_script: |
| # - cat compile_commands.json |