language: cpp
cache:
  ccache: true
  directories:
    # Store ctest cost data
    - Testing

# Use Linux by default
os: linux
dist: bionic

# TODO: add IBM builds when we find CMake for them
#       add PowerPC builds when sqlite3 crashing is fixed

jobs:
  include:
    # ARM workers are the slowest. Having these first in the build matrix makes travis faster overall.
    - name: "Clang 6.0 - Debug"
      arch: arm64
      compiler: clang
      before_install:
        - wget --output-document=${HOME}/CMake http://anaconda.org/conda-forge/cmake/3.17.0/download/linux-aarch64/cmake-3.17.0-h28c56e5_0.tar.bz2
        - tar --extract --one-top-level=${HOME}/SeeMake --file ${HOME}/CMake
        - export PATH=${HOME}/SeeMake/bin/:${PATH}
      env: *Debug

    - name: "AppleClang - Debug"
      os: osx
      osx_image: xcode11.3
      before_install:
        - HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache
      env: &Debug
        - TRAVIS_CUBERITE_BUILD_TYPE=Debug

    - name: "Clang 7.0 - Release"
      compiler: clang
      before_install: &use-cmake
        - wget --output-document=${HOME}/CMake http://cmake.org/files/v3.17/cmake-3.17.2-Linux-x86_64.tar.gz
        - tar --extract --one-top-level=${HOME}/SeeMake --strip-components 1 --file ${HOME}/CMake
        - export PATH=${HOME}/SeeMake/bin/:${PATH}
      env: *Release

    - name: "Clang 7.0 - Debug"
      compiler: clang
      before_install: *use-cmake
      env: *Debug

    - name: "GCC 7.4 - Release, CMake 3.12, No Unity"
      compiler: gcc
      before_install:
        - wget --output-document=${HOME}/CMake http://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.tar.gz
        - tar --extract --one-top-level=${HOME}/SeeMake --strip-components 1 --file ${HOME}/CMake
        - export PATH=${HOME}/SeeMake/bin/:${PATH}
      env:
        - TRAVIS_CUBERITE_BUILD_TYPE=Release
        - TRAVIS_CUBERITE_UNITY_BUILDS=No

    - name: "GCC 7.4 - Debug"
      compiler: gcc
      before_install: *use-cmake
      env: *Debug

# Run the build and tests
script: ./travisbuild.sh

notifications:
  email:
    on_success: change
    on_failure: always

branches:
  only:
    - master
