#! /bin/sh

#  This "bootstrap" script performs various pre-autoreconf actions
#  that are required after pulling fresh sources from the repository.
#
#  --force is supported and will be passed to autoreconf
#
#  NOTE:  THE NTP VERSION NUMBER COMES FROM packageinfo.sh
#
#  all other instances of it anywhere in the source base have propagated
#  from this one source.
#
#  To use the raw sources from the repository, you must have the following
#  tools available to you:
#
#  1.  Autoconf and Automake.
#
#  2.  lynx.  This is used to extract the COPYRIGHT file extracted from
#      the html documentation.
#
#  *** The following are no longer needed for simple builds from the repo
#  3.  AutoGen.  The repository does *not* contain the files generated from
#      the option definition files and it does not contain the libopts
#      tear-off/redistributable library.
#
#      Note: AutoGen needs GNU Guile.
#
#  4.  gunzip.  The tear-off library is a gzipped tarball.

set -e

scripts/genver || { echo scripts/genver failed ; exit 1; }

# autoreconf says:
# The environment variables AUTOCONF, AUTOHEADER, AUTOMAKE, ACLOCAL,
# AUTOPOINT, LIBTOOLIZE, M4 are honored.

AUTORECONF=${AUTORECONF:-autoreconf}

case `hostname` in
 pogo.udel.edu)
    if fgrep -q 4.2.4 version.m4; then
	AUTOCONF=autoconf-2.59
	AUTOHEADER=autoheader-2.59
	AUTOMAKE=automake-1.9
	ACLOCAL=aclocal-1.9
	export AUTOCONF AUTOHEADER AUTOMAKE ACLOCAL
    fi
    ;;
esac

# 20060629: HMS: Let's try checking in libopts and the autogen-generated files
## The copy for ntp...
#rm -rf libopts*
#gunzip -c $(autoopts-config --libsrc) | (
#  tar -xvf -
#  mv libopts-*.*.* libopts )

## The copy for sntp...
#rm -rf sntp/libopts*
#gunzip -c $(autoopts-config --libsrc) | (
#  cd sntp
#  tar -xvf -
#  mv libopts-*.*.* libopts )

def_files=`find [B-Za-z]* -type f -name '*.def' -print | fgrep -v /SCCS/`
prog_opt_files=`grep -l '^prog.name' $def_files`

## AutoGen stuff

#incdir=${PWD}/include

#for f in ${prog_opt_files}
#do
#  ( cd $(dirname ${f})
#    echo "Running autogen on $f..."
#    autogen -L${incdir} $(basename ${f})
#  ) || exit 1
#done

## Non-AutoGen stuff

for i in autogen-version.def version.def version.texi
do
    cmp -s include/$i sntp/$i || cp -fp include/$i sntp/$i
done

# touch the stuff generated by the opt files

for f in ${prog_opt_files}
do
    f=`echo $f | sed -e 's/-opts.def//'`
    l=
    lh=
    for i in `ls -1 $f*`
    do
	case "$i" in
	 *.c|*.h|*.1|*.texi|*.menu)
	    l="$l $i"
	    ;;
	 *.html)
	    lh="$lh $i"
	    ;;
	esac
    done
    case "$l:$lh" in
     ':') ;;
     *) touch $l $lh
	;;
    esac
done

## EOAutoGen stuff

# Yacc/bison files ntp_parser.[ch] so we don't require the tool if
# ntp_parser.y hasn't been updated.  At the same time, keyword-gen-utd
# and ntp_keyword.h which are derived from ntp_parser.h and
# keyword-gen.c.

touch ntpd/ntp_parser.[ch] ntpd/keyword-gen-utd ntpd/ntp_keyword.h

cp bincheck.mf sntp/
cp depsver.mf sntp/

${AUTORECONF} -i -v --no-recursive "$@"

# DH: 20101120: We are back to a single copy of libopts, and
# once again it seems we need to run autoreconf in sntp after
# the top-level run to get a correct sntp/libopts/Makefile.in.
# To reduce redundancy, the top-level autoreconf uses --no-recursive.
#
# HMS: 20060618: Now that we use separate copies of libopts
# we should only need the previous line.
#
## HMS: 20060615: the next line seems to be needed to make sure
## we get the correct srcdir path in sntp/libopts/Makefile.in
#rm -rf sntp/autom4te.cache
#
(cd sntp && ${AUTORECONF} -i -v "$@")
