This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

One version number, &c, take two


This is a revised version of my patch to consolidate version number
handling further, streamline the release process a little, and avoid
re-running configure when the datestamp changes.  The patch adds three
files in the toplevel config/ directory.  GCC-BASE-VER contains the
base version number of the compiler.  DATESTAMP contains the tree
datestamp in the usual YYYYMMDD format; it is empty in a release
tarball.  GCC-DEV-PHASE contains the word "experimental" on
development branches, "prerelease" on release branches, and is empty
in releases.  All three files are syntax-free.

Everything in the gcc directory that used to look at version.c or
doc/include/gcc-common.texi for the version number, now gets what it
needs from one of these files.  There is still a copy of the datestamp
in libstdc++-v3/include/bits/c++config.

The revision addresses many of the errors and omissions in my previous
patch (http://gcc.gnu.org/ml/gcc-patches/2005-03/msg00195.html):

 - glibcbug.in has been restored, but still does not depend on
   autoconf substituting the GCC version number.

 - configure.ac now looks at config/GCC-DEV-PHASE to determine whether
   is_release should be true.  It is therefore no longer necessary to
   modify configure.ac and regenerate configure when making a release branch.

 - gcc_release has been updated for the new scheme, but should still
   work with the old.  Note that it does not do anything that it
   didn't do before; in particular, it is still required to bump the
   version number by hand (which now involves editing three files).

 - All documentation that I am aware of has been updated.
   branching.html no longer documents the old procedure, on the theory
   that no one will ever need to do it that way again; releasing.html
   does still document the old procedure and indicate which branches
   get which treatment.

 - "make info" and "make dvi" have both been verified to work.

I am soliciting the following:

 - A careful eye on all of these changes, particularly the changes to
   the maintainer scripts, which cannot be tested in advance.

 - From the libstdc++ folks: Advice on how to eliminate the copy of
   the date stamp in c++config (note that config/DATESTAMP presently
   is empty in a release tarball, although that could be changed ...
   come to think, that would reduce the number of steps in the release
   process, too).

 - Information about any places I have neglected to update.

zw

config:
        * DATESTAMP, GCC-BASE-VER, GCC-DEV-PHASE: New files.
        * gcc-version.m4: Delete.
fastjar:
        * Makefile.am (gcc-vers.texi): New rule.
        (fastjar_TEXINFOS): Add gcc-vers.texi.
        * Makefile.in: Regenerate (by hand).
gcc:
        * aclocal.m4: Don't include gcc-version.m4.
        * configure.ac (is_release): Determine based on contents of
        config/GCC-DEV-PHASE.
        (gcc_version): Determine based on contents of config/GCC-BASE-VER.
        (TL_AC_GCC_VERSION): Delete.
        (libstdcxx_incdir): Defer expansion of $(version) to Makefile.
        (PACKAGE, VERSION): Delete all references.
        (WIN32_REGISTRY_KEY): Only define if user overrode default.
        * config.in, configure: Regenerate.
        * Makefile.in (gcc_version, gcc_version_trigger, PACKAGE): Delete.
        (BASEVER, DATESTAMP, DEVPHASE, BASEVER_c, DATESTAMP_c, DEVPHASE_c)
        (BASEVER_s, DATESTAMP_s, DEVPHASE_s): New variables.
        (version): Base on $(BASEVER_c).
        (Makefile): Don't depend on version.c.
        (build/gcov-iov.o): Likewise.
        (version.o): Depend on version files. Add custom build rule.
        (prefix.o): Similarly.
        (s-iov): Similarly.
        (gcc-vers.texi): New rule.
        (TEXI_CPP_FILES, TEXI_GCC_FILES, TEXI_GCCINT_FILES)
        (TEXI_CPPINT_FILES): Add gcc-vers.texi.
        (doc/%.info, doc/%.dvi, doc/gccinstall.dvi): Add -I. to command.
        (all uses of $(PACKAGE)): Replace with "gcc".
        * gccbug.in: Determine release number at runtime.
        * gcov-iov.c: Take base version and development phase on the
        command line instead of including version.c.
        * intl.c: Replace all uses of PACKAGE with "gcc".
        * libada-mk.in (gcc_version): Delete. unused.
        * prefix.c: If WIN32_REGISTRY_KEY is not defined, use BASEVER.
        * version.c (VERSUFFIX): New #define, hook for redistributors.  
        Change commentary to match.
        (version_string): Assemble from pieces.
        * config/alpha/x-vms, config/i386/t-nwld: Do not use $(gcc_version).
        * doc/include/gcc-common.texi: Include gcc-vers.texi for
        version-GCC and DEVELOPMENT.

gcc/ada:
        * Make-lang.in (doc/gnat_ugn_unw.info, doc/gnat_rm.info)
        (doc/gnat_ugn_unw.dvi, doc/gnat_rm.dvi): Add gcc-vers.texi to
        dependencies.
gcc/fortran:
        * Make-lang.in (GFORTRAN_TEXI): Add gcc-vers.texi.
gcc/java:
        * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi.
gcc/treelang:
        * Make-lang.in (TEXI_TREELANG_FILES): Add gcc-vers.texi.
maintainer-scripts:
        * README: Update to match.
        * gcc_release: If config/DATESTAMP exists, update it and
        config/GCC-DEV-PHASE rather than gcc/version.c.
        * update_version: Add support for updating config/DATESTAMP.
        * update_web_docs: Generate gcc-vers.texi.

wwwdocs/htdocs:
        * branching.html, releasing.html: Revise for new versioning scheme.

===================================================================
Index: config/DATESTAMP
--- config/DATESTAMP	1 Jan 1970 00:00:00 -0000
+++ config/DATESTAMP	9 Mar 2005 07:16:40 -0000
@@ -0,0 +1 @@
+20050302
===================================================================
Index: config/GCC-BASE-VER
--- config/GCC-BASE-VER	1 Jan 1970 00:00:00 -0000
+++ config/GCC-BASE-VER	9 Mar 2005 07:16:40 -0000
@@ -0,0 +1 @@
+4.1.0
===================================================================
Index: config/GCC-DEV-PHASE
--- config/GCC-DEV-PHASE	1 Jan 1970 00:00:00 -0000
+++ config/GCC-DEV-PHASE	9 Mar 2005 07:16:40 -0000
@@ -0,0 +1 @@
+experimental
===================================================================
Index: config/gcc-version.m4
--- config/gcc-version.m4	2 Dec 2004 11:03:18 -0000	1.1
+++ config/gcc-version.m4	1 Jan 1970 00:00:00 -0000
@@ -1,28 +0,0 @@
-dnl Usage: TL_AC_GCC_VERSION(TOPSRCDIR)
-dnl
-dnl Set up the variables:
-dnl
-dnl     gcc_version_trigger: pathname of gcc's version.c, if available
-dnl     gcc_version_full: full gcc version string
-dnl     gcc_version: the first "word" in $gcc_version_full
-dnl
-dnl TOPSRCDIR is the top-level source directory.
-AC_DEFUN([TL_AC_GCC_VERSION],
-[
-changequote(,)dnl
-if test "${with_gcc_version_trigger+set}" = set; then
-  gcc_version_trigger=$with_gcc_version_trigger
-else
-  gcc_version_trigger=$1/gcc/version.c
-fi
-if test -f "${gcc_version_trigger}"; then
-  gcc_version_full=`grep version_string "${gcc_version_trigger}" | sed -e 's/.*"\([^"]*\)".*/\1/'`
-else
-  gcc_version_full=`$CC -v 2>&1 | sed -n 's/^gcc version //p'`
-fi
-gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
-changequote([,])dnl
-AC_SUBST(gcc_version_trigger)
-AC_SUBST(gcc_version_full)
-AC_SUBST(gcc_version)
-])dnl
===================================================================
Index: fastjar/Makefile.am
--- fastjar/Makefile.am	15 Nov 2004 23:50:05 -0000	1.22
+++ fastjar/Makefile.am	9 Mar 2005 07:16:40 -0000
@@ -63,7 +63,8 @@ TEXINFO_TEX = ../gcc/doc/include/texinfo
 info_TEXINFOS = fastjar.texi
 fastjar_TEXINFOS = \
 	../gcc/doc/include/gcc-common.texi \
-	../gcc/doc/include/gpl.texi
+	../gcc/doc/include/gpl.texi \
+	gcc-vers.texi
 man_MANS = fastjar.1 grepjar.1
 EXTRA_DIST = $(man_MANS)
 
@@ -83,6 +84,17 @@ fastjar.pod: $(srcdir)/fastjar.texi
 grepjar.pod: $(srcdir)/fastjar.texi
 	-$(TEXI2POD) -D grepjar $< > $@
 
+# gcc-vers.texi is generated from the version files.
+BASEVER = $(srcdir)/../config/GCC-BASE-VER
+DEVPHASE = $(srcdir)/../config/GCC-DEV-PHASE
+gcc-vers.texi: $(BASEVER) $(DEVPHASE)
+	(echo "@set version-GCC $(shell cat $(BASEVER))"; \
+	 if [ "$(shell cat $(DEVPHASE))" = "experimental" ]; \
+	 then echo "@set DEVELOPMENT"; \
+	 else echo "@clear DEVELOPMENT"; \
+	 fi) > $@T
+	mv -f $@T $@
+
 # GCC LOCAL CHANGE
 # The following commands allow us to release tarballs with the man pages
 # and info documentation prebuilt.  This feature is enabled via 
===================================================================
Index: fastjar/Makefile.in
--- fastjar/Makefile.in	2 Dec 2004 11:03:20 -0000	1.30
+++ fastjar/Makefile.in	9 Mar 2005 07:16:40 -0000
@@ -253,12 +253,14 @@ TEXINFO_TEX = ../gcc/doc/include/texinfo
 info_TEXINFOS = fastjar.texi
 fastjar_TEXINFOS = \
 	../gcc/doc/include/gcc-common.texi \
-	../gcc/doc/include/gpl.texi
-
+	../gcc/doc/include/gpl.texi \
+	gcc-vers.texi
 man_MANS = fastjar.1 grepjar.1
 EXTRA_DIST = $(man_MANS)
 TEXI2POD = perl $(srcdir)/../contrib/texi2pod.pl
 POD2MAN = pod2man --center="GNU" --release="gcc-@gcc_version@"
+BASEVER = $(srcdir)/../config/GCC-BASE-VER
+DEVPHASE = $(srcdir)/../config/GCC-DEV-PHASE
 @GENINSRC_FALSE@STAMP_GENINSRC = 
 
 # GCC LOCAL CHANGE
@@ -924,6 +926,15 @@ fastjar.pod: $(srcdir)/fastjar.texi
 grepjar.pod: $(srcdir)/fastjar.texi
 	-$(TEXI2POD) -D grepjar $< > $@
 
+# gcc-vers.texi is generated from the version files.
+gcc-vers.texi: $(BASEVER) $(DEVPHASE)
+	(echo "@set version-GCC $(shell cat $(BASEVER))"; \
+	 if [ "$(shell cat $(DEVPHASE))" = "experimental" ]; \
+	 then echo "@set DEVELOPMENT"; \
+	 else echo "@clear DEVELOPMENT"; \
+	 fi) > $@T
+	mv -f $@T $@
+
 all-local: $(STAMP_GENINSRC) 
 
 stamp-geninsrc: fastjar.1 grepjar.1 fastjar.info
===================================================================
Index: gcc/Makefile.in
--- gcc/Makefile.in	4 Mar 2005 21:35:49 -0000	1.1451
+++ gcc/Makefile.in	9 Mar 2005 07:16:40 -0000
@@ -426,10 +426,6 @@ OBJC_BOEHM_GC=@objc_boehm_gc@
 GTHREAD_FLAGS=@gthread_flags@
 extra_modes_file=@extra_modes_file@
 host_hook_obj=@out_host_hook_obj@
-# Be prepared for gcc2 merges.
-gcc_version=@gcc_version@
-gcc_version_trigger=@gcc_version_trigger@
-version=$(gcc_version)
 
 # ------------------------
 # Installation directories
@@ -687,6 +683,27 @@ TM_P_H    = tm_p.h    $(tm_p_file_list)
 GTM_H     = tm.h      $(tm_file_list)
 TM_H      = $(GTM_H) insn-constants.h insn-flags.h
 
+# Variables for version information.
+BASEVER   = $(srcdir)/../config/GCC-BASE-VER  # 4.x.y
+DATESTAMP = $(srcdir)/../config/DATESTAMP     # YYYYMMDD or empty
+DEVPHASE  = $(srcdir)/../config/GCC-DEV-PHASE # experimental, prerelease, ""
+
+BASEVER_c   = $(shell cat $(BASEVER))
+DATESTAMP_c = $(shell cat $(DATESTAMP))
+DEVPHASE_c  = $(shell cat $(DEVPHASE))
+
+version     = $(BASEVER_c)
+
+# For use in version.c - double quoted strings, with a leading space
+# on the datestamp if it is nonempty, and a leading space and
+# parentheses around the development phase if it is nonempty.  The
+# space immediately after the comma in the $(if ...) constructs is
+# significant - do not remove it.
+BASEVER_s   = "\"$(BASEVER_c)\""
+DATESTAMP_s = "\"$(if $(DATESTAMP_c), $(DATESTAMP_c))\""
+DEVPHASE_s  = "\"$(if $(DEVPHASE_c), ($(DEVPHASE_c)))\""
+
+# Shorthand variables for dependency lists.
 TARGET_H = $(TM_H) target.h insn-modes.h
 MACHMODE_H = machmode.h mode-classes.def insn-modes.h
 HOOKS_H = hooks.h $(MACHMODE_H)
@@ -1038,7 +1055,7 @@ endif
 # Rebuilding this configuration
 # -----------------------------
 
-Makefile: config.status $(srcdir)/Makefile.in $(srcdir)/version.c $(LANG_MAKEFRAGS)
+Makefile: config.status $(srcdir)/Makefile.in $(LANG_MAKEFRAGS)
 	LANGUAGES="$(CONFIG_LANGUAGES)" \
 	CONFIG_HEADERS= \
 	CONFIG_SHELL="$(SHELL)" \
@@ -1115,7 +1132,7 @@ cstamp-h: config.in config.status
 # Really, really stupid make features, such as SUN's KEEP_STATE, may force
 # a target to build even if it is up-to-date.  So we must verify that
 # config.status does not exist before failing.
-config.status: $(srcdir)/configure $(srcdir)/config.gcc version.c
+config.status: $(srcdir)/configure $(srcdir)/config.gcc
 	@if [ ! -f config.status ] ; then \
 	  echo You must configure gcc.  Look at http://gcc.gnu.org/install/ for details.; \
 	  false; \
@@ -1547,7 +1564,12 @@ options.o: options.c options.h opts.h in
 
 dumpvers: dumpvers.c
 
-version.o: version.c version.h
+# The space between the comma and the $(shell cat $(DATESTAMP)) below
+# is significant.  Do not reformat that line.
+version.o: version.c version.h $(DATESTAMP) $(BASEVER) $(DEVPHASE)
+	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+	-DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \
+	-DDEVPHASE=$(DEVPHASE_s) -c $(srcdir)/version.c $(OUTPUT_OPTION)
 
 gtype-desc.o: gtype-desc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
 	varray.h $(HASHTAB_H) $(SPLAY_TREE_H) bitmap.h $(TREE_H) $(RTL_H) \
@@ -1569,9 +1591,10 @@ ggc-none.o: ggc-none.c $(CONFIG_H) $(SYS
 stringpool.o: stringpool.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
 	$(TREE_H) $(GGC_H) gt-stringpool.h
 
-prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) Makefile prefix.h
+prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) prefix.h \
+	Makefile $(BASEVER)
 	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-	-DPREFIX=\"$(prefix)\" \
+	-DPREFIX=\"$(prefix)\" -DBASEVER=$(BASEVER_s) \
 	  -c $(srcdir)/prefix.c $(OUTPUT_OPTION)
 
 convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(FLAGS_H) \
