os:
  - linux
language: cpp
dist: xenial

jobs:
  include:
    - compiler: clang-4.0
      addons:
        apt:
          sources:
            - llvm-toolchain-xenial-4.0
          packages:
            - clang-4.0
        artifacts: true
      env:
        - MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0"
    - compiler: clang-5.0
      addons:
        apt:
          sources:
            - llvm-toolchain-xenial-5.0
          packages:
            - clang-5.0
        artifacts: true
      env:
        - MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"
    - compiler: clang-6.0
      addons:
        apt:
          sources:
            - llvm-toolchain-xenial-6.0
          packages:
            - clang-6.0
        artifacts: true
      env:
        - MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0"
    - compiler: clang-7
      addons:
        apt:
          sources:
            - llvm-toolchain-xenial-7
          packages:
            - clang-7
        artifacts: true
      env:
        - MATRIX_EVAL="CC=clang-7 && CXX=clang++-7"
    - compiler: clang-8
      addons:
        apt:
          sources:
            - llvm-toolchain-xenial-8
          packages:
            - clang-8
        artifacts: true
      env:
        - MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
    - compiler: clang-9
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
            - sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
              key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
          packages:
            - clang-9
        artifacts: true
      env:
        - MATRIX_EVAL="CC=clang-9 && CXX=clang++-9"
    - compiler: gcc-4.8
      dist: trusty
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-4.8
            - g++-4.8
        artifacts: true
      env:
        - MATRIX_EVAL="CC=gcc-4.8 && CXX=g++-4.8"
    - compiler: gcc-4.9
      dist: trusty
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-4.9
            - g++-4.9
        artifacts: true
      env:
        - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"
    - compiler: gcc-5
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-5
            - g++-5
        artifacts: true
      env:
        - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
    - compiler: gcc-6
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-6
            - g++-6
        artifacts: true
      env:
        - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
    - compiler: gcc-7
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-7
            - g++-7
        artifacts: true
      env:
        - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
    - compiler: gcc-8
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-8
            - g++-8
        artifacts: true
      env:
        - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
    - compiler: gcc-9
      dist: bionic
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
            - sourceline: ppa:ubuntu-toolchain-r/test
          packages:
            - gcc-9
            - g++-9
        artifacts: true
      env:
        - MATRIX_EVAL="CC=gcc-9 && CXX=g++-9"
        - CXXFLAGS="-Wp,-D_GLIBCXX_ASSERTIONS"

before_install:
  - eval "${MATRIX_EVAL}"
  - . scripts/travis-$TRAVIS_OS_NAME.sh

before_script:
  - export -f travis_fold

script:
  - ${CC} --version
  - ./bootstrap.sh -a
  - ./configure --enable-ssl
  - make
  - make test

after_failure:
  - travis_fold start "after_failure"
  - cat test-suite.log
  - travis_fold end "after_failure"
