Between Bison releases, manually append `+' to the previous Bison

release number, and use that as a signal to automatically print the
ChangeLog's CVS Id keyword from --version.  Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00028.html>.
* ChangeLog: Add Id header.
* configure.ac (AC_INIT): Append `+' to `2.3'.
* src/.cvsignore: Add revision.c.
* src/Makefile.am (bison_SOURCES): Add revision.c and revision.h.
(BUILT_SOURCES): Add revision.c.
(revision.c): New target rule.  This file defines a new global variable
named revision.  It initializes it with either the Id from ChangeLog
or, if VERSION doesn't contain `+', with the empty string.
* src/getargs.c (version): Print the value of revision.
* src/revision.h: Extern revision.
This commit is contained in:
Joel E. Denny
2006-06-06 05:23:44 +00:00
parent 4ad3ed84f6
commit 7891a7c449
6 changed files with 62 additions and 2 deletions

View File

@@ -1,3 +1,22 @@
$Id$
2006-06-06 Joel E. Denny <jdenny@ces.clemson.edu>
Between Bison releases, manually append `+' to the previous Bison
release number, and use that as a signal to automatically print the
ChangeLog's CVS Id keyword from --version. Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00028.html>.
* ChangeLog: Add Id header.
* configure.ac (AC_INIT): Append `+' to `2.3'.
* src/.cvsignore: Add revision.c.
* src/Makefile.am (bison_SOURCES): Add revision.c and revision.h.
(BUILT_SOURCES): Add revision.c.
(revision.c): New target rule. This file defines a new global variable
named revision. It initializes it with either the Id from ChangeLog
or, if VERSION doesn't contain `+', with the empty string.
* src/getargs.c (version): Print the value of revision.
* src/revision.h: Extern revision.
2006-06-05 Paul Eggert <eggert@cs.ucla.edu>
* NEWS: Version 2.3.

View File

@@ -24,7 +24,7 @@
# least Autoconf 2.59.
AC_PREREQ(2.59)
AC_INIT([GNU Bison], [2.3], [bug-bison@gnu.org])
AC_INIT([GNU Bison], [2.3+], [bug-bison@gnu.org])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])

View File

@@ -5,6 +5,7 @@
Makefile
Makefile.in
bison
revision.c
scan-gram.c
scan-skel.c
yacc

View File

@@ -52,6 +52,7 @@ bison_SOURCES = \
print_graph.c print_graph.h \
reader.c reader.h \
reduce.c reduce.h \
revision.c revision.h \
relation.c relation.h \
scan-gram-c.c \
scan-skel-c.c scan-skel.h \
@@ -66,7 +67,7 @@ bison_SOURCES = \
EXTRA_bison_SOURCES = scan-skel.l scan-gram.l
BUILT_SOURCES = scan-skel.c scan-gram.c parse-gram.c parse-gram.h
BUILT_SOURCES = revision.c scan-skel.c scan-gram.c parse-gram.c parse-gram.h
MOSTLYCLEANFILES = yacc
@@ -78,6 +79,16 @@ yacc:
echo:
echo $(bison_SOURCES) $(noinst_HEADERS)
revision.c: $(top_srcdir)/configure $(top_srcdir)/ChangeLog
case "$(VERSION)" in \
*+*) sed -n \
's/^\$$\(Id.*\)\$$$$/const char *revision = "\1\\n";/p' \
$(top_srcdir)/ChangeLog \
;; \
*) echo 'const char *revision = "";' \
;; \
esac >$@
# The following rule is not designed to be portable,
# and relies on tools that not everyone has.

View File

@@ -22,6 +22,7 @@
#include <config.h>
#include "system.h"
#include "revision.h"
#include <argmatch.h>
#include <error.h>
@@ -272,6 +273,7 @@ version (void)
continue. */
printf (_("bison (GNU Bison) %s"), VERSION);
putc ('\n', stdout);
printf ("%s", revision);
fputs (_("Written by Robert Corbett and Richard Stallman.\n"), stdout);
putc ('\n', stdout);

27
src/revision.h Normal file
View File

@@ -0,0 +1,27 @@
/* Between Bison releases, define a precise revision string.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Bison 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 2, or (at your option)
any later version.
Bison 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 Bison; see the file COPYING. If not, write to the Free
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */
#ifndef REVISION_H_
# define REVISION_H_
extern const char *revision;
#endif /* !REVISION_H_ */