source: branches/libc-0.6/src/gcc/contrib/gcc_update

Last change on this file was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 8.2 KB
Line 
1#! /bin/sh
2#
3# Update a local CVS tree from the GCC repository, with an emphasis
4# on treating generated files correctly, so that autoconf, gperf et
5# al are not required for the ``end'' user.
6#
7# By default all command-line options are passed to `cvs update` in
8# addition to $UPDATE_OPTIONS (defined below). If the first parameter
9# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself
10# are omitted.
11#
12# If the first parameter reads --patch, the second parameter is considered
13# a patch file.
14#
15# If the first parameter is --touch, no cvs operation will be performed,
16# only generated files that appear to be out of date in the local tree
17# will be touched.
18#
19# If the first parameter is --list, a list of the generated files and
20# their dependencies will be printed; --help prints this message.
21#
22# Examples:
23#
24# contrib/gcc_update -r gcc_latest_snapshot
25# contrib/gcc_update -A
26# contrib/gcc_update --nostdflags -P -r gcc-2_95-branch gcc/testsuite
27# contrib/gcc_update --patch some-patch
28# contrib/gcc_update --touch
29# contrib/gcc_update --list
30#
31#
32# (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation
33# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998.
34#
35# This script is Free Software, and it can be copied, distributed and
36# modified as defined in the GNU General Public License. A copy of
37# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
38
39
40# Default options used when updating via CVS.
41UPDATE_OPTIONS=-Pd
42# Use -P to prune empty directories.
43# Use -d to create any directories that exist in the repository but not
44# locally.
45# Use -A to reset any sticky tags, dates, or `-k' options.
46
47######## Anything below shouldn't be changed by regular users.
48
49# Arrange for the value of $0 to be available for functions
50self=$0
51
52# This function prints a list of all generated files, along with their
53# dependencies. Note that only one target is supported per line: the
54# colon is stripped from the output.
55files_and_dependencies () {
56 sed -e 's/ *#.*//' -e '/^$/d' -e 's/://' <<\EOF
57# All automake dependencies within texinfo
58# In fact, not all, since we do not care about sub-directories that
59# we do not build. In particular, *.po and *.gmo are not touched.
60texinfo/aclocal.m4: texinfo/configure.in texinfo/acinclude.m4
61texinfo/Makefile.in: texinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4
62texinfo/configure: texinfo/configure.in texinfo/aclocal.m4
63texinfo/stamp-h.in: texinfo/configure.in texinfo/aclocal.m4 texinfo/acconfig.h
64texinfo/lib/Makefile.in: texinfo/lib/Makefile.am texinfo/configure.in texinfo/aclocal.m4
65texinfo/makeinfo/Makefile.in: texinfo/makeinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4
66texinfo/util/Makefile.in: texinfo/util/Makefile.am texinfo/configure.in texinfo/aclocal.m4
67# Now, proceed to gcc automatically generated files
68gcc/configure: gcc/configure.in
69gcc/cstamp-h.in: gcc/configure.in gcc/acconfig.h
70gcc/config.in: gcc/cstamp-h.in
71gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def
72gcc/intl/plural.c: gcc/intl/plural.y
73# And then, language-specific files
74gcc/f/intdoc.texi: gcc/f/intdoc.in gcc/f/intdoc.c gcc/f/intrin.h gcc/f/intrin.def
75gcc/cp/cfns.h: gcc/cp/cfns.gperf
76gcc/java/keyword.h: gcc/java/keyword.gperf
77gcc/ada/treeprs.ads: gcc/ada/treeprs.adt gcc/ada/sinfo.ads gcc/ada/xtreeprs.adb
78gcc/ada/einfo.h: gcc/ada/einfo.ads gcc/ada/einfo.adb gcc/ada/xeinfo.adb
79gcc/ada/sinfo.h: gcc/ada/sinfo.ads gcc/ada/xsinfo.adb
80gcc/ada/nmake.adb: gcc/ada/sinfo.ads gcc/ada/nmake.adt gcc/ada/xnmake.adb
81gcc/ada/nmake.ads: gcc/ada/sinfo.ads gcc/ada/nmake.adt gcc/ada/xnmake.adb
82gcc/ada/gnat_ug_unx.texi: gcc/ada/gnat_ug.texi gcc/ada/xgnatug.adb gcc/ada/ug_words
83gcc/ada/gnat_ug_vms.texi: gcc/ada/gnat_ug.texi gcc/ada/xgnatug.adb gcc/ada/ug_words
84gcc/ada/gnat_ug_vxw.texi: gcc/ada/gnat_ug.texi gcc/ada/xgnatug.adb gcc/ada/ug_words
85gcc/ada/gnat_ug_wnt.texi: gcc/ada/gnat_ug.texi gcc/ada/xgnatug.adb gcc/ada/ug_words
86# testsuite
87# Without this, _Pragma3.c can have a false negative.
88gcc/testsuite/gcc.dg/cpp/_Pragma3.c: gcc/testsuite/gcc.dg/cpp/mi1c.h
89# And libraries, at last
90libf2c/configure: libf2c/configure.in
91libf2c/libF77/configure: libf2c/libF77/configure.in
92libf2c/libI77/configure: libf2c/libI77/configure.in
93libf2c/libI77/stamp-h.in: libf2c/libI77/configure.in
94libf2c/libI77/config.h.in: libf2c/libI77/configure.in libf2c/libI77/stamp-h.in
95libf2c/libU77/configure: libf2c/libU77/configure.in
96libf2c/libU77/stamp-h.in: libf2c/libU77/configure.in libf2c/libU77/acconfig.h
97libobjc/configure: libobjc/configure.in
98# fastjar
99fastjar/aclocal.m4: fastjar/configure.in
100fastjar/Makefile.in: fastjar/Makefile.am fastjar/configure.in fastjar/aclocal.m4
101fastjar/configure: fastjar/configure.in fastjar/aclocal.m4
102fastjar/stamp-h.in: fastjar/configure.in fastjar/aclocal.m4
103boehm-gc/aclocal.m4: boehm-gc/configure.in boehm-gc/acinclude.m4
104boehm-gc/Makefile.in: boehm-gc/Makefile.am boehm-gc/configure.in boehm-gc/aclocal.m4
105boehm-gc/configure: boehm-gc/configure.in boehm-gc/aclocal.m4
106libjava/aclocal.m4: libjava/configure.in libjava/acinclude.m4
107libjava/Makefile.in: libjava/Makefile.am libjava/configure.in libjava/aclocal.m4
108libjava/configure: libjava/configure.in libjava/aclocal.m4
109libjava/libltdl/aclocal.m4: libjava/libltdl/configure.in libjava/libltdl/acinclude.m4
110libjava/libltdl/Makefile.in: libjava/libltdl/Makefile.am libjava/libltdl/configure.in libjava/libltdl/aclocal.m4
111libjava/libltdl/configure: libjava/libltdl/configure.in libjava/libltdl/aclocal.m4
112libjava/libltdl/stamp-h.in: libjava/libltdl/configure.in libjava/libltdl/aclocal.m4 libjava/libltdl/acconfig.h
113# Top level
114Makefile.in: Makefile.tpl Makefile.def
115EOF
116}
117
118
119# This function touches generated files such that the ``end'' user does
120# not have to rebuild them.
121touch_files () {
122 rm -f Makefile.$$
123 echo 'all: \' > Makefile.$$
124 files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$
125 echo '; @true' >> Makefile.$$
126 files_and_dependencies | sed 's, ,: ,' >> Makefile.$$
127 files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$
128 echo ':' >> Makefile.$$
129 echo ' @for f in $? $@; do test -f $$f || exit 0; done; \' >> Makefile.$$
130 echo ' echo Touching $@...; \' >> Makefile.$$
131 echo ' echo Touching $@... 1>&2; \' >> Makefile.$$
132 echo ' touch $@' >> Makefile.$$
133 files_and_dependencies | sed 's,[^ ]* ,,;s,$, :,' >> Makefile.$$
134 while ${MAKE-make} -s -f Makefile.$$ all | grep . > /dev/null; do
135 sleep 1
136 done 2>&1
137 rm -f Makefile.$$
138}
139
140
141# Whenever we update the tree or install a patch, we may be modifying
142# this script. By re-execing it, we ensure that the appropriate
143# dependencies and rules will be used.
144touch_files_reexec () {
145 echo "Adjusting file timestamps"
146 exec ${CONFIG_SHELL-/bin/sh} $self --touch
147}
148
149# This functions applies a patch to an existing tree.
150apply_patch () {
151 if [ -f $1 ]; then
152 echo "Applying patch file $1"
153 case "$1" in
154 *gz)
155 gzip -d -c $1 | patch -p1 ;;
156 *bz2)
157 bzip2 -d -c $1 | patch -p1 ;;
158 *)
159 cat $1 | patch -p1 ;;
160 esac
161 fi
162 touch_files_reexec
163}
164
165# Check whether this indeed looks like a local tree.
166if [ ! -f gcc/version.c ]; then
167 echo "This does not seem to be a GCC tree!"
168 exit
169fi
170
171case "$1" in
172# First of all, check whether we are going to process a patch.
173--patch)
174 if test "$#" != 2; then
175 echo "$1" expects only one argument >&2
176 exit 1
177 fi
178 apply_patch "${2}"
179 exit $?
180 ;;
181
182--touch)
183 if test "$#" != 1; then
184 echo "$1" does not expect any argument >&2
185 exit 1
186 fi
187 touch_files
188 exit $?
189 ;;
190
191--list)
192 if test "$#" != 1; then
193 echo "$1" does not expect any argument >&2
194 exit 1
195 fi
196 files_and_dependencies | sed 's/ /: /'
197 exit $?
198 ;;
199
200--help)
201 sed -e '1,2d' -e '/^UPDATE_OPTIONS=/{i\
202\
203
204p
205}' \
206 -e '/^$/,$d' -e 's/#//' -e 's/^ //' < $0
207 exit $?
208 ;;
209
210esac
211
212# Check whether this indeed looks like a local CVS tree.
213if [ ! -d CVS ]; then
214 echo "This does not seem to be a GCC CVS tree!"
215 exit
216fi
217
218# Check command-line options
219if [ x"${1}"x = x"--nostdflags"x ]; then
220 shift
221else
222 set -- $UPDATE_OPTIONS ${1+"$@"}
223fi
224
225echo "Updating CVS tree"
226cvs -q update ${1+"$@"}
227if [ $? -ne 0 ]; then
228 (touch_files_reexec)
229 echo "CVS update of full tree failed." >&2
230 exit 1
231fi
232
233{
234 date
235 TZ=UTC date
236} > LAST_UPDATED
237touch_files_reexec
Note: See TracBrowser for help on using the repository browser.