sudo: false
dist: trusty
language: c

compiler:
  - clang
  - gcc

env:
  global:
    - PROTOBUF_VERSION=3.4.0
  matrix:
    - GOAL=stm32 TOOLCHAIN_SHORTVER=7-2018q2 TOOLCHAIN_LONGVER=gcc-arm-none-eabi-7-2018-q2-update
    - GOAL=unix
    - GOAL=src

matrix:
  exclude:
    - compiler: clang
      env: GOAL=stm32
    - compiler: clang
      env: GOAL=src

addons:
  apt:
    sources:
    - deadsnakes
    packages:
    - build-essential
    - gcc-multilib
    - libusb-1.0-0-dev
    - libudev-dev
    - python3.6
    - python3.6-dev
    - python3.6-venv

before_install:
    - python3.6 -m ensurepip --user
    - python3.6 -m pip install --user pipenv

install:
    - curl -LO "https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/protoc-${PROTOBUF_VERSION}-linux-x86_64.zip"
    - unzip "protoc-${PROTOBUF_VERSION}-linux-x86_64.zip" -d protoc
    - export PATH="$(pwd)/protoc/bin:$PATH"
    - pipenv install

before_script:
    - test "$GOAL" != "stm32" || wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/$TOOLCHAIN_SHORTVER/$TOOLCHAIN_LONGVER-linux.tar.bz2
    - test "$GOAL" != "stm32" || tar xfj $TOOLCHAIN_LONGVER-linux.tar.bz2
    - test "$GOAL" != "stm32" || export PATH=$PWD/$TOOLCHAIN_LONGVER/bin:$PATH

script:
  - test "$GOAL" != "src" || pipenv run make style
  - test "$GOAL" != "src" || pipenv run make templates_check

  - test "$GOAL" != "stm32" || pipenv run make build_cross
  - test "$GOAL" != "stm32" || pipenv run make build_boardloader
  - test "$GOAL" != "stm32" || pipenv run make build_bootloader
  - test "$GOAL" != "stm32" || pipenv run make build_prodtest
  - test "$GOAL" != "stm32" || pipenv run make build_firmware
  - test "$GOAL" != "stm32" || pipenv run make sizecheck

  - test "$GOAL" != "unix" || pipenv run make build_unix_noui
  - test "$GOAL" != "unix" || pipenv run make test
  - test "$GOAL" != "unix" || pipenv run make test_emu

notifications:
  webhooks:
    urls:
      - http://ci-bot.satoshilabs.com:5000/travis
    on_success: always
    on_failure: always
    on_start: always