# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
# Copyright Rene Rivera 2015-2016.
# Copyright Peter Dimov 2017-2021.

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

dist: bionic

language: cpp

compiler: gcc

git:
  submodules: false

env:
  matrix:
    - TRAVIS_EMPTY_JOB_WORKAROUND=true

matrix:
  exclude:
    - env: TRAVIS_EMPTY_JOB_WORKAROUND=true

  include:

    - env: SCRIPT=ci_boost_release MODE=check
      addons:
        apt:
          packages:
            - xsltproc

    # Simple integrated status tests check.
    - env: SCRIPT=ci_boost_status

    # Same, but using release layout
    - env: SCRIPT=ci_boost_status RELEASE=1

    # Run 'quick' tests.
    - env: SCRIPT=ci_boost_status TARGET=quick TOOLSET=gcc CXXSTD=03,11,14
      compiler: g++

    - env: SCRIPT=ci_boost_status TARGET=quick TOOLSET=clang CXXSTD=03,11,14
      compiler: clang++

    # Build Boost
    - env: SCRIPT=ci_boost_build TOOLSET=gcc
      compiler: g++

    # Build Boost with release layout
    - env: SCRIPT=ci_boost_build TOOLSET=gcc RELEASE=1
      compiler: g++

    # Build Boost with CMake
    - env: CMAKE_BUILD=1
      dist: xenial
      compiler: g++

      before_script: true
      before_install: true
      after_success: true
      after_failure: true
      after_script: true

      addons:
        apt:
          packages:
            - libzstd-dev

      install:
      - git submodule update --init --jobs 3

      script:
      - mkdir __build && cd __build
      - cmake -DBOOST_INSTALL_LAYOUT=tagged -DBUILD_SHARED_LIBS=ON ..
      - cmake --build .

    # Install Boost with CMake
    - env: CMAKE_INSTALL=1
      compiler: g++

      before_script: true
      before_install: true
      after_success: true
      after_failure: true
      after_script: true

      install:
      - pip install --user cmake
      - git submodule update --init --jobs 3

      script:
      - mkdir __build && cd __build
      - cmake -DBOOST_INSTALL_LAYOUT=tagged -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=~/.local ..
      - cmake --build .
      - cmake --build . --target install

    # Test Boost with CMake
    - env: CMAKE_TEST=1
      dist: bionic
      compiler: g++

      before_script: true
      before_install: true
      after_success: true
      after_failure: true
      after_script: true

      addons:
        apt:
          packages:
            - liblzma-dev
            - libzstd-dev

      install:
      - git submodule update --init --jobs 3

      script:
      - mkdir __build && cd __build
      - cmake -DBUILD_TESTING=ON ..
      - cmake --build . -j 3
      - cmake --build . --target tests -j 3 -- -k
      - ctest --output-on-failure -j 3 -R quick

before_install:
  # Fetch the scripts to do the actual building/testing.
  - git submodule update --init --jobs 3
  - |
    wget "https://raw.githubusercontent.com/boostorg/release-tools/develop/ci_boost_common.py" -P ..
    wget "https://raw.githubusercontent.com/boostorg/release-tools/develop/${SCRIPT}.py" -P ..

install: python "${TRAVIS_BUILD_DIR}/../${SCRIPT}.py" install
before_script: python "${TRAVIS_BUILD_DIR}/../${SCRIPT}.py" before_script
script: python "${TRAVIS_BUILD_DIR}/../${SCRIPT}.py" script
after_success: python "${TRAVIS_BUILD_DIR}/../${SCRIPT}.py" after_success
after_failure: python "${TRAVIS_BUILD_DIR}/../${SCRIPT}.py" after_failure
after_script: python "${TRAVIS_BUILD_DIR}/../${SCRIPT}.py" after_script