@@ -2759,15 +2782,16 @@ test-protoize-simple: ./protoize ./unpro
 	-rm -f tmp-proto.[cs] tmp-proto$(objext)
 
 # gcov-iov.c is run on the build machine to generate gcov-iov.h from version.c
-build/gcov-iov.o: gcov-iov.c version.c $(BCONFIG_H) coretypes.h $(GTM_H) \
+build/gcov-iov.o: gcov-iov.c $(BCONFIG_H) coretypes.h $(GTM_H) \
   $(SYSTEM_H) coretypes.h $(TM_H)
  
 build/gcov-iov$(build_exeext): build/gcov-iov.o
 	$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) build/gcov-iov.o -o $@
 
 gcov-iov.h: s-iov
-s-iov: build/gcov-iov$(build_exeext)
-	build/gcov-iov$(build_exeext) > tmp-gcov-iov.h
+s-iov: build/gcov-iov$(build_exeext) $(BASEVER) $(DEVPHASE)
+	build/gcov-iov$(build_exeext) '$(BASEVER_c)' '$(DEVPHASE_c)' \
+	    > tmp-gcov-iov.h
 	$(SHELL) $(srcdir)/../move-if-change tmp-gcov-iov.h gcov-iov.h
 	$(STAMP) s-iov
 
