#! /bin/sh

# Time-stamp:        "2008-12-20 10:31:57 bkorb"
# Last Committed:    $Date: 2008/12/20 18:35:28 $
#
##
##  This file is part of AutoGen.
##
##  AutoGen copyright 1992-2007 Bruce Korb - all rights reserved
##
##  AutoGen is free software: you can redistribute it and/or modify it
##  under the terms of the GNU General Public License as published by the
##  Free Software Foundation, either version 3 of the License, or
##  (at your option) any later version.
##
##  AutoGen is distributed in the hope that it will be useful, but
##  WITHOUT ANY WARRANTY; without even the implied warranty of
##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
##  See the GNU General Public License for more details.
##
##  You should have received a copy of the GNU General Public License along
##  with this program.  If not, see <http://www.gnu.org/licenses/>.

d=`dirname $0`
d=`cd $d ; pwd`
prog=${d}/`basename $0`

test -z "${CC}"     && CC="@CC@"
test -z "${CC}"     && `which cc`
test -z "${CFLAGS}" && CFLAGS="@CFLAGS@"
test -z "${LIBS}"   && LIBS="@LIBS@"
test -z "${MAKE}"   && MAKE=`which make`

INCLUDES="@DEFS@ "$(

    for d in . @srcdir@ @top_builddir@ @top_srcdir@ \
             @top_builddir@/autoopts @top_srcdir@/autoopts
    do
        (\cd ${d} ; pwd)
    done | \
    sort -u | \
    sed s/^/-I/ )

# Give preference to configured SHELL
#
d=${SHELL}
SHELL=@SHELL@
test -z "${SHELL}"  && SHELL=$d

export CC CFLAGS LIBS MAKE SHELL INCLUDES

# Now auto-export variables:
#
set -a

top_builddir=`cd @top_builddir@ ; pwd`
top_srcdir=`cd @top_srcdir@ ; pwd`
srcdir=`cd @srcdir@ ; pwd`
PATH=${top_builddir}/columns:${PATH}
timer=`expr @AG_TIMEOUT@ '*' 5`

eval `egrep '^AG_[A-Z_]*' ${top_srcdir}/VERSION`

AGsrc=${top_srcdir}/agen5
AGexe=@AGexe@
GDexe=@GDexe@
CLexe=@CLexe@

LIBS=${LIBS}\ `find ${top_builddir}/autoopts -name libopts.a -print`
OPTIONS_DEF=${AGsrc}/opts.def
DIRECTIVESRC=${AGsrc}/defDirect.c
GETDEF_SRC=$(
  echo ${AGsrc}/func*.c ${AGsrc}/exp*.c ${AGsrc}/schemedef.scm ${DIRECTIVESRC} )

ADDON_MENU=$(
  for f in columns getdefs xml2ag
  do
    echo ${top_builddir}/${f}/${f}.menu
  done)\ ${top_srcdir}/doc/snprintfv.menu

ADDON_TEXI=$(
  for f in columns getdefs xml2ag
  do
    echo ${top_builddir}/${f}/${f}.texi
  done)\ ${top_srcdir}/doc/snprintfv.texi

DOC_INCLUDES=$(
  echo ${AGsrc}/defParse-fsm.c ${AGsrc}/opts.h
  echo ${top_builddir}/agen5/autogen.menu ${top_builddir}/agen5/autogen.texi
  echo ${top_builddir}/autoopts/libopts.texi )

DOC_TEMPLATE=${srcdir}/auto_gen.tpl

DOC_DEPENDS=$(
  echo ${DOC_TEMPLATE} ${OPTIONS_DEF} ${ADDON_MENU} ${ADDON_TEXI}
  echo ${DOC_INCLUDES} ${GETDEF_SRC} )

set +a

#  Validate everything:
#
bail_out() {
   set -x

   exec 2>&8
   cat texi$$.log
   echo >&2
   echo "$*" >&2
   exit 1
}

exec 8>&2 2> texi$$.log
tmp_files=texi$$.log
printf '\n\n\n\n' >&2

set -x

# Make sure the executables are there
#
test -x ${AGexe} || (cd `dirname ${AGexe}` ; ${MAKE}) || exit 0
test -x ${GDexe} || (cd `dirname ${GDexe}` ; ${MAKE}) || exit 0
test -x ${CLexe} || (cd `dirname ${CLexe}` ; ${MAKE}) || exit 0

# See to it that the .texi files have been generated, too.
#
for f in ${ADDON_TEXI} ${top_builddir}/agen5/autogen.texi \
         ${top_builddir}/autoopts/libopts.texi
do
  test -f ${f} || (
    cd `dirname ${f}`
    ${MAKE} `basename ${f}` >&2
  ) || bail_out MAKE of ${f} failed.
done

# We have our executables and texi's.  Collect the definitions:
#
exec 3> getdefs$$.cfg
tmp_files="${tmp_files} getdefs$$.cfg"
cat >&3 <<-  EOCat
	output      autogen.def
	copy        ${OPTIONS_DEF}
	srcfile
	linenum
	template    auto_gen.tpl
	EOCat

tmp_files="${tmp_files} autogen.def"
for f in ${GETDEF_SRC}
do
  echo "input      " ${f}
done >&3
exec 3>&-
echo + ${GDexe} load-opt=getdefs$$.cfg >&8
${GDexe} load-opt=getdefs$$.cfg || bail_out cannot run ${GDexe}

# Make sure we have all our sources and generate the doc
#
for f in ${DOC_DEPENDS}
do test -f ${f} || bail_out cannot find doc file: ${f}
done
opts=`echo -t${timer} -L${srcdir} -L${top_srcdir} -L${top_srcdir}/autoopts`
echo + ${AGexe} ${opts} autogen.def >&8

${AGexe} ${opts} autogen.def || bail_out could not regenerate doc

set +x
exec 2>&8

# dump the temporary files
#
rm -f ${tmp_files}

exit 0

## Local Variables:
## mode: shell-script
## indent-tabs-mode: nil
## sh-indentation: 2
## sh-basic-offset: 2
## End:
