#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

# build Apache Thrift on Travis CI - https://travis-ci.org/

language: cpp

cache:
 - apt
 - npm
 - maven



## Build matrix:
env:
 # Small Set
 - CONFIG="--without-erlang --without-haskell --without-python --without-go --without-lua --without-d --without-ruby --without-nodejs --without-java"

 # Build All
 # TODO: fix these languages
 - CONFIG="--without-erlang --without-haskell --without-python --without-go --without-lua"

 
matrix:
  include:
    - compiler: gcc
      env: CONFIG="--disable-libs"
      before_install:
       - sh contrib/installCXXDependencies.sh;
      script:
       - make check -j4;
       - mkdir build_native && cd build_native && cmake ../compiler/cpp/ && make -j4; cd ..;
       - mkdir build_mingw32 && cd build_mingw32 && cmake -DCMAKE_TOOLCHAIN_FILE=../contrib/mingw32-toolchain.cmake ../compiler/cpp/ && make -j4; cd ..;

    - compiler: clang
      env: CONFIG="--disable-libs"
      before_install:
       - sh contrib/installCXXDependencies.sh;
      script:
       - make check -j4;



## Default build sequence:
before_install:
 - sh contrib/installDependencies.sh 1> /dev/null;

install:
 - sh bootstrap.sh;
 - sh configure $CONFIG;

script:
 - make -j4 && make dist;
 - make cross -j4;
# TODO: add these steps
#  - sh bootstrap.sh ; dpkg-buildpackage -tc
