#!/usr/bin/env bash

if [ -z "$SAGE_LOCAL" ]; then
    echo >&2 "Error: SAGE_LOCAL undefined - exiting..."
    echo >&2 "Maybe run 'sage -sh'?"
    exit 1
fi


if [ "$SAGE64" = yes ]; then
    echo "Building a 64-bit version of eclib."
    if [ -z "$CFLAG64" ]; then
        CFLAG64=-m64
    fi
    if [ -z "$CXXFLAG64" ]; then
        CXXFLAG64=$CFLAG64
    fi
    CFLAGS="$CFLAGS $CFLAG64"
    CXXFLAGS="$CXXFLAGS $CXXFLAG64"
    CPPFLAGS="$CPPFLAGS $CFLAG64"
    LDFLAGS="$LDFLAGS $CFLAG64" # or $CXXFLAG64
fi

if [ "$SAGE_DEBUG" = yes ]; then
    echo >&2 "Warning: Setting SAGE_DEBUG=yes completely disables optimization."
    CFLAGS="$CFLAGS -g -O0"
    CXXFLAGS="$CXXFLAGS -g -O0"
else
    # Add debug symbols by default, enable optimization, but let the user
    # still override these settings:
    CFLAGS="-g -O3 $CFLAGS"
    CXXFLAGS="-g -O3 $CXXFLAGS"
fi

export CFLAGS CPPFLAGS CXXFLAGS LDFLAGS


echo "Deleting old versions of eclib libraries, which"
echo "would interfere with new builds..."
# Delete any pre-autotools libraries:
rm -f "$SAGE_LOCAL"/lib/lib{curvesntl,g0nntl,jcntl,rankntl,mwrank}.*
# Delete autotools libraries:
rm -f "$SAGE_LOCAL"/lib/lib{e,j}c.*
if [ "$UNAME" = "CYGWIN" ]; then
    rm -f "$SAGE_LOCAL"/lib/cyg{e,j}c-*.dll
fi
echo "Deleting old include directory..."
rm -rf "$SAGE_LOCAL"/include/eclib/


cd src/
for patch in ../patches/*.patch; do
    [ -r "$patch" ] || continue  # Skip non-existing or non-readable patches
    patch -p1 <"$patch"
    if [ $? -ne 0 ]; then
        echo >&2 "Error applying '$patch'"
        exit 1
    fi
done

echo
echo "Now configuring eclib..."
./configure --prefix="$SAGE_LOCAL" \
            --with-ntl="$SAGE_LOCAL" \
            --with-pari="$SAGE_LOCAL" \
            --with-flint="$SAGE_LOCAL" \
            --with-boost="no" \
            --disable-allprogs
if [ $? -ne 0 ]; then
    echo >&2 "Error configuring eclib."
    exit 1
fi

echo
echo "Now building eclib..."
$MAKE
if [ $? -ne 0 ]; then
    echo >&2 "Error building eclib."
    exit 1
fi

echo
echo "Build succeeded.  Now installing eclib..."
$MAKE install
if [ $? -ne 0 ]; then
    echo >&2 "Error installing eclib."
    exit 1
fi
