From 828c373b6d032450b89f6ace178f7e114e666fd8 Mon Sep 17 00:00:00 2001
From: Akim Demaille <akim@epita.fr>
Date: Wed, 6 Jul 2005 07:49:25 +0000
Subject: [PATCH] Bind examples/calc++ to the package. *
 examples/calc++/Makefile: Remove, replaced by... *
 examples/calc++/Makefile.am: ... this new file. * examples/calc++/test:
 Remove input. * examples/calc++/compile: Remove. * examples/Makefile.am: New.
 * configure.ac, Makefile.am: Adjust. * doc/Makefile.am (clean-local): New,
 for more recent texi2dvis.

---
 ChangeLog                         | 11 ++++
 Makefile.am                       |  4 +-
 configure.ac                      |  2 +
 doc/Makefile.am                   |  5 +-
 doc/bison.texinfo                 |  4 +-
 examples/Makefile.am              | 21 ++++++++
 examples/calc++/Makefile          | 35 -------------
 examples/calc++/Makefile.am       | 86 +++++++++++++++++++++++++++++++
 examples/calc++/calc++-scanner.ll |  4 +-
 examples/calc++/calc++.cc         |  2 +-
 examples/calc++/compile           |  9 ----
 examples/calc++/test              |  3 ++
 12 files changed, 136 insertions(+), 50 deletions(-)
 create mode 100644 examples/Makefile.am
 delete mode 100644 examples/calc++/Makefile
 create mode 100644 examples/calc++/Makefile.am
 delete mode 100755 examples/calc++/compile

diff --git a/ChangeLog b/ChangeLog
index 0c4f8132..23bdb1bf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2005-07-06  Akim Demaille  <akim@epita.fr>
+
+	Bind examples/calc++ to the package.
+	* examples/calc++/Makefile: Remove, replaced by...
+	* examples/calc++/Makefile.am: ... this new file.
+	* examples/calc++/test: Remove input.
+	* examples/calc++/compile: Remove.
+	* examples/Makefile.am: New.
+	* configure.ac, Makefile.am: Adjust.
+	* doc/Makefile.am (clean-local): New, for more recent texi2dvis.
+
 2005-07-05  Paul Eggert  <eggert@cs.ucla.edu>
 
 	* data/glr.c (yyFail): Drastically simplify; since the format argument
diff --git a/Makefile.am b/Makefile.am
index a307e631..3baff6fb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,5 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
-## Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+## Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
 
 ACLOCAL_AMFLAGS = -I m4
 
-SUBDIRS = config po lib data src doc tests
+SUBDIRS = config po lib data src doc tests examples
 
 EXTRA_DIST = REFERENCES OChangeLog Makefile.maint GNUmakefile Makefile.cfg
 
diff --git a/configure.ac b/configure.ac
index 23e99ff5..fb1a97c9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -129,5 +129,7 @@ AC_CONFIG_FILES([Makefile
                  config/Makefile
                  po/Makefile.in
                  data/Makefile
+		 examples/Makefile
+		    examples/calc++/Makefile
                  lib/Makefile src/Makefile doc/Makefile])
 AC_OUTPUT
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 567e5b78..b7b2d4ea 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,5 +1,5 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
-## Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+## Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -25,6 +25,9 @@ EXTRA_DIST = FAQ bison.1 refcard.tex
 
 CLEANFILES = refcard.dvi refcard.log refcard.ps bison.fns
 
+clean-local:
+	rm -rf *.t2d
+
 refcard.dvi: refcard.tex
 	tex refcard.tex
 
diff --git a/doc/bison.texinfo b/doc/bison.texinfo
index 5f7b6c38..14857352 100644
--- a/doc/bison.texinfo
+++ b/doc/bison.texinfo
@@ -7360,10 +7360,12 @@ preceding tokens.  Comments would be treated equally.
 
 @comment file: calc++-scanner.ll
 @example
