1# Build matrix / environment variable are explained on:
2# https://docs.travis-ci.com/user/customizing-the-build/
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      install: ./ci/install-linux.sh && ./ci/log-config.sh
17      script: ./ci/build-linux-bazel.sh
18    - os: linux
19      compiler: clang
20      sudo : true
21      install: ./ci/install-linux.sh && ./ci/log-config.sh
22      script: ./ci/build-linux-bazel.sh
23    - os: linux
24      group: deprecated-2017Q4
25      compiler: gcc
26      install: ./ci/install-linux.sh && ./ci/log-config.sh
27      script: ./ci/build-linux-autotools.sh
28    - os: linux
29      group: deprecated-2017Q4
30      compiler: gcc
31      env: BUILD_TYPE=Debug VERBOSE=1 CXX_FLAGS=-std=c++11
32    - os: linux
33      group: deprecated-2017Q4
34      compiler: clang
35      env: BUILD_TYPE=Debug VERBOSE=1
36    - os: linux
37      group: deprecated-2017Q4
38      compiler: clang
39      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11
40    - os: linux
41      compiler: clang
42      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 NO_EXCEPTION=ON NO_RTTI=ON COMPILER_IS_GNUCXX=ON
43    - os: osx
44      compiler: gcc
45      env: BUILD_TYPE=Debug VERBOSE=1
46    - os: osx
47      compiler: gcc
48      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11
49    - os: osx
50      compiler: clang
51      env: BUILD_TYPE=Debug VERBOSE=1
52      if: type != pull_request
53    - os: osx
54      env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11
55      if: type != pull_request
56
57# These are the install and build (script) phases for the most common entries in the matrix.  They could be included
58# in each entry in the matrix, but that is just repetitive.
59install:
60  - ./ci/install-${TRAVIS_OS_NAME}.sh
61  - . ./ci/env-${TRAVIS_OS_NAME}.sh
62  - ./ci/log-config.sh
63
64script: ./ci/travis.sh
65
66# For sudo=false builds this section installs the necessary dependencies.
67addons:
68  apt:
69    # List of whitelisted in travis packages for ubuntu-precise can be found here:
70    #   https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
71    # List of whitelisted in travis apt-sources:
72    #   https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
73    sources:
74    - ubuntu-toolchain-r-test
75    - llvm-toolchain-precise-3.9
76    packages:
77    - g++-4.9
78    - clang-3.9
79
80notifications:
81  email: false
82