language: cpp
sudo: false

dist: xenial
addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
      - sourceline: 'deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main'
        key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
    packages:
      - build-essential
      - gawk
      - genromfs
      - libc6-i386
      - libxml2-dev
      - libxslt1-dev
      - python-pip
      - python-dev
      - zlib1g-dev
      - gdb
      - cmake
      - cmake-data
      - clang-7
      - llvm-7

cache:
  ccache: false
  directories:
    - $HOME/opt

before_install:
  - echo 0 | sudo dd of=/proc/sys/kernel/yama/ptrace_scope
  - Tools/scripts/configure-ci.sh
  - if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then export CI_CRON_JOB=1 ; fi

script:
  - Tools/scripts/build_ci.sh

notifications:
  webhooks:
    urls:
      - https://webhooks.gitter.im/e/e5e0b55e353e53945b4b
    on_success: change  # options: [always|never|change] default: always
    on_failure: always  # options: [always|never|change] default: always
    on_start: false     # default: false

compiler:
  - gcc

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: "FjIwqZQV2FhNPWYITX5LZXTE38yYqBaQdbm3QmbEg/30wnPTm1ZOLIU7o/aSvX615ImR8kHoryvFPDQDWc6wWfqTEs3Ytq2kIvcIJS2Y5l/0PFfpWJoH5gRd6hDThnoi+1oVMLvj1+bhn4yFlCCQ2vT/jxoGfiQqqgvHtv4fLzI="
    - AUTOTEST_UPLOAD=true  # Upload logs of failed tests to ArduPilot server; requires authentication

matrix:
  fast_finish: true
  include:
    - if: type != cron
      compiler: "gcc"
      env: CI_BUILD_TARGET="revo-bootloader periph-build CubeOrange-bootloader iofirmware stm32f7 stm32h7 fmuv2-plane sitltest-copter-tests2"
    - if: type != cron
      compiler: "gcc"
      env: CI_BUILD_TARGET="sitltest-copter-tests1"
    - if: type != cron
      compiler: "gcc"
      env: CI_BUILD_TARGET="sitltest-quadplane sitltest-plane"
    - if: type != cron
      compiler: "clang-7"
      env: CI_BUILD_TARGET="sitltest-rover sitltest-sub sitltest-balancebot"
    - if: type != cron
      compiler: "clang-7"
      env: CI_BUILD_TARGET="unit-tests sitl sitltest-tracker sitltest-heli"