#!/bin/bash
set -ev

# Directories.
root_dir=`pwd`
build_dir="$root_dir/_travis/build"
install_dir="$root_dir/_travis/install"
export DEVEL_DIR="$root_dir/_travis/"

# Shortcuts.
git_clone="git clone --recursive --quiet"
git_branch=devel

# Create layout.
rm -rf "$build_dir" "$install_dir"
mkdir -p "$build_dir"
mkdir -p "$install_dir"

# Setup environment variables.
export LD_LIBRARY_PATH="$install_dir/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="$install_dir/lib/`dpkg-architecture -qDEB_BUILD_MULTIARCH`:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$install_dir/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="$install_dir/lib/`dpkg-architecture -qDEB_BUILD_MULTIARCH`/pkgconfig:$PKG_CONFIG_PATH"
# This is a hack for travis
export PYTHONPATH="/usr/lib/python2.7/dist-packages:$PYTHONPATH"

cmake_args="-DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX:STRING='$install_dir' -DCMAKE_BUILD_TYPE=Release"
make_args="-s -j4"

install_eigen3()
{
    echo "--> Compiling Eigen"
    mkdir -p "$build_dir"
    cd "$build_dir"
    wget --quiet -O - "http://bitbucket.org/eigen/eigen/get/3.2.4.tar.bz2" | tar -xj
    mv eigen-eigen-10219c95fe65 eigen3
    cd "$build_dir/eigen3"
    mkdir build
    cd build
    cmake $cmake_args -Dpkg_config_libdir="$install_dir/lib" ..
    make $make_args install
}

install_doxygen()
{
    echo "--> Compiling Doxygen"
    mkdir -p "$build_dir"
    cd "$build_dir"
    wget --quiet -O - "https://github.com/doxygen/doxygen/archive/Release_1_8_10.tar.gz" | tar -xz;
    cd "$build_dir/doxygen-Release_1_8_10"
    mkdir build
    cd build
    cmake $cmake_args ..
    make $make_args install
}

check_dependency()
{
    echo "--> Compiling $1"
    mkdir -p "$build_dir/$1"
    cd "$build_dir"
    $git_clone "git://github.com/$1" "$1"
    cd "$build_dir/$1"
    mkdir build
    cd build
    cmake $cmake_args ..
    make $make_args
}

install_dependency()
{
    echo "--> Compiling $1"
    mkdir -p "$build_dir/$1"
    cd "$build_dir"
    branch=$2
    $git_clone --branch $branch "git://github.com/$1" "$1"
    cd "$build_dir/$1"
    mkdir build
    cd build
    cmake $cmake_args $3 ..
    make $make_args install
}

# Install dependencies

install_doxygen

install_dependency jmirabel/hpp-corbaserver          devel -DCLIENT_ONLY=ON
install_dependency jmirabel/hpp-wholebody-step-corba master -DCLIENT_ONLY=ON
install_dependency jmirabel/hpp-manipulation-corba   devel -DCLIENT_ONLY=ON

install_dependency humanoid-path-planner/gepetto-viewer         devel
install_dependency humanoid-path-planner/gepetto-viewer-corba   devel

# Compile and run tests
cd "$build_dir"
cmake "$root_dir" -DCMAKE_INSTALL_PREFIX="$install_dir"		\
		  -DCMAKE_INSTALL_PREFIX:STRING="$install_dir"  \
                  -DBUILD_HPP_CORBASERVER_PLUGIN=OFF
make $make_args
make $make_args test
make $make_args install
