---

language: cpp
sudo: required
dist: xenial

services:
  - docker

notifications:
  email: false


matrix:
  include:
    - os: osx
      osx_image: xcode11.3 # for c++17
      compiler: clang
      addons:
        homebrew:
          packages:
            - clang-format
            - ninja
            - openssl
          update: true
    - os: linux
      compiler: gcc
      env:
        - CXX_VERSION=g++-8
        - CC_VERSION=gcc-8
        - CMAKE_GENERATOR=Ninja
        - COVERAGE=ON
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - software-properties-common
            - curl
            - ninja-build
            - pkg-config
            - make
            - g++-8
            - unzip
            - git
            - libssl-dev
            - openssl
    - os: linux
      compiler: clang
      env:
        - CXX_VERSION=clang++-6.0
        - CC_VERSION=clang-6.0
        - CMAKE_GENERATOR=Ninja
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-xenial-6.0
            - sourceline: 'deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main'
              key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
          packages:
            - clang++-6.0
            - clang-6.0
            - software-properties-common
            - curl
            - ninja-build
            - pkg-config
            - make
            - g++-8
            - unzip
            - git
            - libssl-dev
            - openssl

cache:
  directories:
    - .deps
    - build/_deps

install: ./.ci/install.sh

script:
  - $CXX --version
  - cmake --version

  # Start the synapse server to run the tests.
  - if [ $TRAVIS_OS_NAME == linux ]; then make synapse; fi

  # Build the lib and run the linter & tests.
  - ./.ci/script.sh

after_success:
  # Generate coverage report and upload report to CodeCov.
  - |
    if [ "$COVERAGE" == ON ]; then
      ./.ci/coverage.sh && \
      bash <(curl -s https://codecov.io/bash) -f build/coverage.info || echo "Codecov failed"
    fi
