#! /bin/bash

cd `dirname $0`
EXAMPLES_DIR=`pwd`/..
EXAMPLE=pof
MODE=$1

. ./function_set_env

set_env $EXAMPLE $MODE

COH_LIB=coherence

# Optimization and debug settings
if [[ $MODE == "debug" ]] ; then
    CC_OPTS="-g"
 else
    CC_OPTS="-O3"
 fi

OS=$(uname -s)
# Platform specific settings
if [[ $OS == "Darwin" ]] ; then
    LIBSUFFIX=.dylib
    CC=g++
    CC_OPTS="-dynamiclib $CC_OPTS"
elif [[ $OS == "Linux" ]] ; then
    CC=g++
    LIBSUFFIX=.so
    CC_OPTS="-shared $CC_OPTS"
elif [[ $OS == "SunOS" ]] ; then
    CC=CC
    LIBSUFFIX=.so
    CC_OPTS="-G $CC_OPTS"
else
    echo unrecognized build environment $OS
fi

COH_LIB_FILE=${COHERENCE_CPP_HOME}/lib/lib${COH_LIB}${LIBSUFFIX}
if [ ! -f $COH_LIB_FILE ] ; then
    echo Missing Coherence Dynamic Library: ${COH_LIB_FILE}
    exit 1
fi

# Identify 32 or 64 binary
if [ `file  ${COH_LIB_FILE} | grep '64' | wc -w` -gt 0 ] ; then
    ARCH=64
else
    ARCH=32
fi 

# Compiler specific settings
if [ $CC == "g++" ] ; then
    CC_OPTS="-Wall -ansi -fPIC -m${ARCH} $CC_OPTS"
elif [ $CC == "CC" ] ; then
    CC_OPTS="-errtags=yes -m${ARCH} $CC_OPTS"
fi 

POF_OUT_DIR=$EXAMPLES_DIR/pof/out
if [ ! -d $POF_OUT_DIR ]; then
  mkdir $POF_OUT_DIR
fi

OUT=$POF_OUT_DIR/lib${EXAMPLE}${LIBSUFFIX}

INC="-I$EXAMPLES_DIR -I$COHERENCE_CPP_HOME/include -I."
SRC="$EXAMPLES_DIR/pof/*.cpp"
LIBPATH="-L$COHERENCE_CPP_HOME/lib"
LIB="${LIBPATH} -l${COH_LIB} "

 # Perform build
echo building $OUT ...

if [[ $COH_VERBOSE == "true" ]] ; then
    echo
    echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    echo $CC $CC_OPTS $SRC $INC $LIBPATH $LIB -o $OUT
    echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    echo
fi

$CC $CC_OPTS $SRC $INC $LIBPATH $LIB -o $OUT

# Cleanup the intermediates
rm -f *.o
