language: cpp
sudo: false
matrix:
  include:
  - os: linux
    env: PYTHON=2.7 CPP=11 GCC=4.8
    addons:
      apt:
        sources: [ubuntu-toolchain-r-test, kubuntu-backports]
        packages: [g++-4.8, cmake]
  - os: linux
    env: PYTHON=3.5 CPP=11 GCC=4.8
    addons:
      apt:
        sources: [ubuntu-toolchain-r-test, kubuntu-backports, deadsnakes]
        packages: [g++-4.8, cmake, python3.5-dev]
  - sudo: true
    services: docker
    env: PYTHON=2.7 CPP=14 GCC=6
  - sudo: true
    services: docker
    env: PYTHON=3.5 CPP=14 GCC=6 DEBUG=1
  - sudo: true
    services: docker
    env: PYTHON=3.5 CPP=17 GCC=7
  - sudo: true
    services: docker
    env: PYTHON=3.5 CPP=17 CLANG=4.0
  - os: osx
    osx_image: xcode7.3
    env: PYTHON=2.7 CPP=14 CLANG
  - os: osx
    osx_image: xcode7.3
    env: PYTHON=3.6 CPP=14 CLANG
  # Test a PyPy 2.7 build
  - os: linux
    dist: trusty
    env: PYPY=5.7 PYTHON=2.7 CPP=11 GCC=4.8
    addons:
      apt:
        packages: [g++-4.8, cmake]
  - sudo: true
    services: docker
    env: ARCH=i386 PYTHON=3.5 CPP=14 GCC=6
  # This next one does a make install *before* testing, then builds the tests against the installed version:
  - sudo: true
    services: docker
    env: PYTHON=3.5 CPP=14 CLANG=3.9 INSTALL=1
    script:
      - |
        $SCRIPT_RUN_PREFIX sh -c "set -e
        cmake ${CMAKE_EXTRA_ARGS} -DPYBIND11_INSTALL=1 -DPYBIND11_TEST=0
        make install
        cp -a tests /pybind11-tests
        mkdir /build-tests && cd /build-tests
        cmake ../pybind11-tests ${CMAKE_EXTRA_ARGS} -DPYBIND11_WERROR=ON
        make pytest -j 2"
  # A barebones build makes sure everything still works without optional deps (numpy/scipy/eigen)
  # and also tests the automatic discovery functions in CMake (Python version, C++ standard).
  - os: linux
    env: BAREBONES
    addons:
      apt:
        sources: [ubuntu-toolchain-r-test, kubuntu-backports]
        packages: [g++-4.8, cmake]
    install: pip install pytest
  # Documentation build:
  - os: linux
    language: docs
    env: DOCS STYLE LINT
    install:
    - pip install --upgrade sphinx sphinx_rtd_theme flake8 pep8-naming
    - |
      curl -fsSL ftp://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.12.linux.bin.tar.gz | tar xz
      export PATH="$PWD/doxygen-1.8.12/bin:$PATH"
      pip install https://github.com/michaeljones/breathe/archive/master.zip
    script:
    - make -C docs html SPHINX_OPTIONS=-W
    - tools/check-style.sh
    - flake8
  allow_failures:
    - env: PYTHON=3.5 CPP=17 GCC=7
    - env: PYTHON=3.5 CPP=17 CLANG=4.0
cache:
  directories:
  - $HOME/.cache/pip
  - $HOME/Library/Caches/pip
before_install:
- |
  # Configure build variables
  if [ "$TRAVIS_OS_NAME" = "linux" ]; then
    if [ -n "$CLANG" ]; then
      export CXX=clang++-$CLANG CC=clang-$CLANG COMPILER_PACKAGES="clang-$CLANG llvm-$CLANG-dev"
      if [ "$CLANG" = "4.0" ]; then export CXXFLAGS="-stdlib=libc++"; fi
    else
      if [ -z "$GCC" ]; then export GCC=4.8
      else export COMPILER_PACKAGES=g++-$GCC
      fi
      export CXX=g++-$GCC CC=gcc-$GCC
    fi
    if [ "$CLANG" = "4.0" ]; then export DOCKER=debian:sid
    elif [ "$GCC" = "6" ] || [ -n "$CLANG" ]; then export DOCKER=${ARCH:+$ARCH/}debian:testing
    elif [ "$GCC" = "7" ]; then export DOCKER=debian:experimental APT_GET_EXTRA="-t experimental"
    fi
  elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
    export CXX=clang++ CC=clang;
  fi
  if [ -n "$CPP" ]; then export CPP=-std=c++$CPP; fi
  if [ "${PYTHON:0:1}" = "3" ]; then export PY=3; fi
  if [ "$PYPY" = "5.7" ]; then
    curl -fSL https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-linux64.tar.bz2 | tar -xj
    export PYPY_BINARY=$(echo `pwd`/pypy2-v5.7.0-linux64/bin/pypy)
    export CMAKE_EXTRA_ARGS="-DPYTHON_EXECUTABLE:FILEPATH=$PYPY_BINARY"
  fi
  if [ -n "$DEBUG" ]; then export CMAKE_EXTRA_ARGS="-DCMAKE_BUILD_TYPE=Debug"; fi
