# Copyright 2016, 2017, 2018 Peter Dimov
# Copyright 2018 T. Zachary Laine
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)

language: cpp

sudo: false

branches:
  only:
    - master
    - develop
    - /feature\/.*/

env:
  matrix:
    - BOGUS_JOB=true

matrix:

  exclude:
    - env: BOGUS_JOB=true

  include:
    - os: linux
      env: TOOLSET=gcc COMPILER=g++ CXXSTD=11

    - os: linux
      env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=11
      addons:
        apt:
          packages:
            - g++-4.7
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=11
      addons:
        apt:
          packages:
            - g++-4.8
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=11
      addons:
        apt:
          packages:
            - g++-4.9
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=11,14,1z
      addons:
        apt:
          packages:
            - g++-5
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=11,14,1z
      addons:
        apt:
          packages:
            - g++-6
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=11,14,1z CXXSTD_DIALECT=cxxstd-dialect=gnu
      addons:
        apt:
          packages:
            - g++-6
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=11,14,17
      addons:
        apt:
          packages:
            - g++-7
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11

    - os: linux
      compiler: clang++-libc++
      env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=11,14,1z
      addons:
        apt:
          packages:
            - libc++-dev

    - os: osx
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z
      osx_image: xcode9.1

    - os: osx
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z
      osx_image: xcode9

    - os: osx
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z
      osx_image: xcode8.3

    - os: osx
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z
      osx_image: xcode8

    - os: osx
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z
      osx_image: xcode7.3

    - os: osx
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z
      osx_image: xcode6.4

install:
  - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
  - cd ..
  - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
  - cd boost-root
  - git submodule update --init tools/build
  - git submodule update --init libs/config
  - git submodule update --init libs/predef
  - git submodule update --init libs/core
  - git submodule update --init libs/detail
  - git submodule update --init libs/range
  - git submodule update --init libs/assert
  - git submodule update --init libs/array
  - git submodule update --init libs/type_traits
  - git submodule update --init libs/static_assert
  - git submodule update --init libs/iterator
  - git submodule update --init libs/preprocessor
  - git submodule update --init libs/mpl
  - git submodule update --init libs/smart_ptr
  - git submodule update --init libs/callable_traits
  - git submodule update --init libs/type_index
  - git submodule update --init libs/exception
  - git submodule update --init libs/throw_exception
  - git submodule update --init libs/utility
  - git submodule update --init libs/bind
  - git submodule update --init libs/ratio
  - git submodule update --init libs/function
  - git submodule update --init libs/integer
  - git submodule update --init libs/numeric
  - git submodule update --init libs/move
  - git submodule update --init libs/container_hash
  - git submodule update --init libs/io
  - git submodule update --init libs/concept_check
  - git submodule update --init libs/test
  - git submodule update --init libs/timer
  - git submodule update --init libs/chrono
  - git submodule update --init libs/system
  - cp -r $TRAVIS_BUILD_DIR/* libs/algorithm
  - ./bootstrap.sh
  - ./b2 headers
 
script:
  - |-
    echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
  - ./b2 -j3 libs/algorithm/test toolset=$TOOLSET cxxstd=$CXXSTD $CXXSTD_DIALECT
