language: cpp
branches:
  only:
  - master
  - coverity_scan
  - /recast-.*$/

sudo: false

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
      - llvm-toolchain-xenial-7
    packages: [ cmake, clang-7, clang-tools-7, gcc-8, g++-8, libsdl2-dev ]

matrix:
  include:
  - name: Recastnavigation (all) on MacOS xcode9.4
    os: osx
    osx_image: xcode9.4
    before_install:
      - brew update
      - brew install sdl2
    if: branch != coverity_scan
  - name: Recastnavigation on Ubuntu Xenial GCC-5
    os: linux
    dist: xenial
    sudo: required
    if: branch != coverity_scan
  - name: Recastnavigation on Ubuntu Xenial GCC-8
    os: linux
    dist: xenial
    sudo: required
    env:
      - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
    if: branch != coverity_scan
  - name: Recastnavigation on Ubuntu Xenial GCC-5 using Premake5
    os: linux
    dist: xenial
    sudo: required
    if: branch != coverity_scan
    before_install:
      - wget https://github.com/premake/premake-core/releases/download/v5.0.0-alpha12/premake-5.0.0-alpha12-linux.tar.gz -O premake.tar.gz
      - tar -xf premake.tar.gz
    env:
      - PREMAKE=1
  - name: Recastnavigation on Ubuntu Xenial Clang-7 with Static Analysis
    os: linux
    dist: xenial
    sudo: required
    env:
      - MATRIX_EVAL="CC=clang-7 && CXX=clang++-7"
      - ANALYZE="scan-build-7 --force-analyze-debug-code --use-cc clang-7 --use-c++ clang++-7"
    if: branch != coverity_scan
    compiler: clang
  - name: Recastnavigation Coverity Scan
    os: linux
    dist: xenial
    sudo: required
    if: branch = coverity_scan

before_script:
  - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then eval "${MATRIX_EVAL}"; fi
  - if [ "${PREMAKE}" = "1" ]; then cd RecastDemo && ../premake5 gmake && cd ..; fi
  - if [ "${PREMAKE}" != "1" ]; then mkdir -p build && cd build && ${ANALYZE} cmake ../ && cd ..; fi

script:  # 2 CPUs on Travis-CI + 1 extra for IO bound process
  - if [ "${PREMAKE}" = "1" ]; then make -C RecastDemo/Build/gmake -j3; fi
  - if [ "${PREMAKE}" != "1" ]; then make -C build -j3; fi
  - if [ "${PREMAKE}" = "1" ]; then RecastDemo/Bin/Tests; fi
  - if [ "${PREMAKE}" != "1" ]; then cd build && ctest; fi
