1# Build matrix / environment variable are explained on:
2# http://about.travis-ci.org/docs/user/build-configuration/
3# This file can be validated on:
4# http://lint.travis-ci.org/
5
6sudo: false
7language: cpp
8
9# Define the matrix explicitly, manually expanding the combinations of (os, compiler, env).
10# It is more tedious, but grants us far more flexibility.
11matrix:
12  include:
13    - os: linux
14      compiler: gcc
15      sudo: true
16      cache:
17      install: ./ci/install-linux.sh && ./ci/log-config.sh
18      script: ./ci/build-linux-bazel.sh
19    - os: linux
20      compiler: clang
21      sudo: true
22      cache:
23      install: ./ci/install-linux.sh && ./ci/log-config.sh
24      script: ./ci/build-linux-bazel.sh
25    - os: linux
26      compiler: gcc
27      env: BUILD_TYPE=Debug VERBOSE=1
28    - os: linux
29      compiler: gcc
30      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11
31    - os: linux
32      compiler: clang
33      env: BUILD_TYPE=Debug VERBOSE=1
34    - os: linux
35      compiler: clang
36      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11
37    - os: osx
38      compiler: gcc
39      env: BUILD_TYPE=Debug VERBOSE=1
40    - os: osx
41      compiler: gcc
42      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11
43    - os: osx
44      compiler: clang
45      env: BUILD_TYPE=Debug VERBOSE=1
46    - os: osx
47      compiler: clang
48      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11
49
50# These are the install and build (script) phases for the most common entries in the matrix.  They could be included
51# in each entry in the matrix, but that is just repetitive.
52install:
53  - ./ci/install-${TRAVIS_OS_NAME}.sh
54  - . ./ci/env-${TRAVIS_OS_NAME}.sh
55  - ./ci/log-config.sh
56
57script: ./ci/travis.sh
58
59# For sudo=false builds this section installs the necessary dependencies.
60addons:
61  apt:
62    # List of whitelisted in travis packages for ubuntu-precise can be found here:
63    #   https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
64    # List of whitelisted in travis apt-sources:
65    #   https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
66    sources:
67    - ubuntu-toolchain-r-test
68    - llvm-toolchain-precise-3.7
69    packages:
70    - g++-4.9
71    - clang-3.7
72
73notifications:
74  email: false
75