#! /bin/sh
#
# Update a local CVS tree from the egcs repository, with an emphasis
# on treating generated files correctly, so that autoconf, bison et
# al are not required for the ``end'' user.
#
# By default all command-line options are passed to `cvs update` in
# addition to $UPDATE_OPTIONS (defined below). If the first parameter
# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself
# are omitted. 
# 
# Examples:
#
# contrib/egcs_update -r egcs_latest_snapshot
# contrib/egcs_update -A
# contrib/egcs_update --nostdflags -P -r egcs_1_1_branch gcc/testsuite
#
#
# (C) 1998 Free Software Foundation
# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998.
#
# This script is Free Software, and it can be copied, distributed and
# modified as defined in the GNU General Public License.  A copy of
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html


UPDATE_OPTIONS=-P
# Add -d to create any directories that exist in the repository but not
#        locally.
# Add -A to reset any sticky tags, dates, or `-k' options.


echo "Current directory is `pwd`."

# First of all, check whether this indeed looks like a local CVS of egcs.
if [ ! -d CVS ] || [ ! -f gcc/version.c ]; then
	echo "This does not seem to be an egcs CVS tree!"
	exit
fi

# Check command-line options

if [ x"${1}"x = x"--nostdflags"x ]; then
    shift
else
    set -- $UPDATE_OPTIONS ${1+"$@"}
fi


echo "Pass 1: Updating autoconf and bison generated files"
find . -name configure.in -o -name '*.y' | xargs cvs -q update

echo "Pass 2: Updating full tree"
cvs -q update ${1+"$@"}

echo "Pass 3: Fixing local tree"
touch `find . -name configure -print`
touch `find texinfo -name Makefile.in -print`
touch `find texinfo -name \*.pot -print`
touch `find texinfo -name \*.gmo -print`
for f in gcc/c-parse.y \
	 gcc/cstamp-h.in \
	 gcc/c-gperf.h \
	 gcc/c-parse.c \
	 gcc/c-parse.h \
	 gcc/cexp.c \
	 gcc/cp/parse.c \
	 gcc/cp/parse.h \
	 gcc/objc/objc-parse.c \
	 gcc/objc/objc-parse.y \
	 libf2c/libU77/stamp-h.in
do
	touch $f
done
