]> git.saurik.com Git - bison.git/commitdiff
maint: de-recurse the handling of examples
authorAkim Demaille <demaille@gostai.com>
Mon, 13 Feb 2012 17:23:45 +0000 (18:23 +0100)
committerAkim Demaille <demaille@gostai.com>
Tue, 14 Feb 2012 20:00:59 +0000 (21:00 +0100)
The directory was still using a local Makefile.am because it provides
"scoped" Make variables: these examples are not meant to use the same
CPPFLAGS etc.  If we were to use the same -I set, we'd pick up
gnulib's stdio.h for instance, which we do not want for these simple
examples.

Yet, as a result, the dependencies are less accurate, there is code
duplication, etc.  This is especially perceptible when trying to
extract more examples from the documentation, as will be done in
forthcoming changes.

In order to make the tuning of CPPFLAGS easier, discard the predefined
-I from Automake.

* examples/calc++/Makefile.am: Rename as...
* examples/calc++/local.mk: this.
Adjust the paths which are now rooted in top_srcdir/top_builddir.
Handle BISON_CXX_WORKS here, instead of the too crude previous
approach that completely discarded the whole directory.
($(BISON)): Remove now useless bouncing recipe.
(calc___CPPFLAGS): New.
Stay away from -Ilib.
* Makefile.am, configure.ac, examples/local.mk,
* examples/calc++/test: Adjust.

* configure.ac: Pass nostdinc to Automake.
* src/local.mk, lib/local.mk (AM_CPPFLAGS): Move to...
* Makefile.am: here.

* src/local.mk, examples/calc++/Makefile.am (BISON, BISON_IN): Factor
to...
* Makefile.am: here.
* tests/local.mk: Use it.

Makefile.am
configure.ac
examples/calc++/.gitignore
examples/calc++/Makefile.am [deleted file]
examples/calc++/local.mk [new file with mode: 0644]
examples/calc++/test
examples/local.mk
src/local.mk
tests/local.mk

index 097a634930f49a8004906c18e0f57b08a97d95e9..6220276f77722a741b0d1e17d688e2ab6005235e 100644 (file)
@@ -18,9 +18,6 @@
 ACLOCAL_AMFLAGS = -I m4
 
 SUBDIRS = po runtime-po .
-if BISON_CXX_WORKS
-SUBDIRS += examples/calc++
-endif
 
 # Files installed for use by Automake.
 aclocaldir = @aclocaldir@
@@ -29,9 +26,15 @@ aclocal_DATA = m4/bison-i18n.m4
 EXTRA_DIST = .prev-version .version \
   cfg.mk ChangeLog-1998 ChangeLog-2012 PACKAGING
 
+## Running the bison from this tarball.  To generate our own parser,
+## but also to run the tests.
+BISON = $(top_builddir)/tests/bison
+BISON_IN = $(top_srcdir)/tests/bison.in
+
 # Initialization before completion by local.mk's.
 AM_CFLAGS = $(WARN_CFLAGS)
-AM_CPPFLAGS =
+# Find builddir/src/scan-code.c etc.
+AM_CPPFLAGS = -I. -Ilib -I$(top_srcdir) -I$(top_srcdir)/lib
 BUILT_SOURCES =
 DISTCLEANFILES =
 MOSTLYCLEANFILES =
index 80c2e99c7bc78424a366d62d9276d86dffb9b97b..c51d2dd5dbd24dc6d0a96c16d64e337ed49ed3cc 100644 (file)
@@ -45,7 +45,7 @@ AC_CONFIG_MACRO_DIR([m4])
 # releases, we want to be able run make dist without being required to
 # add a bogus NEWS entry.  In that case, the version string
 # automatically contains a dash, which we also let disable gnits.
