language: c

macbase:
  - &macOld
    os: osx
    compiler: clang
    env:
      - HOMEBREW_NO_AUTO_UPDATE=1
      - HOMEBREW_NO_INSTALL_CLEANUP=1
  - &macNew
    <<: *macOld
    addons:
      homebrew:
        packages: ['autoconf', 'automake', 'ffmpeg', 'freetype', 'fribidi',
                   'libass', 'libtool', 'little-cms2', 'luajit', 'nasm',
                   'pkg-config', 'python']
        update: true

matrix:
  include:
    - <<: *macNew
      osx_image: xcode11.3
    - <<: *macNew
      osx_image: xcode10.1
    - <<: *macOld
      osx_image: xcode9.2
    - os: linux
      compiler: gcc
      env: CONTAINER=registry.cirno.systems/kiwi/containers/mpv-ci:stable-deps CI_SCRIPT=ci/build-tumbleweed.sh
    - os: linux
      compiler: clang
      env: CONTAINER=registry.cirno.systems/kiwi/containers/mpv-ci:stable-deps CI_SCRIPT=ci/build-tumbleweed.sh
    - os: linux
      env: CONTAINER=registry.cirno.systems/kiwi/containers/mpv-ci-mingw64:i686 CI_SCRIPT=ci/build-mingw64.sh TARGET=i686-w64-mingw32
    - os: linux
      env: CONTAINER=registry.cirno.systems/kiwi/containers/mpv-ci-mingw64:x86_64 CI_SCRIPT=ci/build-mingw64.sh TARGET=x86_64-w64-mingw32
  allow_failures:
    - os: osx
      osx_image: xcode9.2
  fast_finish: true

dist: bionic
services:
  - docker

sudo: required

env:
  global:
    # Coverity token
    - secure: "H21mSRlMhk4BKS0xHZvCFGJxteCP0hRVUxTuNfM2Z9HBsyutuLEYMtViLO86VtM+Tqla3xXPzUdS4ozLwI72Ax/5ZUDXACROj73yW6QhFB5D6rLut12+FjqC7M33Qv2hl0xwgNBmR5dsm1ToP37+Wn+ecJQNvN8fkTXF+HVzOEw="
    # Travis token for mpv.io
    - secure: "nlTVLJK6kRhtXvhKCoJ3YdFGHuKaq/eHowfPw25hqRWuBOZd+HjHY5KIYjV7SxuKFDpJE4GpNcvA3Q31nsqomxpkLYgrwjg6TSazN7ZP+x85ZgV1QGFebrPfGm2n5UR5CAPAwFoeF3pZheLi4bajVzwq1fWW+x3grS188P9OZso="

branches:
  only:
    - master
    - ci
    - coverity_scan
    - /release\/.*$/

before_install:
  - if [ "$TRAVIS_COMPILER" = "clang" ]; then export CXX="clang++"; fi
  - if [ "$TRAVIS_COMPILER" = "gcc" ]; then export CXX="g++"; fi
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker pull $CONTAINER; fi
  - |
        if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
            if [[ "$TRAVIS_OSX_IMAGE" == "xcode9.2" ]]; then
                brew update
                pushd "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core"
                git checkout 55e02323812604add9a69bab8730319b9255a697
                popd
                brew install autoconf
                brew install automake
                brew install pkg-config
                brew install libtool
                brew install python
                brew install freetype
                brew install fribidi
                brew install little-cms2
                brew install luajit
                brew install libass
                brew install ffmpeg
            else
                brew link --overwrite python
            fi
        fi

before_cache:
  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew cleanup -s ; fi

cache:
  directories:
    - $HOME/Library/Caches/Homebrew

script:
  - ./bootstrap.py
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker run --env CC --env TARGET -v $TRAVIS_BUILD_DIR:/build $CONTAINER /bin/sh -c "cd /build && $CI_SCRIPT"; fi
  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then ./ci/build-macos.sh; fi
after_failure: cat ./build/config.log
after_script: TOOLS/travis-rebuild-website

notifications:
  email: false
  irc:
    if: fork = false
    channels:
      - "irc.freenode.org#mpv-devel"
    on_success: change
    on_failure: always

addons:
  coverity_scan:
    project:
      name: "mpv-player/mpv"
      description: "Build submitted via Travis CI"
    notification_email: mpv-team@googlegroups.com
    build_command_prepend: "./bootstrap.py && ./waf configure"
    build_command:   "./waf build"
    branch_pattern: coverity_scan
