language: cpp
branches:
  only:
    - master
    - coverity_scan
    - /openmw-.*$/
env:
  global:
   # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
   #   via the "travis encrypt" command using the project repo's public key
   - secure: "jybGzAdUbqt9vWR/GEnRd96BgAi/7Zd1+2HK68j/i/8+/1YH2XxLOy4Jv/DUBhBlJIkxs/Xv8dRcUlFOclZDHX1d/9Qnsqd3oUVkD7k1y7cTOWy9TBQaE/v/kZo3LpzA3xPwwthrb0BvqIbOfIELi5fS5s8ba85WFRg3AX70wWE="
cache:
  ccache: true
  directories:
  - ${HOME}/.ccache
addons:
  apt:
    sources:
      - sourceline: 'ppa:openmw/openmw'
      - ubuntu-toolchain-r-test
      - llvm-toolchain-xenial-7
    packages: [
      # Dev
      cmake, clang-7, clang-tools-7, gcc-8, g++-8, ccache,
      # Boost
      libboost-filesystem-dev, libboost-iostreams-dev, libboost-program-options-dev, libboost-system-dev,
      # FFmpeg
      libavcodec-dev, libavformat-dev, libavutil-dev, libswresample-dev, libswscale-dev,
      # Audio, Video and Misc. deps
      libsdl2-dev, libqt5opengl5-dev, libopenal-dev, libunshield-dev, libtinyxml-dev,
      # The other ones from OpenMW ppa
      libbullet-dev, libopenscenegraph-3.4-dev, libmygui-dev
    ]
  coverity_scan:  # TODO: currently takes too long, disabled openmw/openmw-cs for now.
    project:
      name: "OpenMW/openmw"
      description: "<Your project description here>"
    branch_pattern: coverity_scan
    notification_email: 1122069+psi29a@users.noreply.github.com
    build_command_prepend: "cov-configure --comptype gcc --compiler gcc-5 --template; cmake . -DBUILD_OPENMW=FALSE -DBUILD_OPENCS=FALSE"
    build_command: "make VERBOSE=1 -j3"
matrix:
  include:
    - name: OpenMW (all) on macOS Xcode 10.1
      os: osx
      osx_image: xcode10.1
      if: branch != coverity_scan
    - name: OpenMW (all) on Ubuntu Xenial GCC-5
      os: linux
      dist: xenial
      sudo: required
      if: branch != coverity_scan
    - name: OpenMW (all) 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: OpenMW (openmw) 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"
        - BUILD_OPENMW_CS="OFF"
      if: branch != coverity_scan
      compiler: clang
    - name: OpenMW (openmw-cs) 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"
        - BUILD_OPENMW="OFF"
      if: branch != coverity_scan
      compiler: clang
    - name: OpenMW Components Coverity Scan
      os: linux
      dist: xenial
      sudo: required
      if: branch = coverity_scan
#   allow_failures:
#    - name: OpenMW (openmw) on Ubuntu Xenial Clang-7 with Static Analysis

before_install:
    - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then eval "${MATRIX_EVAL}"; fi
    - if [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then ./CI/before_install.${TRAVIS_OS_NAME}.sh; fi
before_script:
    - if [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then ./CI/before_script.${TRAVIS_OS_NAME}.sh; fi
script:
 - cd ./build
 - if [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then ${ANALYZE} make -j3; fi
 - if [ "${COVERITY_SCAN_BRANCH}" != 1 ] && [ "${TRAVIS_OS_NAME}" = "osx" ]; then make package; fi
 - if [ "${COVERITY_SCAN_BRANCH}" != 1 ] && [ "${TRAVIS_OS_NAME}" = "osx" ]; then ../CI/check_package.osx.sh; fi
 - if [ "${COVERITY_SCAN_BRANCH}" != 1 ] && [ "${TRAVIS_OS_NAME}" = "linux" ]; then ./openmw_test_suite; fi
 - if [ "${COVERITY_SCAN_BRANCH}" != 1 ] && [ "${TRAVIS_OS_NAME}" = "linux" ]; then cd .. && ./CI/check_tabs.sh; fi
 - cd "${TRAVIS_BUILD_DIR}"
deploy:
 provider: script
 script: ./CI/deploy.osx.sh
 skip_cleanup: true
 on:
  branch: master
  condition: "$TRAVIS_EVENT_TYPE = cron && $TRAVIS_OS_NAME = osx"
  repo: OpenMW/openmw
notifications:
  email:
    recipients:
      - corrmage+travis-ci@gmail.com
    on_success: change
    on_failure: always
  irc:
    channels:
      - "chat.freenode.net#openmw"
    on_success: change
    on_failure: always
    use_notice: true