# this file is HEAVILY influenced by https://github.com/boostorg/hana/blob/master/.travis.yml

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:
    packages:
      - g++-6
    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 SANITIZER_CXX_FLAGS=-fuse-ld=gold
#      compiler: gcc
#      addons: &gcc5
#        apt:
#          packages: ["g++-5",   "valgrind", "g++-5-multilib",   "libc6-dbg", "libc6-dbg:i386"]
#          sources: *apt_sources
#
#    # GCC 6
#    - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true SANITIZER_CXX_FLAGS=-fuse-ld=gold
#      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"]

    # Clang 3.5
    - env: COMPILER=clang++ LLVM_VERSION=3.5.2 HAS_ASAN_64=true HAS_UBSAN_64=true
      addons: &clang35
        apt:
          #packages: ["clang-3.5", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
          packages: [             "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
          sources: *apt_sources

    # Clang 3.6
    - env: COMPILER=clang++ LLVM_VERSION=3.6.2 HAS_ASAN_64=true HAS_UBSAN_64=true
      addons: &clang36
        apt:
          #packages: ["clang-3.6", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
          packages: [             "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
          sources: *apt_sources

    # Clang 3.7
    - env: COMPILER=clang++ LLVM_VERSION=3.7.1 HAS_ASAN_64=true HAS_UBSAN_64=true
      addons: &clang37
        apt:
          #packages: ["clang-3.7", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
          packages: [             "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
          sources: *apt_sources

    # Clang 3.8
    - env: COMPILER=clang++ LLVM_VERSION=3.8.0 HAS_ASAN_64=true HAS_UBSAN_64=true
      addons: &clang38
        apt:
          #packages: ["clang-3.8", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
          packages: [             "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
#
#    # 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:

before_install:
  - git submodule update --init --recursive

install:
  - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
  - mkdir ${DEPS_DIR} && cd ${DEPS_DIR}
  ############################################################################
  # Install Clang
  ############################################################################
  - |
    if [[ "${LLVM_VERSION}" != "" ]]; then
      CLANG_URL="http://llvm.org/releases/${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-x86_64-linux-gnu-ubuntu-14.04.tar.xz"
      mkdir clang && travis_retry wget --quiet -O - ${CLANG_URL} | tar --strip-components=1 -xJ -C clang
      export PATH="${DEPS_DIR}/clang/bin:${PATH}"
    fi
  ############################################################################
  # Install libc++ and libc++abi (on Linux only; Xcode uses libc++ by default)
  ############################################################################
  - |
    if [[ "${LLVM_VERSION}" != "" ]]; then
      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"
      TAR_FLAGS="-xJ"
      mkdir -p llvm llvm/build llvm/projects/libcxx llvm/projects/libcxxabi
      travis_retry wget --quiet -O - ${LLVM_URL} | tar --strip-components=1 ${TAR_FLAGS} -C llvm
      travis_retry wget --quiet -O - ${LIBCXX_URL} | tar --strip-components=1 ${TAR_FLAGS} -C llvm/projects/libcxx
      travis_retry wget --quiet -O - ${LIBCXXABI_URL} | tar --strip-components=1 ${TAR_FLAGS} -C llvm/projects/libcxxabi
      (cd llvm/build && cmake .. -DCMAKE_INSTALL_PREFIX=${DEPS_DIR}/llvm/install -DCMAKE_CXX_COMPILER=clang++)
      (cd llvm/build/projects/libcxx && make install -j2)
      (cd llvm/build/projects/libcxxabi && make install -j2)
      export CXXFLAGS="-nostdinc++ -isystem ${DEPS_DIR}/llvm/install/include/c++/v1"
      export LDFLAGS="-L ${DEPS_DIR}/llvm/install/lib -l c++ -l c++abi"
      export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DEPS_DIR}/llvm/install/lib"
    fi
  ############################################################################
  # Install brew dependencies under OSX
  ############################################################################
  - |
    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
#  - export CXX="ccache ${COMPILER}"
  - export CXX="${COMPILER}"
#  - ccache -s

before_script:
  - ${CXX} --version
  - cd ${TRAVIS_BUILD_DIR}

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="${SANITIZER_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="${SANITIZER_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="${SANITIZER_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="${SANITIZER_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="${SANITIZER_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="${SANITIZER_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="${SANITIZER_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="${SANITIZER_CXX_FLAGS} -m32 -fsanitize=undefined" . && make clean && make -k -j2 && ctest --output-on-failure ; fi

#  - ccache -s

#after_script:
#  - cat compile_commands.json
