language: cpp

env:
  global:
    - CTEST_PARALLEL_LEVEL=4
    - CTEST_OUTPUT_ON_FAILURE=1
    - CXX_FLAGS_DEBUG="-O1"

matrix:
  include:
    - name: "Trusty - Debug - g++"
      env: BUILD_TYPE=Debug
      dist: trusty
      compiler: g++
      addons:
        apt:
          packages:
            - cmake
            - libboost-all-dev
            - libassimp-dev
            - libeigen3-dev

    - name: "Xenial - Debug - g++"
      env: BUILD_TYPE=Debug
      dist: xenial
      compiler: g++
      addons:
        apt:
          packages:
            - cmake
            - libboost-all-dev
            - libassimp-dev
            - libeigen3-dev
            - liboctomap-dev
    - name: "Xenial - Release - g++"
      env: BUILD_TYPE=Release
      dist: xenial
      compiler: g++
      addons:
        apt:
          packages:
            - cmake
            - libboost-all-dev
            - libassimp-dev
            - libeigen3-dev
            - liboctomap-dev
    - name: "Xenial - Debug - clang"
      env: BUILD_TYPE=Debug
      dist: xenial
      compiler: clang
      addons:
        apt:
          packages:
            - cmake
            - libboost-all-dev
            - libassimp-dev
            - libeigen3-dev
            - liboctomap-dev

    - name: "Bionic - Debug - g++"
      env: BUILD_TYPE=Debug
      dist: xenial
      compiler: g++
      addons:
        apt:
          packages:
            - cmake
            - libboost-all-dev
            - libassimp-dev
            - libeigen3-dev
            - liboctomap-dev

    - name: "OSX - Debug - clang"
      env: BUILD_TYPE=Debug
      os: osx
      compiler: clang
      addons:
        homebrew:
          taps: homebrew/science
          update: true
          packages:
            - git
            - cmake
            - boost
            - libccd
            - assimp
            - eigen
            - octomap

before_install:
  # Add robotpkg
  - sudo sh -c "echo \"deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg\" >> /etc/apt/sources.list"
  - curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
  - sudo apt-get update
  # install eigenpy
  - sudo apt-get -qqy install robotpkg-py27-eigenpy
  # set environment variables
  - export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/opt/openrobots/lib/pkgconfig"
  - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/openrobots/lib"

script:
  # Create build directory
  - mkdir build
  - cd build

  # Configure
  - cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_FLAGS=-w -DCMAKE_CXX_FLAGS_DEBUG=${CXX_FLAGS_DEBUG} ..

  # Build
  - make -j4

  # Run unit tests
  - travis_wait 30 ctest

  # Make sure we can install and uninstall with no issues
  - sudo make -j4 install
  - sudo make -j4 uninstall