#!/bin/bash

BUILD_BOOST=true
BUILD_XGBOOST=true
BUILD_LIGHTGBM=true
BUILD_ALGOMARKER=true

OVERRIDE_ALL=${1-0}

BOOST_FPIC_DIR=/nas1/Work/Libs/Boost/boost_1_67_0-fPIC
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
BLDDIR="${DIR}/Build"
STATIC_LIBS_TARGET="${BLDDIR}/lib"

if [[ "`which sudo 2>>/dev/null`" ]]; 
then 
export SUDO="`which sudo`"
else
export SUDO=''
fi

echo "SUDO=${SUDO}"
echo "BOOST_FPIC_DIR=${BOOST_FPIC_DIR}"
echo "DIR=${DIR}"
echo "BLDDIR=${BLDDIR}"
echo "STATIC_LIBS_TARGET=${STATIC_LIBS_TARGET}"

mkdir -p "${STATIC_LIBS_TARGET}"

if [ "$BUILD_BOOST" = true ] ; then
pushd ${BOOST_FPIC_DIR}
if [ ! -f ${STATIC_LIBS_TARGET}/libboost_system.a ] || [ $OVERRIDE_ALL -gt 0 ]; then
	./b2 --clean
	./bootstrap.sh --without-icu --with-libraries=filesystem,system,regex,program_options --prefix=${BOOST_FPIC_DIR}/installation
	./b2 link=static variant=release linkflags=-static-libstdc++ -j20 cxxflags="-fPIC" --stagedir="${BLDDIR}" toolset=gcc
else
	echo "BOOST Already exists"
fi
popd
fi

if [ "$BUILD_XGBOOST" = true ] ; then
pushd $MR_ROOT/Libs/External/xgboost
if [ $OVERRIDE_ALL -gt 0 ]; then
make clean
#cmake .

#The clean doesn't delete .a files
find . -name '*.a' -exec rm {} \;
fi
make -j20
cp ./lib/libxgboost.a ${STATIC_LIBS_TARGET}
cp ./rabit/lib/librabit.a ${STATIC_LIBS_TARGET}
cp ./dmlc-core/libdmlc.a ${STATIC_LIBS_TARGET}
popd
fi

if [ "$BUILD_LIGHTGBM" = true ] ; then
mkdir -p ${BLDDIR}/LightGBM/
cp ${DIR}/Resources/LightGBM/LightGBM_CMakeLists_file ${BLDDIR}/LightGBM/CMakeLists.txt
pushd ${BLDDIR}/LightGBM/
cmake .
make -j20
popd
fi

if [ "$BUILD_ALGOMARKER" = true ] ; then
cp ${DIR}/Resources/AlgoMarker/AlgoMarker_TopLeveL_CMakeLists ${DIR}/../CMakeLists.txt
cp ${DIR}/Resources/AlgoMarker/AlgoMarker_CMakeLists ${DIR}/../AlgoMarker/CMakeLists.txt
mkdir -p ${BLDDIR}/AlgoMarker/CMakeBuild/Linux/Release
pushd ${BLDDIR}/AlgoMarker/CMakeBuild/Linux/Release
cmake -D SO_COMPILATION=TRUE ${DIR}/..

version_txt=`get_git_status_text.py | sed 's|"||g' | awk -F"\t" '{print "\"" $1 "\""}'`
echo -e "Git version info:\n${version_txt}"
touch ${MR_ROOT}/Libs/Internal/MedUtils/MedUtils/MedGitVersion.h

make -j20 -e GIT_HEAD_VERSION="$version_txt"
cp ${BLDDIR}/AlgoMarker/CMakeBuild/Linux/Release/AlgoMarker/libdyn_AlgoMarker.so ${DIR}/../Linux/Release/
strip ${DIR}/../Linux/Release/libdyn_AlgoMarker.so
nm -CD ${DIR}/../Linux/Release/libdyn_AlgoMarker.so | grep " T " > ${BLDDIR}/AlgoMarker/AlgoMarker.public_symbols
ldd ${DIR}/../Linux/Release/libdyn_AlgoMarker.so > ${BLDDIR}/AlgoMarker/AlgoMarker.ldd
FINAL_PT=$(realpath ${DIR}/../Linux/Release/libdyn_AlgoMarker.so)
echo "AlgoMarker Shared Object file written to ${FINAL_PT}"
popd
fi

exit 0


