language: cpp
dist: trusty
sudo: false
matrix:
  include:
  - os: linux
    env: PYTHON=2.7 CPP=11 GCC=4.8
    addons:
      apt:
        packages: [cmake=2.\*, cmake-data=2.\*]
  - os: linux
    env: PYTHON=3.6 CPP=11 GCC=4.8
    addons:
      apt:
        sources: [deadsnakes]
        packages: [python3.6-dev python3.6-venv, cmake=2.\*, cmake-data=2.\*]
  - 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
  - os: linux
    env: PYTHON=3.6 CPP=17 CLANG=4.0
    addons:
      apt:
        sources: [deadsnakes, llvm-toolchain-trusty-4.0]
        packages: [python3.6-dev python3.6-venv clang-4.0 llvm-4.0-dev, lld-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
    env: PYPY=5.8 PYTHON=2.7 CPP=11 GCC=4.8
    addons:
      apt:
        packages: [libblas-dev, liblapack-dev, gfortran]
  - 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 PYTHON=3.5
    install: $PY_CMD -m pip install --user --upgrade pytest
  # Documentation build:
  - os: linux
    language: docs
    env: DOCS STYLE LINT
    install:
    - export PATH="~/.local/bin:$PATH"
    - $PY_CMD -m pip install --user --upgrade sphinx sphinx_rtd_theme breathe 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"
    script:
    - make -C docs html SPHINX_OPTIONS=-W
    - tools/check-style.sh
    - flake8
  allow_failures:
    - env: PYTHON=3.5 CPP=17 GCC=7
cache:
  directories:
  - $HOME/.local/bin
  - $HOME/.local/lib
  - $HOME/.local/include
  - $HOME/Library/Python
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"
    else
      if [ -z "$GCC" ]; then GCC=4.8
      else COMPILER_PACKAGES=g++-$GCC
      fi
      export CXX=g++-$GCC CC=gcc-$GCC
    fi
    if [ "$GCC" = "6" ] || [ "$CLANG" = "3.9" ]; then DOCKER=${ARCH:+$ARCH/}debian:stretch
    elif [ "$GCC" = "7" ]; then DOCKER=debian:sid
    fi
  elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
    export CXX=clang++ CC=clang;
  fi
  if [ -n "$CPP" ]; then CPP=-std=c++$CPP; fi
  if [ "${PYTHON:0:1}" = "3" ]; then PY=3; fi
  if [ -n "$DEBUG" ]; then CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_BUILD_TYPE=Debug"; fi
- |
  # Initialize environment
  set -e
  if [ -n "$DOCKER" ]; then
    docker pull $DOCKER

    containerid=$(docker run --detach --tty \
      --volume="$PWD":/pybind11 --workdir=/pybind11 \
      --env="CC=$CC" --env="CXX=$CXX" --env="DEBIAN_FRONTEND=$DEBIAN_FRONTEND" \
      --env=GCC_COLORS=\  \
      $DOCKER)
    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'
  else
    if [ "$PYPY" = "5.8" ]; then
      curl -fSL https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.8.0-linux64.tar.bz2 | tar xj
      PY_CMD=$(echo `pwd`/pypy2-v5.8.0-linux64/bin/pypy)
      CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DPYTHON_EXECUTABLE:FILEPATH=$PY_CMD"
    else
      PY_CMD=python$PYTHON
      if [ "$TRAVIS_OS_NAME" = "osx" ]; then
        if [ "$PY" = "3" ]; then
          brew update; brew install python$PY;
        else
          curl -fsSL https://bootstrap.pypa.io/get-pip.py | $PY_CMD - --user
        fi
      fi
    fi
    if [ "$PY" = 3 ] || [ -n "$PYPY" ]; then
      $PY_CMD -m ensurepip --user
    fi
    $PY_CMD -m pip install --user --upgrade pip wheel
  fi
  set +e
install:
- |
  # Install dependencies
  set -e
  if [ -n "$DOCKER" ]; then
    if [ -n "$DEBUG" ]; then
      PY_DEBUG="python$PY-dbg python$PY-scipy-dbg"
      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 install \
        $PY_DEBUG python$PY-dev python$PY-pytest python$PY-scipy \
        libeigen3-dev cmake make ${COMPILER_PACKAGES} && break; done"
  else

    if [ "$CLANG" = "4.0" ]; then
      if ! [ -d ~/.local/include/c++/v1 ]; then
        # Neither debian nor llvm provide a libc++ 4.0 deb; luckily it's fairly quick
        # to build, install (and cache), 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
        mkdir llvm-build && cd llvm-build
        # Building llvm requires a newer cmake than is provided by the trusty container:
        CMAKE=cmake-3.8.0-Linux-x86_64
        curl https://cmake.org/files/v3.8/$CMAKE.tar.gz | tar xz
        ./$CMAKE/bin/cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/.local ../llvm-source
        make -j2 install-cxxabi install-cxx
        cp -a include/c++/v1/*cxxabi*.h ~/.local/include/c++/v1
        cd ..
      fi
      export CXXFLAGS="-isystem $HOME/.local/include/c++/v1 -stdlib=libc++"
      export LDFLAGS="-L$HOME/.local/lib -fuse-ld=lld-$CLANG"
      export LD_LIBRARY_PATH="$HOME/.local/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
      if [ "$CPP" = "-std=c++17" ]; then CPP="-std=c++1z"; fi
    fi

    export NPY_NUM_BUILD_JOBS=2
    echo "Installing pytest, numpy, scipy..."
    ${PYPY:+travis_wait 30} $PY_CMD -m pip install --user --upgrade pytest numpy scipy \
        ${PYPY:+--extra-index-url https://imaginary.ca/trusty-pypi}
    echo "done."

    wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.3.3.tar.gz
    tar xzf eigen.tar.gz
    export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH:+:}$PWD/eigen-eigen-67e894c6cd8f"
  fi
  set +e
script:
- $SCRIPT_RUN_PREFIX cmake ${CMAKE_EXTRA_ARGS}
    -DPYBIND11_PYTHON_VERSION=$PYTHON
    -DPYBIND11_CPP_STANDARD=$CPP
    -DPYBIND11_WERROR=${WERROR:-ON}
    -DDOWNLOAD_CATCH=ON
- $SCRIPT_RUN_PREFIX make pytest -j 2
- $SCRIPT_RUN_PREFIX make cpptest -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