- |
  # Initialize environment
  if [ -n "$PYPY" ]; then
    $PYPY_BINARY -m ensurepip
    $PYPY_BINARY -m pip install pytest
  elif [ -n "$DOCKER" ]; then
    docker pull $DOCKER
    # Disable LTO with gcc until gcc 79296 is fixed:
    if [ -n "$GCC" ]; then export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DPYBIND11_LTO_CXX_FLAGS="; fi

    export containerid=$(docker run --detach --tty \
      --volume="$PWD":/pybind11 --workdir=/pybind11 \
      --env="CXXFLAGS=$CXXFLAGS" \
      --env="CC=$CC" --env="CXX=$CXX" --env="DEBIAN_FRONTEND=$DEBIAN_FRONTEND" \
      --env=GCC_COLORS=\  \
      $DOCKER)
    export SCRIPT_RUN_PREFIX="docker exec --tty $containerid"
    $SCRIPT_RUN_PREFIX sh -c 'for s in 0 15; do sleep $s; apt-get update && apt-get -qy dist-upgrade && break; done'
    # gcc-7 currently generates warnings; some are upstream bugs, so just turn off -Werror for now
    if [ "$GCC" = "7" ]; then WERROR=off; fi
  else
    if [ "$TRAVIS_OS_NAME" = "linux" ]; then
      pip install --user --upgrade pip virtualenv
      virtualenv -p python$PYTHON venv
    elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
      if [ "$PY" = "3" ]; then
        brew update; brew install python$PY;
      else
        curl -fsSL -O https://bootstrap.pypa.io/get-pip.py
        sudo -H python get-pip.py
      fi
      pip$PY install --user --upgrade pip virtualenv
      python$PY -m virtualenv venv
    fi
    source venv/bin/activate
  fi
install:
- |
  # Install dependencies
  if [ -n "$DOCKER" ]; then
    if [ -n "$DEBUG" ]; then
      PY_DEBUG="python$PY-dbg python$PY-scipy-dbg"
      export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DPYTHON_EXECUTABLE=/usr/bin/python${PYTHON}dm"
    fi
    $SCRIPT_RUN_PREFIX sh -c "for s in 0 15; do sleep \$s; \
      apt-get -qy --no-install-recommends $APT_GET_EXTRA install \
        $PY_DEBUG python$PY-dev python$PY-pytest python$PY-scipy \
        libeigen3-dev cmake make ${COMPILER_PACKAGES} && break; done"

    if [ "$CLANG" = "4.0" ]; then
      # Neither debian nor llvm provide a libc++ deb; luckily it's fairly quick
      # to build and install, so do it ourselves:
      git clone --depth=1 https://github.com/llvm-mirror/llvm.git llvm-source
      git clone https://github.com/llvm-mirror/libcxx.git llvm-source/projects/libcxx -b release_40
      git clone https://github.com/llvm-mirror/libcxxabi.git llvm-source/projects/libcxxabi -b release_40
      $SCRIPT_RUN_PREFIX sh -c "mkdir llvm-build && cd llvm-build && \
        CXXFLAGS= cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr ../llvm-source && \
        make -j2 install-cxxabi install-cxx && \
        cp -a include/c++/v1/*cxxabi*.h /usr/include/c++/v1"

      if [ "$CPP" = "-std=c++17" ]; then export CPP="-std=c++1z"; fi
    fi
  elif [ -z "$PYPY" ]; then
    pip install numpy scipy pytest

    wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.3.0.tar.gz
    tar xzf eigen.tar.gz
    export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_INCLUDE_PATH=$PWD/eigen-eigen-26667be4f70b"
  fi
script:
- $SCRIPT_RUN_PREFIX cmake ${CMAKE_EXTRA_ARGS}
    -DPYBIND11_PYTHON_VERSION=$PYTHON
    -DPYBIND11_CPP_STANDARD=$CPP
    -DPYBIND11_WERROR=${WERROR:-ON}
- $SCRIPT_RUN_PREFIX make pytest -j 2
- $SCRIPT_RUN_PREFIX make test_cmake_build
after_failure: cat tests/test_cmake_build/*.log
after_script:
- if [ -n "$DOCKER" ]; then docker stop "$containerid"; docker rm "$containerid"; fi
