# Travis CI script

language: cpp

dist: trusty
cache: ccache
sudo: false

matrix:
  include:
    ##########################################################
    # Clang on OSX
    # Travis takes longer to start OSX instances,
    # so leaving it first for the overall build to be faster.
    ##########################################################

    - os: osx
      osx_image: xcode9.1
      compiler: clang
      env: ENABLE_DRAFTS=ON

    ##########################################################
    # GCC on Linux
    ##########################################################

    # Coverage, GCC 7, draft enabled, latest libzmq (default)
    - os: linux
      before_install:
        - pip install --user cpp-coveralls
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-7
      env:
        - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" ENABLE_DRAFTS=ON COVERAGE=ON
      after_success:
        - coveralls -r . -E ".*external.*" -E ".*CMakeFiles.*" -E ".*tests/" -E ".*demo/" -E ".*libzmq.*/" -E ".*catch/" -b cppzmq-build --gcov-options '\-lp'

    # GCC default, draft disabled,  older libzmq with pkg-config
    - os: linux
      env: ZMQ_VERSION=4.2.0 BUILD_TYPE=pkgconfig

    # GCC default, draft disabled, latest 4.2.x libzmq (defined in ci_build.sh)
    - os: linux
      env: ZMQ_VERSION=4.2.5

    # GCC default, draft disabled, default libzmq (defined in ci_build.sh)
    - os: linux

    # GCC 6, draft disabled (default), older libzmq
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-6
      env:
        - ZMQ_VERSION=4.2.5 MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"

    # GCC 4.9, draft disabled (default), latest libzmq (default)
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-4.9
      env:
        - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" CMAKE_CPP_STD=-DCMAKE_CXX_STANDARD=11

    # GCC 7, draft enabled, latest libzmq (default)
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-7
      env:
        - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" ENABLE_DRAFTS=ON

    # Clang 8.0, draft disabled (default), latest libzmq (default), C++17
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-trusty-8
          packages:
            - g++-9
            - clang-8
      env:
        - MATRIX_EVAL="CC=clang-8 && CXX=clang++-8" CMAKE_CPP_STD=-DCMAKE_CXX_STANDARD=17

  # - env: BUILD_TYPE=cmake DO_CLANG_FORMAT_CHECK=1 CLANG_FORMAT=/usr/local/clang-5.0.0/bin/clang-format
    # os: linux
    # addons:
    # apt:
      # sources:
        # - llvm-toolchain-trusty-5.0
      # packages:
        # - clang-5.0

# Build and check this project
script:
  - eval "${MATRIX_EVAL}"
  - cmake --version
  - ./ci_build.sh
