os:
 - linux
 - osx

# If linux, use precise
dist: trusty
sudo: false

language:
 - cpp

python:
 - "2.7"

env:
 - BUILD_TYPE=Debug
 - BUILD_TYPE=Release

compiler:
 - clang

cache:
 - pip

addons:
 # Everything under apt is only used on linux
 apt:
  sources:
   # PPA for clang 6.0
   - llvm-toolchain-trusty-6.0
   # PPA for clang-format 8
   - llvm-toolchain-trusty
   # PPA for a more recen libstdc++
   - ubuntu-toolchain-r-test
  packages:
   # Get recent compilers
   - clang-6.0
   # Pull a recent version of libstdc++
   - libstdc++-6-dev
   # Ninja builds are faster
   - ninja-build
   # Required for the code generator, unfortunately this is jinja2 2.6 which lacks some of the options we use
   - python-jinja2
   # Required dependency for GLFW on Linux
   - xorg-dev
   # Format using the latest and greatest
   - clang-format-8

before_install:
 - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update; fi

install:
 # Install dependencies required on OSX
 - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install ninja; fi
 - if [ "$TRAVIS_OS_NAME" == "osx" ]; then pip2 install --user jinja2; fi

script:
 # Use the more recent compilers we just installed
 - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$CXX" == "clang++" ]; then export CXX="clang++-6.0" CC="clang-6.0"; fi

 # Build
 - mkdir -p build
 - cd build
 - cmake --version
 - cmake -G "Ninja" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DDAWN_USE_WERROR=1 ..
 - cmake --build . -- -j 1

 # Test
 - ./dawn_unittests

 # Get out of the build dir
 - cd ..

 # Lint
 - if [ "$TRAVIS_OS_NAME" == "linux" ]; then ./scripts/travis_lint_format.sh clang-format-8; fi