@@ -2964,24 +2988,37 @@ info: $(INFOFILES) lang.info @GENINSRC@ 
 srcinfo: $(INFOFILES)
 	-cp -p $^ $(srcdir)/doc
 
-TEXI_CPP_FILES = cpp.texi fdl.texi cppenv.texi cppopts.texi
+TEXI_CPP_FILES = cpp.texi fdl.texi cppenv.texi cppopts.texi		\
+	 gcc-common.texi gcc-vers.texi
 
-TEXI_GCC_FILES = gcc.texi gcc-common.texi frontends.texi standards.texi \
-	 invoke.texi extend.texi md.texi objc.texi gcov.texi trouble.texi \
-	 bugreport.texi service.texi contribute.texi compat.texi funding.texi \
-	 gnu.texi gpl.texi fdl.texi contrib.texi cppenv.texi cppopts.texi \
+TEXI_GCC_FILES = gcc.texi gcc-common.texi gcc-vers.texi frontends.texi	\
+	 standards.texi invoke.texi extend.texi md.texi objc.texi	\
+	 gcov.texi trouble.texi bugreport.texi service.texi		\
+	 contribute.texi compat.texi funding.texi gnu.texi gpl.texi	\
+	 fdl.texi contrib.texi cppenv.texi cppopts.texi			\
 	 implement-c.texi
 
-TEXI_GCCINT_FILES = gccint.texi gcc-common.texi contribute.texi makefile.texi \
-	 configterms.texi portability.texi interface.texi passes.texi \
-	 c-tree.texi rtl.texi md.texi tm.texi hostconfig.texi fragments.texi \
-	 configfiles.texi collect2.texi headerdirs.texi funding.texi gnu.texi \
-	 gpl.texi fdl.texi contrib.texi languages.texi sourcebuild.texi \
-	 gty.texi libgcc.texi cfg.texi tree-ssa.texi
+TEXI_GCCINT_FILES = gccint.texi gcc-common.texi gcc-vers.texi		\
+	 contribute.texi makefile.texi configterms.texi			\
+	 portability.texi interface.texi passes.texi c-tree.texi	\
+	 rtl.texi md.texi tm.texi hostconfig.texi fragments.texi	\
+	 configfiles.texi collect2.texi headerdirs.texi funding.texi	\
+	 gnu.texi gpl.texi fdl.texi contrib.texi languages.texi		\
+	 sourcebuild.texi gty.texi libgcc.texi cfg.texi tree-ssa.texi
 
 TEXI_GCCINSTALL_FILES = install.texi install-old.texi fdl.texi
 
-TEXI_CPPINT_FILES = cppinternals.texi
+TEXI_CPPINT_FILES = cppinternals.texi gcc-common.texi gcc-vers.texi
+
+# gcc-vers.texi is generated from the version files.
+gcc-vers.texi: $(BASEVER) $(DEVPHASE)
+	(echo "@set version-GCC $(BASEVER_c)"; \
+	 if [ "$(DEVPHASE_c)" = "experimental" ]; \
+	 then echo "@set DEVELOPMENT"; \
+	 else echo "@clear DEVELOPMENT"; \
+	 fi) > $@T
+	mv -f $@T $@
+
 
 # The *.1, *.7, *.info, and *.dvi files are being generated from implicit
 # patterns.  To use them, put each of the specific targets with its
