#
#  Copyright (c) 2016, The OpenThread Authors.
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions are met:
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#  3. Neither the name of the copyright holder nor the
#     names of its contributors may be used to endorse or promote products
#     derived from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#  POSSIBILITY OF SUCH DAMAGE.
#

language: python
python: "3.6"

sudo: required
dist: trusty

before_install:
  - .travis/before_install.sh

before_script:
  - if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
      sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6';
    fi

script:
  - .travis/script.sh

after_success:
  - bash <(curl -s https://codecov.io/bash)

matrix:
  include:
    - env: BUILD_TARGET="posix-app-cli" VERBOSE=1 VIRTUAL_TIME=1
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="posix-app-ncp" VERBOSE=1 VIRTUAL_TIME=1
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="posix-app-pty" VERBOSE=1
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="android-build" VERBOSE=1
      os: linux
      python: "2.7"
    - env: BUILD_TARGET="posix-distcheck" CC=clang-6.0 CXX=clang++-6.0 VERBOSE=1 VIRTUAL_TIME=1
      os: linux
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-6.0
            - ubuntu-toolchain-r-test
          packages:
            - clang-6.0
    - env: BUILD_TARGET="posix-32-bit" VERBOSE=1 VIRTUAL_TIME=1
      os: linux
      compiler: gcc
      python: "2.7"
    - env: BUILD_TARGET="posix-ncp" VERBOSE=1 VIRTUAL_TIME=1
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="posix-mtd" VERBOSE=1 VIRTUAL_TIME=1
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="pretty-check"
      os: linux
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-5.0
          packages:
            - clang-5.0
    - env: BUILD_TARGET="scan-build" CC="clang-6.0" CXX="clang++-6.0"
      os: linux
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-6.0
            - ubuntu-toolchain-r-test
          packages:
            - clang-6.0
    - env: BUILD_TARGET="arm-gcc-4"
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="arm-gcc-5"
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="arm-gcc-6"
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="arm-gcc-7"
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="posix" CC=clang-6.0 CXX=clang++-6.0
      os: linux
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-6.0
            - ubuntu-toolchain-r-test
          packages:
            - clang-6.0
    - env: BUILD_TARGET="posix" CC="gcc-5" CXX="g++-5"
      os: linux
      compiler: gcc
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-5
            - g++-5
    - env: BUILD_TARGET="posix" CC="gcc-6" CXX="g++-6"
      os: linux
      compiler: gcc
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-6
            - g++-6
    - env: BUILD_TARGET="posix" CC="gcc-7" CXX="g++-7"
      os: linux
      compiler: gcc
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-7
            - g++-7
    - env: BUILD_TARGET="posix" CC="gcc-8" CXX="g++-8"
      os: linux
      compiler: gcc
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - gcc-8
            - g++-8
    - env: BUILD_TARGET="posix-ncp-spi" VERBOSE=1
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="toranj-test-framework" VERBOSE=1
      os: linux
      compiler: gcc
    - env: BUILD_TARGET="toranj-test-framework" VERBOSE=1 TORANJ_POSIX_APP_RCP_MODEL=1
      os: linux
      compiler: gcc
      python: "2.7"