# Copyright 2016, 2017 Peter Dimov
# 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

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

env:
  matrix:
    - BOGUS_JOB=true

matrix:

  exclude:
    - env: BOGUS_JOB=true

  include:
    - os: linux
      env: TEST_CMAKE=true # variables unused - just for identification in travis ci gui
      script:
        - mkdir __build__ && cd __build__
        - cmake .. -DBOOST_ENABLE_CMAKE=ON -DBOOST_INCLUDE_LIBRARIES=regex -DBOOST_REGEX_INCLUDE_EXAMPLES=ON
        - cmake --build .

    - os: linux
      env: TEST_CMAKE=true BUILD_SHARED_LIBS=On # variables unused - just for identification in travis ci gui
      script:
        - mkdir __build__ && cd __build__
        - cmake .. -DBUILD_SHARED_LIBS=ON -DBOOST_ENABLE_CMAKE=ON -DBOOST_INCLUDE_LIBRARIES=regex -DBOOST_REGEX_INCLUDE_EXAMPLES=ON
        - cmake --build .

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

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

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

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

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

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

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

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

    - os: linux
      env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=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=03,11 CXXSTD_DIALECT=cxxstd-dialect=gnu
      addons:
        apt:
          packages:
            - g++-7
          sources:
            - ubuntu-toolchain-r-test

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

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

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

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

    - os: linux
      env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11
      addons:
        apt:
          packages:
            - clang-3.5
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.5

    - os: linux
      env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11
      addons:
        apt:
          packages:
            - clang-3.6
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.6

    - os: linux
      env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11
      addons:
        apt:
          packages:
            - clang-3.7
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.7

    - os: linux
      env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11
      addons:
        apt:
          packages:
            - clang-3.8
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.8

    - os: linux
      env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=14,1z
      addons:
        apt:
          packages:
            - clang-3.8
            - libstdc++-4.9-dev
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.8

    - os: linux
      env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11
      addons:
        apt:
          packages:
            - clang-3.9
            - libstdc++-4.9-dev
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.9

    - os: linux
      env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=14,1z
      addons:
        apt:
          packages:
            - clang-3.9
            - libstdc++-4.9-dev
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.9

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

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

    - os: osx
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11
      osx_image: xcode8.2

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

    - os: osx
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11
      osx_image: xcode8.0

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

    - os: osx
      env: TOOLSET=clang COMPILER=clang++ CXXSTD=11
      osx_image: xcode6.4
      # On this image, git doesn't support --jobs 3
      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/boostdep
        - cp -r $TRAVIS_BUILD_DIR/* libs/regex
        - python tools/boostdep/depinst/depinst.py -I example regex
        - ./bootstrap.sh
        - ./b2 headers


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/boostdep
  - cp -r $TRAVIS_BUILD_DIR/* libs/regex
  - python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
  - ./bootstrap.sh
  - ./b2 headers

script:
  - |-
    echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
  - IFS=','
  - for CXXLOCAL in $CXXSTD; do  (cd libs/config/test && ../../../b2 config_info_travis_install toolset=$TOOLSET cxxstd=$CXXLOCAL $CXXSTD_DIALECT && echo With Standard Version $CXXLOCAL && ./config_info_travis && rm ./config_info_travis)  done
  - unset IFS
  - ./b2 -j3 libs/regex/test toolset=$TOOLSET cxxstd=$CXXSTD $CXXSTD_DIALECT

notifications:
  email:
    on_success: always