@@ -2994,7 +3031,7 @@ doc/cppinternals.info: $(TEXI_CPPINT_FIL
 
 doc/%.info: %.texi
 	if [ x$(BUILD_INFO) = xinfo ]; then \
-		$(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir) \
+		$(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(docdir) \
 			-I $(docdir)/include -o $@ $<; \
 	fi
 
@@ -3019,11 +3056,11 @@ dvi:: doc/gcc.dvi doc/gccint.dvi doc/gcc
       doc/cppinternals.dvi
 
 doc/%.dvi: %.texi
-	$(TEXI2DVI) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
+	$(TEXI2DVI) -I . -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
 
 # Duplicate entry to handle renaming of gccinstall.dvi
 doc/gccinstall.dvi: $(TEXI_GCCINSTALL_FILES)
-	$(TEXI2DVI) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
+	$(TEXI2DVI) -I . -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
 
 html:: $(htmldir)/cpp/index.html $(htmldir)/gcc/index.html \
        $(htmldir)/gccinstall/index.html $(htmldir)/gccint/index.html \
@@ -4179,8 +4216,6 @@ risky-stage4: stage4
 XGETTEXT = @XGETTEXT@
 GMSGFMT = @GMSGFMT@
 MSGMERGE = msgmerge
-
-PACKAGE = @PACKAGE@
 CATALOGS = @CATALOGS@
 
 .PHONY: build- install- build-po install-po update-po
@@ -4204,13 +4239,13 @@ update-po: $(CATALOGS:.gmo=.pox)
 
 # The new .po has to be gone over by hand, so we deposit it into
 # build/po with a different extension.
-# If build/po/$(PACKAGE).pot exists, use it (it was just created),
+# If build/po/gcc.pot exists, use it (it was just created),
 # else use the one in srcdir.
 .po.pox:
 	-test -d po || mkdir po
-	$(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \
-			then echo po/$(PACKAGE).pot; \
-			else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@
+	$(MSGMERGE) $< `if test -f po/gcc.pot; \
+			then echo po/gcc.pot; \
+			else echo $(srcdir)/po/gcc.pot; fi` -o $@
 
 # This rule has to look for .gmo modules in both srcdir and
 # the cwd, and has to check that we actually have a catalog
@@ -4227,8 +4262,8 @@ install-po:
 	  dir=$(localedir)/$$lang/LC_MESSAGES; \
 	  echo $(mkinstalldirs) $(DESTDIR)$$dir; \
 	  $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \
-	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
-	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
+	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \
+	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \
 	done
 
 # Rule for regenerating the message template (gcc.pot).
@@ -4238,9 +4273,9 @@ install-po:
 # Note that exgettext has an awk script embedded in it which requires a
 # fairly modern (POSIX-compliant) awk.
 # The .pot file is left in the build directory.
-$(PACKAGE).pot: po/$(PACKAGE).pot
-po/$(PACKAGE).pot: force options.c
+gcc.pot: po/gcc.pot
+po/gcc.pot: force options.c
 	-test -d po || mkdir po
 	$(MAKE) srcextra
 	AWK=$(AWK) $(SHELL) $(srcdir)/po/exgettext \
-		$(XGETTEXT) $(PACKAGE) $(srcdir)
+		$(XGETTEXT) gcc $(srcdir)
===================================================================
Index: gcc/aclocal.m4
--- gcc/aclocal.m4	2 Dec 2004 11:04:01 -0000	1.100
+++ gcc/aclocal.m4	9 Mar 2005 07:16:40 -0000
@@ -2,7 +2,6 @@ m4_include([../config/accross.m4])
 m4_include([../config/acx.m4])
 m4_include([../config/gettext-sister.m4])
 m4_include([../config/gcc-lib-path.m4])
-m4_include([../config/gcc-version.m4])
 m4_include([../config/iconv.m4])
 m4_include([../config/lcmessage.m4])
 m4_include([../config/lib-ld.m4])
===================================================================
Index: gcc/configure.ac
--- gcc/configure.ac	26 Feb 2005 21:43:29 -0000	2.95
+++ gcc/configure.ac	9 Mar 2005 07:16:40 -0000
@@ -30,9 +30,6 @@ AC_INIT
 AC_CONFIG_SRCDIR(tree.c)
 AC_CONFIG_HEADER(auto-host.h:config.in)
 
-#Set to 1 on a release branch
-is_release=
-
 # Determine the host, build, and target systems
 AC_CANONICAL_BUILD
 AC_CANONICAL_HOST
@@ -100,8 +97,6 @@ AC_MSG_ERROR([
 *** and run configure again.])
 fi
 
-TL_AC_GCC_VERSION([$srcdir/..])
-
 # -----------
 # Directories
 # -----------
@@ -139,7 +134,7 @@ if test x${gcc_gxx_include_dir} = x; the
   if test x${enable_version_specific_runtime_libs} = xyes; then
     gcc_gxx_include_dir='${libsubdir}/include/c++'
   else
-    libstdcxx_incdir=c++/${gcc_version}
+    libstdcxx_incdir='c++/$(version)'
 changequote(<<, >>)dnl
     gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/"${libstdcxx_incdir}
 changequote([, ])dnl
@@ -375,6 +370,10 @@ fi
 AC_SUBST(warn_cflags)
 
 # Enable -Werror in bootstrap stage2 and later.
+is_release=
+if test x"`cat $srcdir/../config/GCC-DEV-PHASE`" != xexperimental; then
+  is_release=yes
+fi
 AC_ARG_ENABLE(werror, 
 [  --enable-werror         enable -Werror in bootstrap stage2 and later], [],
 [if test x$is_release = x ; then
@@ -1411,13 +1410,6 @@ EOF
 changequote([,])dnl
 
 # Internationalization
-PACKAGE=gcc
-VERSION="$gcc_version"
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",
-  [The name of this program for internationalization purposes.])
-AC_SUBST(PACKAGE)
-AC_SUBST(VERSION)
-
 ZW_GNU_GETTEXT_SISTER_DIR
 
 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
@@ -1435,44 +1427,30 @@ AC_ARG_ENABLE(win32-registry,
   --enable-win32-registry=KEY
                           use KEY instead of GCC version as the last portion
                           of the registry key],,)
+
 case $host_os in
-	win32 | pe | cygwin* | mingw32* | uwin*)
-AC_MSG_CHECKING(whether windows registry support is requested)
-if test "x$enable_win32_registry" != xno; then
-  AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
-[Define to 1 if installation paths should be looked up in Windows32
-   Registry. Ignored on non windows32 hosts.])
-  AC_MSG_RESULT(yes)
-  AC_SEARCH_LIBS(RegOpenKeyExA, advapi32)
-else
-  AC_MSG_RESULT(no)
-fi
+  win32 | pe | cygwin* | mingw32* | uwin*)
+    if test "x$enable_win32_registry" != xno; then
+      AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
+    fi
 