-AM_INIT_AUTOMAKE([1.11.1 dist-xz silent-rules]
+AM_INIT_AUTOMAKE([1.11.1 dist-xz nostdinc silent-rules]
                  m4_bmatch(m4_defn([AC_PACKAGE_VERSION]), [[-_]],
                            [gnu], [gnits]))
 AM_SILENT_RULES([yes])
@@ -181,6 +181,5 @@ do
 done
 AC_CONFIG_FILES([Makefile
                  po/Makefile.in
-                 examples/calc++/Makefile
                  doc/yacc.1])
 AC_OUTPUT
index 2050491fe4532fdd2888d03251bc8043b72115a2..6dc7e2f354fca1ef0f4e0a400021e57b646b87c3 100644 (file)
@@ -7,7 +7,5 @@
 /*.tmp
 /*.yy
 /.deps
-/Makefile
-/Makefile.in
 /calc++
 /calc++.exe
diff --git a/examples/calc++/Makefile.am b/examples/calc++/Makefile.am
deleted file mode 100644 (file)
index 9120d75..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-## Process this file with automake to produce Makefile.in -*-Makefile-*-
-
-## Copyright (C) 2005-2006, 2008-2012 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 3 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, see <http://www.gnu.org/licenses/>.
-
-## ------------------------------------- ##
-## Running the bison from this tarball.  ##
-## ------------------------------------- ##
-
-BISON = $(top_builddir)/tests/bison
-BISON_IN = $(top_srcdir)/tests/bison.in
-
-$(BISON): $(BISON_IN)
-       $(AM_V_GEN)cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) tests/bison
-
-## ------------ ##
-## Extracting.  ##
-## ------------ ##
-
-doc = $(top_srcdir)/doc/bison.texinfo
-extexi = $(top_srcdir)/examples/extexi
-# Extract in src.
-$(srcdir)/calc.stamp: $(doc) $(extexi)
-       $(AM_V_GEN)rm -f $@ $@.tmp
-       $(AM_V_at)touch $@.tmp
-       $(AM_V_at)cd $(srcdir) && \
-          $(AWK) -f ../extexi -v VERSION="$(VERSION)" \
-            ../../doc/bison.texinfo -- calc++-parser.yy \
-            calc++-scanner.ll calc++.cc calc++-driver.hh calc++-driver.cc
-       $(AM_V_at)mv $@.tmp $@
-
-$(calc_extracted): $(srcdir)/calc.stamp
-
-## ------------------- ##
-## Parser generation.  ##
-## ------------------- ##
-
-DEFAULT_INCLUDES = -I. -I$(srcdir)
-BUILT_SOURCES = $(calc_extracted) $(calc_sources_generated)
-CLEANFILES = $(srcdir)/*.output *.tmp
-MAINTAINERCLEANFILES = $(srcdir)/*.stamp $(BUILT_SOURCES)
-
-# 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                    \
-  $(srcdir)/calc.stamp
-# 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)
-       $(AM_V_GEN)rm -f calc++-parser.tmp
-       $(AM_V_at)touch calc++-parser.tmp
-       $(AM_V_at)$(BISON) -d -ra -o $(srcdir)/calc++-parser.cc \
-         $(srcdir)/calc++-parser.yy
-       $(AM_V_at)mv -f calc++-parser.tmp $@
-
-$(calc_sources_generated): $(srcdir)/calc++-parser.stamp
-       $(AM_V_GEN)if test -f $@; then :; else \
-         rm -f $(srcdir)/calc++-parser.stamp && \
-         $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/calc++-parser.stamp; \
-       fi
-
-
-## --------------------------- ##
-## Building & testing calc++.  ##
-## --------------------------- ##
-
-check_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) $(srcdir)/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++/local.mk b/examples/calc++/local.mk
new file mode 100644 (file)
index 0000000..affb9c3
--- /dev/null
@@ -0,0 +1,94 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-
+
+## Copyright (C) 2005-2006, 2008-2012 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 3 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, see <http://www.gnu.org/licenses/>.
+
+## ------------ ##
+## Extracting.  ##
+## ------------ ##
+
+doc = $(top_srcdir)/doc/bison.texinfo
+extexi = $(top_srcdir)/examples/extexi
+# Extract in src.
+$(top_srcdir)/examples/calc++/calc.stamp: $(doc) $(extexi)
+       $(AM_V_GEN)rm -f $@ $@.tmp
+       $(AM_V_at)touch $@.tmp
+       $(AM_V_at)cd $(top_srcdir)/examples/calc++ && \
+          $(AWK) -f ../extexi -v VERSION="$(VERSION)" \
+            ../../doc/bison.texinfo -- calc++-parser.yy \
+            calc++-scanner.ll calc++.cc calc++-driver.hh calc++-driver.cc
+       $(AM_V_at)mv $@.tmp $@
+
+$(calc_extracted): $(top_srcdir)/examples/calc++/calc.stamp
+
+## ------------------- ##
+## Parser generation.  ##
+## ------------------- ##
+
+BUILT_SOURCES += $(calc_extracted) $(calc_sources_generated)
+CLEANFILES += $(top_srcdir)/examples/calc++/*.output *.tmp
+MAINTAINERCLEANFILES += $(top_srcdir)/examples/calc++/*.stamp $(calc___SOURCES)
+
+# Compile the parser and save cycles.
+# This code comes from "Handling Tools that Produce Many Outputs",
+# from the Automake documentation.
+EXTRA_DIST +=                                  \
+  examples/calc++/calc++-parser.stamp          \
+  examples/calc++/calc++-parser.yy             \
+  examples/calc++/calc.stamp
+# Don't depend on $(BISON) otherwise we would rebuild these files
+# in srcdir, including during distcheck, which is forbidden.
+$(top_srcdir)/examples/calc++/calc++-parser.stamp: $(top_srcdir)/examples/calc++/calc++-parser.yy $(BISON_IN)
+       $(AM_V_GEN)rm -f calc++-parser.tmp
+       $(AM_V_at)touch calc++-parser.tmp
+       $(AM_V_at)$(BISON) -d -ra -o $(top_srcdir)/examples/calc++/calc++-parser.cc \
+         $(top_srcdir)/examples/calc++/calc++-parser.yy
+       $(AM_V_at)mv -f calc++-parser.tmp $@
+
+$(calc_sources_generated): $(top_srcdir)/examples/calc++/calc++-parser.stamp
+       $(AM_V_GEN)if test -f $@; then :; else \
+         rm -f $(top_srcdir)/examples/calc++/calc++-parser.stamp && \
+         $(MAKE) $(AM_MAKEFLAGS) $(top_srcdir)/examples/calc++/calc++-parser.stamp; \
+       fi
+
+
+## --------------------------- ##
+## Building & testing calc++.  ##
+## --------------------------- ##
+
+calc_sources_extracted =                       \
+  examples/calc++/calc++-scanner.ll            \
+  examples/calc++/calc++.cc                    \
+  examples/calc++/calc++-driver.hh             \
+  examples/calc++/calc++-driver.cc
+calc_extracted =                               \
+  $(calc_sources_extracted)                    \
+  examples/calc++/calc++-parser.yy
+calc_sources_generated =                       \
+  examples/calc++/stack.hh                     \
+  examples/calc++/position.hh                  \
+  examples/calc++/location.hh                  \
+  examples/calc++/calc++-parser.hh             \
+  examples/calc++/calc++-parser.cc
+
+if BISON_CXX_WORKS
+check_PROGRAMS = examples/calc++/calc++
+examples_calc___calc___SOURCES =               \
+  $(calc_sources_extracted)                    \
+  $(calc_sources_generated)
+examples_calc___calc___CPPFLAGS = -I$(top_srcdir)/examples/calc++
+TESTS = examples/calc++/test
+endif
+EXTRA_DIST += examples/calc++/test
index 27012239d261b3bce3968626f79a7c84ecf7aece..150f161c8bc2872ffe2b1720bc6ddef14b32fb09 100755 (executable)
@@ -37,7 +37,7 @@ run ()
   shift
   local out_exp=$1
   shift
-  ./calc++ "$@" input >out_eff
+  ./examples/calc++/calc++ "$@" input >out_eff
   local sta_eff=$?
   local out_eff=`cat out_eff`
   if test $sta_eff -eq $sta_exp; then
index 64afdbb817183c17548968dd8e3227873ae81d45..6da395df0ceaa21918f53e6a3901ccf0084de052 100644 (file)
@@ -14,3 +14,5 @@
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 dist_noinst_SCRIPTS = examples/extexi
+
+include examples/calc++/local.mk
index 36c0ac7d47ae9dcbb6f0a698d4f0459b94d54bc5..6959278072ab9f496bcb75f1ba34f62cdc60c476 100644 (file)
 
 AUTOMAKE_OPTIONS = subdir-objects
 
-AM_CPPFLAGS += -I$(top_srcdir)/lib
-# Find builddir/src/scan-code.c etc.
-AM_CPPFLAGS += -I$(top_builddir)
-
 LDADD = lib/libbison.a $(LIBINTL)
 
 # Use our own Bison to build the parser.  Of course, you ought to
 # keep a sane version of Bison nearby...
-BISON = tests/bison
 YACC = $(BISON) -y
 AM_YFLAGS = -dv --warnings=all,error --report=all
 
index 18734f377274045393902e5ca6ac7ecf3c0f3343..5bb587d6f034cd0ae1fb58064497d0f566982e86 100644 (file)
@@ -83,7 +83,7 @@ check-local: tests/atconfig tests/atlocal $(TESTSUITE)
 # Move into tests/ so that testsuite.dir etc. be created there.
        $(RUN_TESTSUITE)
 
-check_SCRIPTS = tests/bison
+check_SCRIPTS = $(BISON)
 
 # Run the test suite on the *installed* tree.
 installcheck-local: