#! /bin/sh

set -e

echo "Bootstrap: Setting up patchutils build environment..."

# Check if we need to update gnulib files
update_gnulib=false
if [ "$1" = "--update-gnulib" ] || [ "$1" = "-u" ]; then
    update_gnulib=true
    echo "Updating gnulib modules..."
fi

echo "Cleaning autogenerated files..."

rm -f *.o *.so config.sub config.guess config.cache
rm -f config.log config.h config.status config.h.in
rm -f Makefile configure builtin/*.o pgcrypto.sql
rm -f Makefile.in aclocal.m4 confdefs.h ltconfig ltmain.sh
rm -f install-sh mkinstalldirs missing stamp*
rm -f interdiff filterdiff combinediff
rm -f compile depcomp
rm -f *~
rm -rf autom4te.cache/
rm -f INSTALL
rm -f test-driver

# Update gnulib if requested or if gnulib files seem missing/outdated
if [ "$update_gnulib" = true ] || [ ! -f "lib/Makefile.am" ] || [ ! -f "m4/gnulib-comp.m4" ]; then
    echo "Updating gnulib modules..."

    if command -v gnulib-tool >/dev/null 2>&1; then
        echo "Using gnulib-tool..."
        if gnulib-tool --update; then
            echo "Gnulib modules updated."
        else
            echo "Error: gnulib-tool failed. Please check your gnulib installation."
            exit 1
        fi
    else
        echo "Error: gnulib-tool not found. Please install gnulib package."
        exit 1
    fi
fi

echo "Running autoreconf..."
autoreconf --install --verbose

echo ""
echo "Bootstrap completed successfully!"
echo "Now you may run ./configure"
echo ""
echo "Tip: Use './bootstrap --update-gnulib' to update gnulib modules"