-# Check if user specified a different registry key.
-case "x${enable_win32_registry}" in
-x | xyes)
-  # default.
-  gcc_cv_win32_registry_key="$VERSION"
-  ;;
-xno)
-  # no registry lookup.
-  gcc_cv_win32_registry_key=''
-  ;;
-*)
-  # user-specified key.
-  gcc_cv_win32_registry_key="$enable_win32_registry"
+    if test "x$enable_win32_registry" != xno; then
+      AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
+  [Define to 1 if installation paths should be looked up in the Windows
+   Registry. Ignored on non-Windows hosts.])
+
+      if test "x$enable_win32_registry" != xyes \
+         && test "x$enable_win32_registry" != x; then
+	AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
+  [Define to be the last component of the Windows registry key under which
+   to look for installation paths.  The full key used will be 
+   HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
+   The default is the GCC version number.])
+      fi
+    fi
   ;;
 esac
 
-if test "x$enable_win32_registry" != xno; then
-  AC_MSG_CHECKING(registry key on windows hosts)
-  AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
-	[Define to be the last portion of registry key on windows hosts.])
-  AC_MSG_RESULT($gcc_cv_win32_registry_key)
-fi
-;;
-esac
-
 # Get an absolute path to the GCC top-level source directory
 holddir=`${PWDCMD-pwd}`
 cd $srcdir
@@ -1769,6 +1747,8 @@ elif test -x "$AS" && test x$host = x$ta
 	gcc_cv_as="$AS"
 fi
 
+gcc_version=`cat $srcdir/../config/GCC-BASE-VER`
+
 if test "x$gcc_cv_as" = x; then
 	# Search the same directories that the installed compiler will
 	# search.  Else we may find the wrong assembler and lose.  If we
===================================================================
Index: gcc/gccbug.in
--- gcc/gccbug.in	15 Jul 2004 16:52:43 -0000	1.20
+++ gcc/gccbug.in	9 Mar 2005 07:16:40 -0000
@@ -31,7 +31,11 @@ SUBMITTER=net
 GNATS_ADDR=gcc-gnats@gcc.gnu.org
 
 # The default release for this host.
-DEFAULT_RELEASE="@gcc_version_full@"
+# We have to guess at what program_transform_name might have done.
+# "sed 1q" because neither "head -1" nor "head -n 1" is universal, argh.
+
+DEFAULT_GCC="`echo $0 | sed -e 's/bug//'`"
+DEFAULT_RELEASE="`$DEFAULT_GCC --version | sed 1q`"
 
 # The default organization.
 DEFAULT_ORGANIZATION=
===================================================================
Index: gcc/gcov-iov.c
--- gcc/gcov-iov.c	9 Jul 2003 12:12:29 -0000	1.4
+++ gcc/gcov-iov.c	9 Mar 2005 07:16:40 -0000
@@ -1,6 +1,6 @@
 /* Generate gcov version string from version.c. See gcov-io.h for
    description of how the version string is generated.
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
    Contributed by Nathan Sidwell <nathan@codesourcery.com>
 
 This file is part of GCC.
@@ -20,46 +20,50 @@ along with GCC; see the file COPYING.  I
 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 02111-1307, USA.  */
 
-#include "bconfig.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-#include "version.c" /* We want the actual string.  */
+#include <stdio.h>
+#include <stdlib.h>
 
-int main (int, char **);
+/* Command line arguments are the base GCC version and the development
+   phase (the latter may be an empty string).  */
 
 int