+%@{
+# define YY_USER_ACTION  yylloc->columns (yyleng);
+%@}
 %%
 %@{
   yylloc->step ();
-# define YY_USER_ACTION  yylloc->columns (yyleng);
 %@}
 @{blank@}+   yylloc->step ();
 [\n]+      yylloc->lines (yyleng); yylloc->step ();
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644
index 00000000..c997eb22
--- /dev/null
+++ b/examples/Makefile.am
@@ -0,0 +1,21 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-
+## Copyright (C) 2005 Free Software Foundation, Inc.
+
+## This program 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 of the License, or
+## (at your option) any later version.
+
+## This program 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 this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301  USA
+
+SUBDIRS = calc++
+
+dist_noinst_SCRIPTS = extexi
diff --git a/examples/calc++/Makefile b/examples/calc++/Makefile
deleted file mode 100644
index 5a56f3d5..00000000
--- a/examples/calc++/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-all: calc++
-
-calc++:
-	flex -ocalc++-scanner.cc calc++-scanner.ll
-	bison -o calc++-parser.cc calc++-parser.yy
-	$(CC) -o calc++ calc++.cc calc++-driver.cc calc++-parser.cc calc++-scanner.cc
-
-check: all
-	./test
-
-clean:
-	rm -f *~ *.o *.tab.* input position.hh location.hh stack.hh \
-	      calc++-parser.cc calc++-parser.hh \
-	      calc++-scanner.cc \
-	      calc++
-
-## ------------ ##
-## Extracting.  ##
-## ------------ ##
-
-EXTRACTED = \
-calc++-driver.hh calc++-driver.cc \
-calc++-parser.yy \
-calc++-scanner.ll \
-calc++.cc
-
-doc = ../../doc/bison.texinfo
-extexi = gawk -f ../extexi
-
-RECURSIVE_TARGETS += extract
-
-$(EXTRACTED): $(doc) ../extexi
-	$(extexi) $(doc) -- $(EXTRACTED)
-
-extract extract-am: $(EXTRACTED)
diff --git a/examples/calc++/Makefile.am b/examples/calc++/Makefile.am
new file mode 100644
index 00000000..0894483f
--- /dev/null
+++ b/examples/calc++/Makefile.am
@@ -0,0 +1,86 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-
+## Copyright (C) 2005 Free Software Foundation, Inc.
+
+## This program 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 of the License, or
+## (at your option) any later version.
+
+## This program 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 this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301  USA
+
+## ------------------------------------- ##
+## Running the bison from this tarball.  ##
+## ------------------------------------- ##
+
+BISON = $(top_builddir)/tests/bison
+BISON_IN = $(top_srcdir)/tests/bison.in
+
+$(BISON): $(BISON_IN)
+	cd $(top_builddir)/tests && $(MAKE) $(AM_MAKEFLAGS) bison
+
+## ------------ ##
+## Extracting.  ##
+## ------------ ##
+
+doc = $(top_srcdir)/doc/bison.texinfo
+extexi = $(top_srcdir)/examples/extexi
+run_extexi = gawk -f $(extexi)
+$(calc_sources_extracted): $(doc) $(extexi)
+# Extract in src.
+	cd $(srcdir) && \
+	   gawk -f ../extexi ../../doc/bison.texinfo -- \
+	     calc++-scanner.ll calc++.cc calc++-driver.hh calc++-driver.cc
+
+
+## ------------------- ##
+## Parser generation.  ##
+## ------------------- ##
+
+# We do not use Automake features here.
+BUILT_SOURCES = $(calc_sources_generated)
+MAINTAINERCLEANFILES = $(calc_sources_generated)
+
+# Compile the parser and save cycles.
+# This code comes from "Handling Tools that Produce Many Outputs",
+# from the Automake documentation.
+EXTRA_DIST = $(srcdir)/calc++-parser.stamp $(srcdir)/calc++-parser.yy
+# Don't depend on $(BISON) otherwise we would rebuild these files
+# in srcdir, including during distcheck, which is forbidden.
+$(srcdir)/calc++-parser.stamp: $(srcdir)/calc++-parser.yy $(BISON_IN)
+	@rm -f calc++-parser.tmp
+	@touch calc++-parser.tmp
+	$(BISON) -S lalr1.cc $(srcdir)/calc++-parser.yy -o $(srcdir)/calc++-parser.cc -d -ra
+	@mv -f calc++-parser.tmp $@
+
+$(calc_sources_generated): $(srcdir)/calc++-parser.stamp
+	@if test -f $@; then :; else x\
+	  rm -f $(srcdir)/calc++-parser.stamp; \
+	  $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/calc++-parser.stamp; \
+	fi
+
+
+## --------------------------- ##
+## Building & testing calc++.  ##
+## --------------------------- ##
+
+noinst_PROGRAMS = calc++
+
+calc_sources_extracted = $(srcdir)/calc++-scanner.ll $(srcdir)/calc++.cc \
+$(srcdir)/calc++-driver.hh $(srcdir)/calc++-driver.cc
+calc_extracted = $(calc_sources_extracted) calc++-parser.yy
+calc_sources_generated = \
+	$(srcdir)/stack.hh $(srcdir)/position.hh $(srcdir)/location.hh \
+	$(srcdir)/calc++-parser.hh $(srcdir)/calc++-parser.cc
+
+calc___SOURCES = $(calc_sources_extracted) $(calc_sources_generated)
+
+TESTS = test
+EXTRA_DIST += $(TESTS)
diff --git a/examples/calc++/calc++-scanner.ll b/examples/calc++/calc++-scanner.ll
index 7b1e4ef7..750e6ca7 100644
--- a/examples/calc++/calc++-scanner.ll
+++ b/examples/calc++/calc++-scanner.ll
@@ -10,10 +10,12 @@ id    [a-zA-Z][a-zA-Z_0-9]*
 int   [0-9]+
 blank [ \t]
 
