#!/bin/sh
#
# Run this before configure
#
# This file blatantly ripped off from subversion.
#
# Note: this dependency on Perl is fine: only developers use autogen.sh
#       and we can state that dev people need Perl on their machine
#
# TODO: make sure that ac_pkg_swig.m4 gets installed in m4 directory ...

rm -f autogen.err

automake --version | perl -ne 'if (/\(GNU automake\) (([0-9]+).([0-9]+))/) {print; if ($2 < 1 || ($2 == 1 && $3 < 4)) {exit 1;}}'

if [ $? -ne 0 ]; then
    echo "Error: you need automake 1.4 or later.  Please upgrade."
    exit 1
fi

if test ! -d `aclocal --print-ac-dir 2>> autogen.err`; then
  echo "Bad aclocal (automake) installation"
  exit 1
fi

# Produce aclocal.m4, so autoconf gets the automake macros it needs
#
case `uname` in
    CYGWIN*)
        include_dir='-I m4' # Needed for Cygwin only.
        ;;
    Darwin)
        [ "$LIBTOOLIZE" = "" ] && LIBTOOLIZE=glibtoolize
        ;;
esac

    ${LIBTOOLIZE:=libtoolize} --force --copy || {
    echo "error: libtoolize failed"
    exit 1
}

echo "Creating aclocal.m4: aclocal $include_dir $ACLOCAL_FLAGS"

aclocal $include_dir $ACLOCAL_FLAGS 2>> autogen.err

# Produce all the `GNUmakefile.in's and create neat missing things
# like `install-sh', etc.
#
echo "automake --add-missing --copy --foreign"

automake --add-missing --copy --foreign 2>> autogen.err || {
    echo ""
    echo "* * * warning: possible errors while running automake - check autogen.err"
    echo ""
}

# If there's a config.cache file, we may need to delete it.
# If we have an existing configure script, save a copy for comparison.
if [ -f config.cache ] && [ -f configure ]; then
  cp configure configure.$$.tmp
fi

# Produce ./configure
#
echo "Creating configure..."

autoconf 2>> autogen.err || {
    echo ""
    echo "* * * warning: possible errors while running automake - check autogen.err"
    echo ""
    grep 'Undefined AX_ macro' autogen.err && exit 1
}

run_configure=true
for arg in $*; do
    case $arg in
        --no-configure)
            run_configure=false
            ;;
        *)
            ;;
    esac
done

if $run_configure; then
    mkdir -p build
    cd build
    ../configure --enable-maintainer-mode "$@"
    status=$?
    if [ $status -eq 0 ]; then
      echo
      echo "Now type 'make' to compile link-grammar (in the 'build' directory)."
    else
      echo
      echo "\"configure\" returned a bad status ($status)."
    fi
else
    echo
    echo "Now run 'configure' and 'make' to compile link-grammar."
fi
