language: cpp
dist: trusty
sudo: false

os: linux

git:
  depth: 1

env:
  global:
    - secure: |-
        a1eovNn4uol9won7ghr67eD3/59oeESN+G9bWE+ecI1V6yRseG9whniGhIpC/YfMW/Qz5I
        5sxSmFjaw9bxCISNwUIrL1O5x2AmRYTnFcXk4dFsUvlZg+WeF/aKyBYCNRM8C2ndbBmtAO
        o1F2EwFbiso0EmtzhAPs19ujiVxkLn4=

matrix:
  include:
      # Documentation
    - env: BUILD=Doc
      sudo: required
      # g++ 6 on Linux with C++14
    - env: COMPILER=g++-6 BUILD=Debug STANDARD=14
      compiler: gcc
      addons:
        apt:
          update: true
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-6
    - env: COMPILER=g++-6 BUILD=Release STANDARD=14
      compiler: gcc
      addons:
        apt:
          update: true
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-6
     # g++ 8 on Linux with C++17
    - env: COMPILER=g++-8 BUILD=Debug STANDARD=17
      compiler: gcc
      addons:
        apt:
          update: true
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-8
    - env: COMPILER=g++-8 BUILD=Release STANDARD=17
      compiler: gcc
      addons:
        apt:
          update: true
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-8

      # Apple clang on OS X with C++14
    - env: BUILD=Debug STANDARD=14
      compiler: clang
      os: osx
    - env: BUILD=Release STANDARD=14
      compiler: clang
      os: osx
      # clang 6.0 on Linux with C++14 (builds the fuzzers as well)
    - env: COMPILER=clang++-6.0 BUILD=Debug STANDARD=14 ENABLE_FUZZING=1
      compiler: clang
      addons:
        apt:
          update: true
          packages:
            - clang-6.0
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-trusty
            - llvm-toolchain-trusty-6.0
      # clang 4.0 on Linux with C++14
    - env: COMPILER=clang++-4.0 BUILD=Debug STANDARD=11
      compiler: clang
      addons:
        apt:
          update: true
          packages:
            - clang-4.0
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-trusty
            - llvm-toolchain-trusty-4.0
      # g++ 4.8 on Linux with C++11
    - env: COMPILER=g++-4.8 BUILD=Debug STANDARD=11
      compiler: gcc

before_script:
  - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then export CXX=${COMPILER}; fi
  - if [[ "${BUILD}" != "Doc" ]]; then ${CXX} --version; fi

script:
  - support/travis-build.py
