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
      - gcc-4.9
      - g++-4.9
      - 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"
    - if: type != cron
      compiler: "gcc"
      env: CI_BUILD_TARGET="sitltest-copter"
    - 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: "gcc"
      env: CI_BUILD_TARGET="unit-tests"
    - if: type != cron
      compiler: "clang-7"
      env: CI_BUILD_TARGET="sitl""
    - language: python
      python: 3.7
      addons:  # speedup: This test does not need addons
      compiler:
      dist: xenial  # required for Python >= 3.7 (travis-ci/travis-ci#9069)
      before_install: pip install flake8
      script:
        - EXCLUDE=./.*,./modules/gtest,./modules/ChibiOS/test,./modules/uavcan/libuavcan,./modules/libcanard
        - flake8 . --count --exclude=$EXCLUDE --select=E901,E999,F821,F822,F823 --show-source --statistics