X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=contrib%2Fgcc_update;h=b43068a1d0dfc9432fded6689d18c9269ec30a1b;hp=111a610e5ea234e9bbaf63e5057c5ad85b475aa9;hb=c7fe03c012a11c8b641a4e140914034e11538ca3;hpb=667c5522c03e794dba2bc50d6fc4803086e9f6f8 diff --git a/contrib/gcc_update b/contrib/gcc_update index 111a610e5ea..b43068a1d0d 100755 --- a/contrib/gcc_update +++ b/contrib/gcc_update @@ -1,17 +1,17 @@ #! /bin/sh # # Update a local CVS tree from the GCC repository, with an emphasis -# on treating generated files correctly, so that autoconf, bison et +# on treating generated files correctly, so that autoconf, gperf 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. -# +# are omitted. +# # If the first parameter reads --patch, the second parameter is considered # a patch file. -# +# # If the first parameter is --touch, no cvs operation will be performed, # only generated files that appear to be out of date in the local tree # will be touched. @@ -29,7 +29,7 @@ # contrib/gcc_update --list # # -# (C) 1998-2000 Free Software Foundation +# (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation # Originally by Gerald Pfeifer , August 1998. # # This script is Free Software, and it can be copied, distributed and @@ -37,11 +37,16 @@ # its license can be downloaded from http://www.gnu.org/copyleft/gpl.html +# CVS command +GCC_CVS=${GCC_CVS-${CVS-cvs}} # Default options used when updating via CVS. -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. +UPDATE_OPTIONS=-Pd +# Use -P to prune empty directories. +# Use -d to create any directories that exist in the repository but not +# locally. +# Use -A to reset any sticky tags, dates, or `-k' options. + +######## Anything below shouldn't be changed by regular users. # Arrange for the value of $0 to be available for functions self=$0 @@ -51,77 +56,82 @@ self=$0 # colon is stripped from the output. files_and_dependencies () { sed -e 's/ *#.*//' -e '/^$/d' -e 's/://' <<\EOF -# All automake dependencies within texinfo -# In fact, not all, since we do not care about sub-directories that -# we do not build. In particular, *.po and *.gmo are not touched. -texinfo/aclocal.m4: texinfo/configure.in texinfo/acinclude.m4 -texinfo/Makefile.in: texinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4 -texinfo/configure: texinfo/configure.in texinfo/aclocal.m4 -texinfo/stamp-h.in: texinfo/configure.in texinfo/aclocal.m4 texinfo/acconfig.h -texinfo/lib/Makefile.in: texinfo/lib/Makefile.am texinfo/configure.in texinfo/aclocal.m4 -texinfo/makeinfo/Makefile.in: texinfo/makeinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4 -texinfo/util/Makefile.in: texinfo/util/Makefile.am texinfo/configure.in texinfo/aclocal.m4 +# intl library +intl/plural.c: intl/plural.y +intl/configure: intl/configure.ac intl/aclocal.m4 +intl/config.h.in: intl/configure.ac intl/aclocal.m4 # Now, proceed to gcc automatically generated files -gcc/configure: gcc/configure.in -gcc/cstamp-h.in: gcc/configure.in gcc/acconfig.h +gcc/configure: gcc/configure.ac +gcc/cstamp-h.in: gcc/configure.ac gcc/config.in: gcc/cstamp-h.in -gcc/c-parse.y: gcc/c-parse.in -gcc/c-parse.c: gcc/c-parse.y -gcc/c-parse.h: gcc/c-parse.c -gcc/c-gperf.h: gcc/c-parse.gperf gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def -gcc/tradcif.c: gcc/tradcif.y # And then, language-specific files -gcc/cp/parse.c: gcc/cp/parse.y -gcc/cp/parse.h: gcc/cp/parse.c -gcc/objc/objc-parse.y: gcc/c-parse.in -gcc/objc/objc-parse.c: gcc/objc/objc-parse.y -gcc/java/parse.h: gcc/java/parse.y -gcc/java/parse.c: gcc/java/parse.y gcc/java/lex.c gcc/java/parse.h gcc/java/lex.h -gcc/java/parse-scan.c: gcc/java/parse-scan.y gcc/java/lex.c gcc/java/parse.h gcc/java/lex.h +gcc/cp/cfns.h: gcc/cp/cfns.gperf +gcc/java/keyword.h: gcc/java/keyword.gperf +# testsuite +# Without this, _Pragma3.c can have a false negative. +gcc/testsuite/gcc.dg/cpp/_Pragma3.c: gcc/testsuite/gcc.dg/cpp/mi1c.h # And libraries, at last -libchill/configure: libchill/configure.in -libf2c/configure: libf2c/configure.in -libf2c/libF77/configure: libf2c/libF77/configure.in -libf2c/libI77/configure: libf2c/libI77/configure.in -libf2c/libU77/configure: libf2c/libU77/configure.in -libf2c/libU77/stamp-h.in: libf2c/libU77/configure.in libf2c/libU77/acconfig.h -libobjc/configure: libobjc/configure.in +libbanshee/configure: libbanshee/configure.in +libmudflap/configure: libmudflap/configure.in +libobjc/configure: libobjc/configure.ac +zlib/aclocal.m4: zlib/configure.ac zlib/acinclude.m4 +zlib/Makefile.in: zlib/Makefile.am zlib/configure.ac zlib/aclocal.m4 +zlib/configure: zlib/configure.ac zlib/aclocal.m4 +fastjar/aclocal.m4: fastjar/configure.ac +fastjar/Makefile.in: fastjar/Makefile.am fastjar/configure.ac fastjar/aclocal.m4 +fastjar/configure: fastjar/configure.ac fastjar/aclocal.m4 +boehm-gc/aclocal.m4: boehm-gc/configure.in boehm-gc/acinclude.m4 +boehm-gc/Makefile.in: boehm-gc/Makefile.am boehm-gc/configure.in boehm-gc/aclocal.m4 +boehm-gc/configure: boehm-gc/configure.in boehm-gc/aclocal.m4 +libada/configure: libada/configure.ac +libffi/aclocal.m4: libffi/configure.ac libffi/acinclude.m4 +libffi/Makefile.in: libffi/Makefile.am libffi/configure.ac libffi/aclocal.m4 +libffi/configure: libffi/configure.ac libffi/aclocal.m4 +libffi/fficonfig.h.in: libffi/configure.ac libffi/aclocal.m4 +libjava/aclocal.m4: libjava/configure.in libjava/acinclude.m4 +libjava/Makefile.in: libjava/Makefile.am libjava/configure.in libjava/aclocal.m4 +libjava/configure: libjava/configure.in libjava/aclocal.m4 +libjava/libltdl/aclocal.m4: libjava/libltdl/configure.ac libjava/libltdl/acinclude.m4 +libjava/libltdl/Makefile.in: libjava/libltdl/Makefile.am libjava/libltdl/configure.ac libjava/libltdl/aclocal.m4 +libjava/libltdl/configure: libjava/libltdl/configure.ac libjava/libltdl/aclocal.m4 +libjava/libltdl/config-h.in: libjava/libltdl/configure.ac libjava/libltdl/aclocal.m4 +# Top level +Makefile.in: Makefile.tpl Makefile.def +configure: configure.in config/acx.m4 EOF } -# This function checks whether its first argument is newer than all -# the other arguments. It returns success (0) otherwise. -is_out_of_date () { - test `ls -1dt ${1+"$@"} | sed 1q` != "$1" -} - - # This function touches generated files such that the ``end'' user does # not have to rebuild them. touch_files () { - files_and_dependencies | while read f deps; do - if test -f $f && is_out_of_date "$f" $deps; then - echo Touching "$f"... - touch $f - if is_out_of_date "$f" $deps; then - # Hmm, it may have got the same timestamp as one of - # its touched dependencies. Wait a second and retry - sleep 1 - touch $f - fi - fi - done + rm -f Makefile.$$ + echo 'all: \' > Makefile.$$ + files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$ + echo '; @true' >> Makefile.$$ + files_and_dependencies | sed 's, ,: ,' >> Makefile.$$ + files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$ + echo ':' >> Makefile.$$ + echo ' @for f in $? $@; do test -f $$f || exit 0; done; \' >> Makefile.$$ + echo ' echo Touching $@...; \' >> Makefile.$$ + echo ' echo Touching $@... 1>&2; \' >> Makefile.$$ + echo ' touch $@' >> Makefile.$$ + files_and_dependencies | sed 's,[^ ]* ,,;s,$, :,' >> Makefile.$$ + while ${MAKE-make} -s -f Makefile.$$ all | grep . > /dev/null; do + sleep 1 + done 2>&1 + rm -f Makefile.$$ } + # Whenever we update the tree or install a patch, we may be modifying # this script. By re-execing it, we ensure that the appropriate # dependencies and rules will be used. touch_files_reexec () { echo "Adjusting file timestamps" exec ${CONFIG_SHELL-/bin/sh} $self --touch -} +} # This functions applies a patch to an existing tree. apply_patch () { @@ -147,7 +157,7 @@ fi case "$1" in # First of all, check whether we are going to process a patch. ---patch) +--patch) if test "$#" != 2; then echo "$1" expects only one argument >&2 exit 1 @@ -200,10 +210,15 @@ else fi echo "Updating CVS tree" -cvs -q update ${1+"$@"} -if [ $? -ne 0 ]; then +$GCC_CVS -q update ${1+"$@"} +if [ $? -ne 0 ]; then + (touch_files_reexec) echo "CVS update of full tree failed." >&2 exit 1 fi +{ + date + TZ=UTC date +} > LAST_UPDATED touch_files_reexec