language: rust
rust:
  - 1.40.0
  - stable
  - beta
  - nightly

# Need to cache the whole `.cargo` directory to keep .crates.toml for
# cargo-update to work
cache:
  directories:
    - /home/travis/.cargo

# But don't cache the cargo registry
before_cache:
  - rm -rf /home/travis/.cargo/registry

matrix:
  # Performance tweak
  fast_finish: true
  # Ignore failures in nightly, not ideal, but necessary
  allow_failures:
  - rust: nightly

  # Only run the formatting check for stable
  include:
  - name: 'Rust: format check'
    rust: stable
    install:
    - rustup component add rustfmt
    script:
    - cargo fmt --verbose --all -- --check

addons:
  apt:
    packages:
      - gcc-arm-linux-gnueabihf
      - libc6-dev-armhf-cross
      - libpulse-dev
      - portaudio19-dev
      - libasound2-dev
      - libsdl2-dev
      - gstreamer1.0-dev
      - libgstreamer-plugins-base1.0-dev

before_script:
    - mkdir -p ~/.cargo
    - echo '[target.armv7-unknown-linux-gnueabihf]' > ~/.cargo/config
    - echo 'linker = "arm-linux-gnueabihf-gcc"' >> ~/.cargo/config
    - rustup target add armv7-unknown-linux-gnueabihf

script:
    - cargo build --locked --no-default-features
    - cargo build --locked --examples
    - cargo build --locked --no-default-features --features "with-tremor"
    - cargo build --locked --no-default-features --features "with-vorbis"
    - cargo build --locked --no-default-features --features "alsa-backend"
    - cargo build --locked --no-default-features --features "portaudio-backend"
    - cargo build --locked --no-default-features --features "pulseaudio-backend"
    - cargo build --locked --no-default-features --features "jackaudio-backend"
    - cargo build --locked --no-default-features --features "rodio-backend"
    - cargo build --locked --no-default-features --features "sdl-backend"
    - cargo build --locked --no-default-features --features "gstreamer-backend"
    - cargo build --locked --no-default-features --target armv7-unknown-linux-gnueabihf

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