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: 5

# 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: &apt_sources
      - ubuntu-toolchain-r-test
      - 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: *apt_sources
#
#    # 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: *apt_sources
#
#    # 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: *apt_sources
#
#    # 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: *apt_sources
#
#    # 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: *apt_sources
#
#    # 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: *apt_sources
#
#    # 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: *apt_sources
#
##    # 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: *apt_sources

    # 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"]
          sources: *apt_sources

#    # 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: *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: *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: *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: *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
#
#    # 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

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:
  - ${CXX} --version
#  - export CXX="ccache ${COMPILER}"
  - export CXX="${COMPILER}"
  - ${CXX} --version
#  - 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 -j2 && make coveralls
      exit
    fi

  # initial run with options
  - cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} .

  # debug x86
  - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32" .
  - make clean && make -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
  # debug x64
  - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64" .
  - make clean && make -j2
  - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
#  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
  # release x86
  - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32" .
  - make clean && make -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 x64
  - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64" .
  - make clean && make -j2
  - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
#  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure

  # sanitizers - again 32/64 bit Debug/Release configs through address/undefined sanitizers
  - cmake -DTEST_MODE=NORMAL .
#  - 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 -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 -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 -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 -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 -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 -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 -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 -j2 && ctest --output-on-failure ; fi

#  - ccache -s

after_script:
  - cat compile_commands.json
