#!/usr/bin/env bash

if [ "$SAGE_LOCAL" = "" ]; then
   echo "SAGE_LOCAL undefined ... exiting";
   echo "Maybe run 'sage -sh'?"
   exit 1
fi

WORKDIR=${PWD}/src
SCONS=scons

prepare_polybori()
{
    if [ $UNAME = "CYGWIN" ]; then
        export PROGSUFFIX=.exe
    fi

    # place configuration file
    cp ../custom.py .
    if [ $? -ne 0 ]; then
        echo >&2 "Error copying 'custom.py'"
        exit 1
    fi

    # Apply patches.  See SPKG.txt for information about what each patch
    # does.
    for patch in ../patches/*.patch; do
        patch -p1 < "$patch"
        if [ $? -ne 0 ]; then
            echo >&2 "Error applying '$patch'"
            exit 1
        fi
    done
}

build_polybori()
{
    ${SCONS} prepare-install ${MAKEOPTS}
    if [ $? -ne 0 ]; then
        echo "Error building PolyBoRi."
        exit 1
    fi
}

install_polybori()
{
    ${SCONS} install install-headers "PREFIX=${SAGE_LOCAL}" \
        "INSTALLDIR=${SAGE_LOCAL}/share/polybori" \
        "CONFFILE=${SAGE_LOCAL}/share/polybori/flags.conf"
    if [ $? -ne 0 ]; then
        echo "Error installing PolyBoRi."
        exit 1
    fi
    # rm  -rf "${SAGE_LOCAL}/lib/python/site-packages/polybori"
}

clean_polybori()
{
    rm -f "$SAGE_LOCAL"/lib/libpolybori*
    rm -f "$SAGE_LOCAL"/lib/libpboriCudd*
    rm -f "$SAGE_LOCAL"/lib/libgroebner*
    rm -rf "$SAGE_LOCAL"/include/polybori*
    rm -rf "$SAGE_LOCAL"/include/cudd
}

cd ${WORKDIR}

prepare_polybori
echo "Starting build..."

echo "Running build_polybori..."
build_polybori
echo "Done build_polybori."

echo "Removing old PolyBoRi install..."
clean_polybori
echo "Done removing old PolyBoRi install."

echo "Installing PolyBoRi..."
install_polybori
echo "Done installing PolyBoRi."
