mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
calc++: don't rely on Automake to compile a C++ parser.
Basically, revert commit 609b3d8096,
Automake 1.11.3 is not safe enough for C++ parser.
* examples/calc++/calc++-parser.hh: Remove.
* examples/calc++/local.mk (examples/calc++/calc++-parser.stamp):
New.
examples: factor the extractions into a single step
extexi had to be run in the extraction directory. Now, it can be
given the files with expected output directory. This allows to
use $(*_extracted) variables (before we had to list again their
members, but limited to their base names). In turn, this also
allows fusing the extraction recipes into a single one.
Also, it is currently too hard (or requires too much duplication,
since Make wants all the occurrences of the files to be prefixed with
$(srcdir)/, which is something Automake cannot support for *_SOURCES)
to work in the source tree. So extract, and compile scanners and parsers
in the build tree.
* examples/extexi (basename): New.
(BEGIN): Now "file_wanted" maps base name to extracted file name.
* examples/calc++/local.mk, examples/mfcalc/local.mk,
* examples/rpcalc/local.mk: Fuse extraction rules into...
* examples/local.mk: Here.
(extract, extracted): New.
86 lines
3.0 KiB
Makefile
86 lines
3.0 KiB
Makefile
## 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/>.
|
|
|
|
## ------------------- ##
|
|
## Parser generation. ##
|
|
## ------------------- ##
|
|
|
|
CLEANFILES += $(top_srcdir)/examples/calc++/*.output *.tmp
|
|
MAINTAINERCLEANFILES += 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.
|
|
examples/calc++/calc++-parser.stamp: examples/calc++/calc++-parser.yy $(BISON_IN)
|
|
$(AM_V_YACC)rm -f $@
|
|
$(AM_V_at)touch $@.tmp
|
|
$(AM_V_at)$(YACCCOMPILE) -o examples/calc++/calc++-parser.cc \
|
|
examples/calc++/calc++-parser.yy
|
|
$(AM_V_at)mv -f $@.tmp $@
|
|
|
|
$(calc_sources_generated): examples/calc++/calc++-parser.stamp
|
|
@test -f $@ || rm -f examples/calc++/calc++-parser.stamp
|
|
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) examples/calc++/calc++-parser.stamp
|
|
|
|
|
|
## -------------------- ##
|
|
## Building & testing. ##
|
|
## -------------------- ##
|
|
|
|
# Avoid using BUILT_SOURCES which is too global.
|
|
$(examples_calc___calc___OBJECTS): $(calc_sources_generated)
|
|
CLEANFILES += *.tmp
|
|
MAINTAINERCLEANFILES += $(calc_sources)
|
|
|
|
calc_sources_extracted = \
|
|
examples/calc++/calc++-driver.cc \
|
|
examples/calc++/calc++-driver.hh \
|
|
examples/calc++/calc++-scanner.ll \
|
|
examples/calc++/calc++.cc
|
|
calc_extracted = \
|
|
$(calc_sources_extracted) \
|
|
examples/calc++/calc++-parser.yy
|
|
extracted += $(calc_extracted)
|
|
calc_sources_generated = \
|
|
examples/calc++/calc++-parser.cc \
|
|
examples/calc++/calc++-parser.hh \
|
|
examples/calc++/location.hh \
|
|
examples/calc++/position.hh \
|
|
examples/calc++/stack.hh
|
|
calc_sources = \
|
|
$(calc_sources_extracted) \
|
|
$(calc_sources_generated)
|
|
if BISON_CXX_WORKS
|
|
check_PROGRAMS += examples/calc++/calc++
|
|
examples_calc___calc___SOURCES = \
|
|
$(calc_sources)
|
|
|
|
examples_calc___calc___CPPFLAGS = \
|
|
-I$(top_builddir)/examples/calc++ \
|
|
-I$(top_srcdir)/examples/calc++
|
|
TESTS += examples/calc++/calc++.test
|
|
endif
|
|
EXTRA_DIST += \
|
|
examples/calc++/calc++-parser.yy \
|
|
examples/calc++/calc++.test
|