+%{
+# define YY_USER_ACTION  yylloc->columns (yyleng);
+%}
 %%
 %{
   yylloc->step ();
-# define YY_USER_ACTION  yylloc->columns (yyleng);
 %}
 {blank}+   yylloc->step ();
 [\n]+      yylloc->lines (yyleng); yylloc->step ();
diff --git a/examples/calc++/calc++.cc b/examples/calc++/calc++.cc
index 92163968..5a59d741 100644
--- a/examples/calc++/calc++.cc
+++ b/examples/calc++/calc++.cc
@@ -1,4 +1,4 @@
-#line 7414 "../../doc/bison.texinfo"
+#line 7416 "../../doc/bison.texinfo"
 #include <iostream>
 #include "calc++-driver.hh"
 
diff --git a/examples/calc++/compile b/examples/calc++/compile
deleted file mode 100755
index fac1036b..00000000
--- a/examples/calc++/compile
+++ /dev/null
@@ -1,9 +0,0 @@
-#! /bin/sh
-
-set -ex
-BISON_PKGDATADIR=$HOME/src/bison/data
-export BISON_PKGDATADIR
-
-flex -ocalc++-scanner.cc calc++-scanner.ll
-bison -o calc++-parser.cc calc++-parser.yy
-g++ -o calc++ calc++.cc calc++-driver.cc calc++-parser.cc calc++-scanner.cc
diff --git a/examples/calc++/test b/examples/calc++/test
index b4f0d258..d44a4789 100755
--- a/examples/calc++/test
+++ b/examples/calc++/test
@@ -1,4 +1,5 @@
 #! /bin/sh
+
 set +e
 cat >input <<EOF
 a := 1
@@ -24,3 +25,5 @@ toto := 1
 toto
 EOF
 ./calc++ -s input
+
+rm input
-- 
2.45.2