-main (int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED)
+main (int argc, char **argv)
 {
-  unsigned version = 0;
+  unsigned int version = 0;
   unsigned char v[4];
-  unsigned ix;
-  char const *ptr = version_string;
-  unsigned major, minor = 0;
-  char s = 0;
-
-  major = atoi (ptr);
-  while (*ptr && *ptr != '.')
-    ptr++;
-  if (*ptr)
-    minor = atoi (ptr + 1);
-  while (*ptr)
-    if (*ptr++ == '(')
-      {
-	s = *ptr;
-	break;
-      }
+  unsigned int ix;
+  unsigned long major;
+  unsigned long minor = 0;
+  char phase = 0;
+  char *ptr;
+
+  if (argc != 3)
+    {
+      fprintf (stderr, "usage: %s 'version' 'phase'\n", argv[0]);
+      return 1;
+    }
+
+  ptr = argv[1];
+  major = strtoul (ptr, &ptr, 10);
+
+  if (*ptr == '.')
+    minor = strtoul (ptr + 1, 0, 10);
+
+  phase = argv[2][0];
+  if (phase == '\0')
+    phase = '*';
 
   v[0] = (major < 10 ? '0' : 'A' - 10) + major;
   v[1] = (minor / 10) + '0';
   v[2] = (minor % 10) + '0';
-  v[3] = s ? s : '*';
+  v[3] = phase;
 
   for (ix = 0; ix != 4; ix++)
     version = (version << 8) | v[ix];
 
   printf ("/* Generated automatically by the program `%s'\n", argv[0]);
-  printf ("   from `%s'.  */\n", version_string);
+  printf ("   from `%s (%lu %lu) and %s (%c)'.  */\n",
+	  argv[1], major, minor, argv[2], phase);
   printf ("\n");
   printf ("#define GCOV_VERSION ((gcov_unsigned_t)%#08x)  /* %.4s */\n",
 	  version, v);
===================================================================
Index: gcc/intl.c
--- gcc/intl.c	23 Jul 2004 06:59:34 -0000	1.11
+++ gcc/intl.c	9 Mar 2005 07:16:40 -0000
@@ -51,8 +51,8 @@ gcc_init_libintl (void)
   setlocale (LC_ALL, "");
 #endif
 
-  (void) bindtextdomain (PACKAGE, LOCALEDIR);
-  (void) textdomain (PACKAGE);
+  (void) bindtextdomain ("gcc", LOCALEDIR);
+  (void) textdomain ("gcc");
 
   /* Opening quotation mark.  */
   open_quote = _("`");
===================================================================
Index: gcc/libada-mk.in
--- gcc/libada-mk.in	26 Feb 2005 21:43:30 -0000	2.3
+++ gcc/libada-mk.in	9 Mar 2005 07:16:40 -0000
@@ -23,7 +23,6 @@
 
 exeext=@host_exeext@
 libdir=@libdir@
-gcc_version=@gcc_version@
 NOCOMMON_FLAG=@nocommon_flag@
 WARN_CFLAGS=@warn_cflags@
 gcc_tmake_file=@tmake_file@
===================================================================
Index: gcc/prefix.c
--- gcc/prefix.c	30 Jun 2004 18:45:57 -0000	1.44
+++ gcc/prefix.c	9 Mar 2005 07:16:40 -0000
@@ -124,6 +124,10 @@ save_string (const char *s, int len)
 
 #if defined(_WIN32) && defined(ENABLE_WIN32_REGISTRY)
 
+#ifndef WIN32_REGISTRY_KEY
+# define WIN32_REGISTRY_KEY BASEVER
+#endif
+
 /* Look up "key" in the registry, as above.  */
 
 static char *
===================================================================
Index: gcc/version.c
--- gcc/version.c	9 Mar 2005 00:16:18 -0000	1.2628
+++ gcc/version.c	9 Mar 2005 07:16:40 -0000
@@ -1,11 +1,14 @@
 #include "version.h"
 
-/* This is the string reported as the version number by all components
-   of the compiler.  If you distribute a modified version of GCC,
-   please modify this string to indicate that, e.g. by putting your
-   organization's name in parentheses at the end of the string.  */
+/* This is the trailing component of the string reported as the
+   version number by all components of the compiler.  For an official
+   FSF release, it is empty.  If you distribute a modified version of
+   GCC, please change this string to indicate that.  The suggested
+   format is a leading space, followed by your organization's name
+   in parentheses.  You may also wish to include a number indicating
+   the revision of your modified compiler.  */
 
-const char version_string[] = "4.1.0 20050309 (experimental)";
+#define VERSUFFIX ""
 
 /* This is the location of the online document giving instructions for
    reporting bugs.  If you distribute a modified version of GCC,
@@ -15,3 +18,8 @@ const char version_string[] = "4.1.0 200
    not bugs in your modifications.)  */
 
 const char bug_report_url[] = "<URL:http://gcc.gnu.org/bugs.html>";
+
+/* The complete version string, assembled from several pieces.
+   BASEVER, DATESTAMP, and DEVPHASE are defined by the Makefile.  */
+
+const char version_string[] = BASEVER DATESTAMP DEVPHASE VERSUFFIX;
===================================================================
Index: gcc/ada/Make-lang.in
--- gcc/ada/Make-lang.in	10 Feb 2005 13:54:45 -0000	1.98
+++ gcc/ada/Make-lang.in	9 Mar 2005 07:16:43 -0000
@@ -377,16 +377,18 @@ doc/gnat_ugn_unw.texi: $(srcdir)/ada/gna
 	ada/doctools/xgnatugn unw $(srcdir)/ada/gnat_ugn.texi \
 	   $(srcdir)/ada/ug_words doc/gnat_ugn_unw.texi
 
-doc/gnat_ugn_unw.info: doc/gnat_ugn_unw.texi \
-   $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+doc/gnat_ugn_unw.info: doc/gnat_ugn_unw.texi			\
+   $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi	\
+   gcc-vers.texi
+
 	if [ x$(BUILD_INFO) = xinfo ]; then \
 	  rm -f $(@)*; \
 	  $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \
             -I$(srcdir)/ada -o $@ $<; \
 	else true; fi
 
-doc/gnat_rm.info: ada/gnat_rm.texi $(docdir)/include/fdl.texi \
-   $(docdir)/include/gcc-common.texi
+doc/gnat_rm.info: ada/gnat_rm.texi $(docdir)/include/fdl.texi	\
+   $(docdir)/include/gcc-common.texi gcc-vers.texi
 	if [ x$(BUILD_INFO) = xinfo ]; then \
 	  rm -f $(@)*; \
 	  $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \
@@ -415,12 +417,12 @@ install-info:: $(DESTDIR)$(infodir)/gnat
 dvi:: doc/gnat_ugn_unw.dvi \
       doc/gnat_rm.dvi doc/gnat-style.dvi
 
-doc/gnat_ugn_unw.dvi: doc/gnat_ugn_unw.texi \
-	$(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+doc/gnat_ugn_unw.dvi: doc/gnat_ugn_unw.texi $(docdir)/include/fdl.texi	\
+	$(docdir)/include/gcc-common.texi gcc-vers.texi
 	$(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
 
-doc/gnat_rm.dvi: ada/gnat_rm.texi \
-	$(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+doc/gnat_rm.dvi: ada/gnat_rm.texi $(docdir)/include/fdl.texi	\
+	$(docdir)/include/gcc-common.texi gcc-vers.texi
 	$(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
 
 doc/gnat-style.dvi: ada/gnat-style.texi $(docdir)/include/fdl.texi
===================================================================
Index: gcc/config/alpha/x-vms
--- gcc/config/alpha/x-vms	5 Apr 2004 03:58:44 -0000	1.9
+++ gcc/config/alpha/x-vms	9 Mar 2005 07:16:43 -0000
@@ -1,5 +1,5 @@
 # Under VMS, directory names cannot contain dots.
-version:=$(shell echo $(gcc_version) | sed -e 's/\./_/g')
+version:=$(shell echo $(BASEVER_c) | sed -e 's/\./_/g')
 
 libsubdir=$(libdir)/gcc-lib
 
===================================================================
Index: gcc/config/i386/t-nwld
--- gcc/config/i386/t-nwld	19 Feb 2005 11:44:06 -0000	1.6
+++ gcc/config/i386/t-nwld	9 Mar 2005 07:16:43 -0000
@@ -38,7 +38,7 @@ SHLIB_SRC = $(srcdir)/config/i386/netwar
 SHLIB_LINK = set -e; \
 	cat $(SHLIB_DEF) >@shlib_base_name@.def; \
 	echo "name $(SHLIB_NAME)" >>@shlib_base_name@.def; \
-	echo "version $(gcc_version)" | sed "s!\.!,!g" >>@shlib_base_name@.def; \
+	echo "version $(version)" | sed "s!\.!,!g" >>@shlib_base_name@.def; \
 	touch libgcc/build; \
 	echo "build $$$$(($$$$(<libgcc/build)+0))" >>@shlib_base_name@.def; \
 	echo "export @$(SHLIB_MAP)" >>@shlib_base_name@.def; \
===================================================================
Index: gcc/doc/include/gcc-common.texi
--- gcc/doc/include/gcc-common.texi	2 Mar 2005 14:03:44 -0000	1.12
+++ gcc/doc/include/gcc-common.texi	9 Mar 2005 07:16:47 -0000
@@ -2,14 +2,13 @@
 @c This is part of the GCC manual.
 @c For copying conditions, see the file gcc.texi.
 
-@c Common values used in the GCC manuals:
+@c Version number and development mode.
+@c version-GCC is @set to the base GCC version number.
+@c DEVELOPMENT is @set for an in-development version, @clear for a
+@c release version (corresponding to ``experimental''/anything else
+@c in toplevel/config/GCC-DEV-PHASE).
 
-@set version-GCC 4.1.0
-
-@c DEVELOPMENT is set to indicate an in-development version,
-@c as compared to a release version.  When making a release
-@c branch, clear this.
-@set DEVELOPMENT
+@include gcc-vers.texi
 
 @c Common macros to support generating man pages:
 
===================================================================
Index: gcc/fortran/Make-lang.in
--- gcc/fortran/Make-lang.in	13 Nov 2004 07:35:54 -0000	1.12
+++ gcc/fortran/Make-lang.in	9 Mar 2005 07:16:47 -0000
@@ -153,7 +153,8 @@ GFORTRAN_TEXI = \
   $(srcdir)/doc/include/fdl.texi \
   $(srcdir)/doc/include/gpl.texi \
   $(srcdir)/doc/include/funding.texi \
-  $(srcdir)/doc/include/gcc-common.texi
+  $(srcdir)/doc/include/gcc-common.texi \
+  gcc-vers.texi
 
 doc/gfortran.info: $(GFORTRAN_TEXI)
 	if [ x$(BUILD_INFO) = xinfo ]; then \
===================================================================
Index: gcc/java/Make-lang.in
--- gcc/java/Make-lang.in	6 Mar 2005 08:42:31 -0000	1.154
+++ gcc/java/Make-lang.in	9 Mar 2005 07:16:47 -0000
@@ -370,8 +370,9 @@ java/jcf-path.o: java/jcf-path.c $(CONFI
 	  -DDEFAULT_TARGET_VERSION=\"$(version)\" \
 	  $(srcdir)/java/jcf-path.c $(OUTPUT_OPTION)
 
-TEXI_JAVA_FILES = java/gcj.texi $(docdir)/include/fdl.texi $(docdir)/include/gpl.texi \
-	 $(docdir)/include/gcc-common.texi
+TEXI_JAVA_FILES = java/gcj.texi $(docdir)/include/fdl.texi		\
+	 $(docdir)/include/gpl.texi $(docdir)/include/gcc-common.texi   \
+	 gcc-vers.texi
 
 # Documentation
 doc/gcj.info: $(TEXI_JAVA_FILES)
===================================================================
Index: gcc/treelang/Make-lang.in
--- gcc/treelang/Make-lang.in	6 Mar 2005 16:02:40 -0000	1.52
+++ gcc/treelang/Make-lang.in	9 Mar 2005 07:17:07 -0000
@@ -166,7 +166,8 @@ TEXI_TREELANG_FILES = treelang/treelang.
 	 $(docdir)/include/gcc-common.texi \
 	 $(docdir)/include/gpl.texi \
 	 $(docdir)/include/fdl.texi \
-	 $(docdir)/include/funding.texi
+	 $(docdir)/include/funding.texi \
+	 gcc-vers.texi
 
 doc/treelang.info: $(TEXI_TREELANG_FILES)
 	$(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir)/include -o $@ $<
===================================================================
Index: maintainer-scripts/README
--- maintainer-scripts/README	10 Mar 2001 00:08:49 -0000	1.1
+++ maintainer-scripts/README	9 Mar 2005 07:17:30 -0000
@@ -1,6 +1,6 @@
 This directory contains various files used by the gccadmin account on
 gcc.gnu.org, mainly for automated tasks such as the daily update of
-the date in version.c.  There isn't presently any scheme for files
+the date in config/DATESTAMP.  There isn't presently any scheme for files
 checked in here to be automatically checked out and used by gccadmin,
 so the files in CVS and those used by gccadmin must be kept in sync
 manually.
===================================================================
Index: maintainer-scripts/gcc_release
--- maintainer-scripts/gcc_release	14 Aug 2004 16:47:52 -0000	1.63
+++ maintainer-scripts/gcc_release	9 Mar 2005 07:17:30 -0000
@@ -140,15 +140,26 @@ EOF
       fi
     done
 
-    # Update `gcc/version.c'.
-    for x in gcc/version.c; do 
-      y=`basename ${x}`
-      (changedir `dirname ${SOURCE_DIRECTORY}/${x}` && \
-          sed -e 's|version_string\[\] = \".*\"|version_string\[\] = \"'${RELEASE}'\"|g' < ${y} > ${y}.new && \
-	  mv ${y}.new ${y} && \
-          ${CVS} ci -m 'Update version' ${y}) || \
-	  error "Could not update ${x}"
-    done
+    # Update config/DATESTAMP and config/GCC-DEV-PHASE if they exist,
+    # otherwise gcc/version.c.
+    if [ -f ${SOURCE_DIRECTORY}/config/DATESTAMP ]; then
+      [ `cat ${SOURCE_DIRECTORY}/config/GCC-BASE-VER` = ${RELEASE} ] || \
+      error "Release number ${RELEASE} does not match GCC-BASE-VER"
+      (changedir ${SOURCE_DIRECTORY}/config && \
+       : > DATESTAMP && \
+       : > GCC-DEV-PHASE && \
+       ${CVS} ci -m 'Update version for release' DATESTAMP GCC-DEV-PHASE) || \
+      error "Could not update DATESTAMP and GCC-DEV-PHASE"
+    else
+      for x in gcc/version.c; do 
+        y=`basename ${x}`
+        (changedir `dirname ${SOURCE_DIRECTORY}/${x}` && \
+            sed -e 's|version_string\[\] = \".*\"|version_string\[\] = \"'${RELEASE}'\"|g' < ${y} > ${y}.new && \
+	    mv ${y}.new ${y} && \
+            ${CVS} ci -m 'Update version' ${y}) || \
+	    error "Could not update ${x}"
+      done
+    fi
 
     # Make sure we tag the sources for a final release.
     TAG="gcc_`echo ${RELEASE} | tr . _`_release"
===================================================================
Index: maintainer-scripts/update_version
--- maintainer-scripts/update_version	31 Dec 2004 00:11:08 -0000	1.15
+++ maintainer-scripts/update_version	9 Mar 2005 07:17:30 -0000
@@ -36,6 +36,11 @@ textstring_FILES="gcc/gcc/version.c"
 # version is contained within a #define
 cppdefine_FILES="gcc/libstdc++-v3/include/bits/c++config"
 
+# version is all there is
+datestamp_FILES="gcc/config/DATESTAMP"
+
+FILES="$textstring_FILES $cppdefine_FILES $datestamp_FILES"
+
 # Assume all will go well.
 RESULT=0
 
@@ -45,9 +50,9 @@ for BRANCH in $BRANCHES; do
   # you check out files with -r HEAD, CVS will not let you check 
   # in changes.
   if test "$BRANCH" = HEAD; then 
-    ${CVS} co $textstring_FILES $cppdefine_FILES
+    ${CVS} co $FILES
   else
-    ${CVS} co -r $BRANCH $textstring_FILES $cppdefine_FILES
+    ${CVS} co -r $BRANCH $FILES
   fi
 
   # There are no files to commit yet.
@@ -81,6 +86,19 @@ for BRANCH in $BRANCHES; do
     fi
   done
 
+  for file in $datestamp_FILES; do
+    if test -f $file; then
+      echo ${CURR_DATE} > $file.new
+
+      if /usr/bin/cmp -s $file $file.new; then
+	rm -f $file.new
+      else
+	mv -f $file.new $file
+        COMMIT_FILES="$COMMIT_FILES $file"
+      fi
+    fi
+  done
+
   if test -n "$COMMIT_FILES" \
      && ! ${CVS} commit -m "Daily bump." $COMMIT_FILES; then
     # If we could not commit the files, indicate failure.
===================================================================
Index: maintainer-scripts/update_web_docs
--- maintainer-scripts/update_web_docs	13 May 2004 10:30:28 -0000	1.24
+++ maintainer-scripts/update_web_docs	9 Mar 2005 07:17:30 -0000
@@ -88,7 +88,7 @@ find $CVSROOT/gcc -name \*.texi,v -print
 
 
 # Checkout all the texi files.
-cvs -Q export -r$RELEASE `cat FILES` gcc/gcc/doc/install.texi2html gcc/gcc/doc/include/texinfo.tex gcc/gcc/ada/xgnatugn.adb gcc/gcc/ada/ug_words
+cvs -Q export -r$RELEASE `cat FILES` gcc/gcc/doc/install.texi2html gcc/gcc/doc/include/texinfo.tex gcc/gcc/ada/xgnatugn.adb gcc/gcc/ada/ug_words gcc/config/GCC-BASE-VER gcc/config/GCC-DEV-PHASE
 
 # Build a tarball of the sources.
 tar cf docs-sources.tar gcc
@@ -107,6 +107,16 @@ if [ -f gcc/gcc/ada/xgnatugn.adb ]; then
      gcc/gcc/ada/ug_words gnat_ugn_unw.texi
 fi
 
+# Generate gcc-vers.texi.
+(
+   echo "@set version-GCC $(cat gcc/config/GCC-BASE-VER)"
+   if "$(cat gcc/config/GCC-DEV-PHASE)" = "experimental"; then
+      echo "@set DEVELOPMENT"
+   else
+      echo "@clear DEVELOPMENT"
+   fi
+) > $includedir/gcc-vers.texi
+
 # Now convert the relevant files from texi to HTML and PostScript.
 for file in $MANUALS; do
   filename=`find . -name ${file}.texi`
===================================================================
Index: htdocs/branching.html
--- htdocs/branching.html	11 Sep 2004 19:54:17 -0000	1.17
+++ htdocs/branching.html	9 Mar 2005 07:41:01 -0000
@@ -20,15 +20,12 @@ cvs rtag -b -r gcc-3_5-branchpoint gcc-3
 
 <li>Update <code>cvs.html</code> web page to list the new branch tags.</li>
 
-<li>Update the file <code>gcc/version.c</code> on the branch, to say
+<li>Update the file <code>config/GCC-DEV-PHASE</code> on the branch, to say
 &quot;prerelease&quot; instead of &quot;experimental&quot;.</li>
 
-<li>Update the file <code>gcc/version.c</code> on the mainline, to use
+<li>Update the file <code>config/GCC-BASE-VER</code> on the mainline, to use
 the next major release number (e.g., 3.2 instead of 3.1).</li>
 
-<li>Update <code>doc/include/gcc-common.texi</code> on the mainline to 
-use the next major release number.</li>
-
 <li>Create a new <code>htdocs/gcc-<var>VERSION</var></code> directory
 for the next major release in the <code>wwwdocs</code> repository and
 populate it with initial copies of <code>changes.html</code> and
@@ -42,9 +39,6 @@ Update the toplevel <code>buildstat.html
 release branch, the current release series, and active development
 (mainline).  Update the version and development stage for mainline.</li>
 
-<li>Update <code>doc/include/gcc-common.texi</code> on the branch to use
-<code>@clear DEVELOPMENT</code>.</li>
-
 <li>Update <code>maintainer-scripts/crontab</code> on the mainline by
 adding an entry to make shapshots of the new branch and adjusting the
 version number of the mainline snapshots.
@@ -65,9 +59,6 @@ new snapshot as well as the mail itself 
 <a href="http://gcc.gnu.org/translation.html#submit";>Send them
 to the translation project</a>.</li>
 
-<li>Update the file <code>gcc/configure.ac</code> so that the
-<code>is_release</code> shell variable is 1.</li>
-
 <li>Create new versions in Bugzilla corresponding to the new mainline 
 version.  This can be accomplished by choosing products, choosing gcc, 
 and editing the versions.  Please do <strong>not</strong> delete old
===================================================================
Index: htdocs/releasing.html
--- htdocs/releasing.html	25 Nov 2004 10:52:45 -0000	1.22
+++ htdocs/releasing.html	9 Mar 2005 07:41:01 -0000
@@ -50,10 +50,23 @@ also files such as <code>/some/where/gcc
 <li>Remove pre-release sources from gcc.gnu.org:~ftp/pub/gcc/.</li> 
 </ol>
 
+<li>If you are making a release of GCC 4.1 or later: Increment the
+version number in <code>config/GCC-BASE-VER</code>.  Restore the date
+stamp to <code>config/DATESTAMP</code>, and the word "prerelease"
+(without the quotation marks) to <code>config/GCC-DEV-PHASE</code>.
+Check these files in.<br /> 
+If you are making a release of GCC 4.0 or earlier: Increment the
+version number in <code>gcc/version.c</code>, and put back the date
+stamp and (prerelease) annotation.  Increment the version number in
+<code>doc/include/gcc-common.texi</code>.</li>
+
+<li>Notify developers that checkins to the branch are once again
+allowed.</li>
+</ol>
 
 <h2>Web Site Updates</h2>
 
-<ol start="7">
+<ol start="9">
 <li>Update the <code>releases.html</code> and <code>develop.html</code>
 web pages.</li>
 
@@ -80,7 +93,7 @@ you remove the links to it).</li>
 
 <h2>Announcements</h2>
 
-<ol start="13">
+<ol start="15">
 <li>Announce the release to the gcc-announce@gcc.gnu.org and gcc@gcc.gnu.org
 mailing lists.
 <ul>
@@ -89,15 +102,6 @@ mailing lists.
 FSF.</li>
 </ul></li>
 
-<li>Increment the version number in <code>gcc/version.c</code>, and
-put back the date stamp and (prerelease) annotation.  Increment the
-version number in <code>doc/include/gcc-common.texi</code>.</li>
-
-<li>Notify developers that checkins to the branch are once again
-allowed.</li>
-</ol>
-
-
 <h2>Bugzilla Updates</h2>
 
 <ol start="16">


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]