# Travis CI has no ability to handle 3 langauges (c, c++, python)
# and it overrides $CC/$CXX if language is set to c/c++ (only one, not both).
#
# Set language to python since at least the result of that is something useful.
language: python

python:
    - "2.7"
    - "3.4"

# Manage the C/C++ compiler manually
env:
    - CC=gcc     CXX=g++
    - CC=gcc-4.8 CXX=g++-4.8
    - CC=gcc-4.9 CXX=g++-4.9
    - CC=gcc-5   CXX=g++-5
    - CC=clang   CXX=clang++

addons:
    apt:
        sources:
            - ubuntu-toolchain-r-test
        packages:
            - gcc-4.8
            - g++-4.8
            - gcc-4.9
            - g++-4.9
            - gcc-5
            - g++-5
            - scons


before_install:
    - export PATH=$HOME/.local/bin:$HOME/protobuf/bin:$PATH
    - export MAKEFLAGS=-j$(nproc)
    - $CC --version
    - $CXX --version
    - python --version
    - lsb_release -a

# Seems to be issues with concurrent builds
#cache:
#    directories:
#        - $HOME/protobuf

# Rather then compile protobuf 3 from source, use the binaries now available
# to speed up build time and reduce surprises until Ubuntu adds protobuf3
# packages to the repository.
install:
    - mkdir -p $HOME/protobuf && pushd $HOME/protobuf
      && curl -LO 'https://github.com/google/protobuf/releases/download/v3.4.0/protoc-3.4.0-linux-x86_64.zip'
      && unzip protoc-3.4.0-linux-x86_64.zip
      && popd
    - curl -L 'https://github.com/google/protobuf/releases/download/v3.4.0/protobuf-python-3.4.0.tar.gz' | tar xzf -
      && pushd protobuf-3.4.0/python
      && python setup.py build && python setup.py install
      && popd

script:
    - pushd generator/proto && make && popd
    - pushd tests && scons CC=$CC CXX=$CXX && popd
