Remove src/Makefile.am.

* src/Makefile.am: Rename as...
	* src/local.mk: this.
	Prefix all the paths with src/.
	(AUTOMAKE_OPTIONS): Build object files in the sub dirs.
	(AM_CPPFLAGS): Find find in builddir/src.
	(YACC): Move the flags into...
	(AM_YFLAGS): here.
	* maint.mk (sc_tight_scope): Disable.
	It used to bounce to the version in src/Makefile.am which is now
	part of this very Makefile.
	* Makefile.am, configure.ac: Adjust.
	* src/scan-code-c.c, src/scan-code.l: We can no longer rely on
	include "..." to find files "here": we are no longer in src/, so
	qualify the includes with src/.
	* doc/Makefile.am (PREPATH): No longer include the top_builddir
	prefix.
	(.x.1): Adjust to be able to create src/foo from the top level
	Makefile, instead of going bounce to src/Makefile the creation of
	foo.
This commit is contained in:
Akim Demaille
2008-09-23 15:54:56 +02:00
parent 5277c0a304
commit 0305d25eb0
13 changed files with 229 additions and 162 deletions

View File

@@ -1,3 +1,26 @@
2008-11-15 Akim Demaille <demaille@gostai.com>
Remove src/Makefile.am.
* src/Makefile.am: Rename as...
* src/local.mk: this.
Prefix all the paths with src/.
(AUTOMAKE_OPTIONS): Build object files in the sub dirs.
(AM_CPPFLAGS): Find find in builddir/src.
(YACC): Move the flags into...
(AM_YFLAGS): here.
* maint.mk (sc_tight_scope): Disable.
It used to bounce to the version in src/Makefile.am which is now
part of this very Makefile.
* Makefile.am, configure.ac: Adjust.
* src/scan-code-c.c, src/scan-code.l: We can no longer rely on
include "..." to find files "here": we are no longer in src/, so
qualify the includes with src/.
* doc/Makefile.am (PREPATH): No longer include the top_builddir
prefix.
(.x.1): Adjust to be able to create src/foo from the top level
Makefile, instead of going bounce to src/Makefile the creation of
foo.
2008-11-15 Akim Demaille <demaille@gostai.com> 2008-11-15 Akim Demaille <demaille@gostai.com>
Remove useless variable. Remove useless variable.

View File

@@ -17,7 +17,7 @@
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
SUBDIRS = po runtime-po lib src doc tests SUBDIRS = po runtime-po lib . doc tests
if BISON_CXX_WORKS if BISON_CXX_WORKS
SUBDIRS += examples/calc++ SUBDIRS += examples/calc++
endif endif
@@ -33,10 +33,13 @@ EXTRA_DIST = .prev-version .version cfg.mk maint.mk \
djgpp/subpipe.c djgpp/subpipe.h djgpp/djunpack.bat \ djgpp/subpipe.c djgpp/subpipe.h djgpp/djunpack.bat \
djgpp/fnchange.lst djgpp/testsuite.sed djgpp/fnchange.lst djgpp/testsuite.sed
# Initialization before completion by local.mk's.
BUILT_SOURCES =
include build-aux/local.mk include build-aux/local.mk
include data/local.mk include data/local.mk
include etc/local.mk include etc/local.mk
include examples/local.mk include examples/local.mk
include src/local.mk
.PHONY: maintainer-check .PHONY: maintainer-check
maintainer-check: maintainer-check:
@@ -59,7 +62,7 @@ maintainer-xml-check:
# a developer might naively reference .version in a test case while the bison # a developer might naively reference .version in a test case while the bison
# executable still compiles with VERSION, and so the test case might fail or # executable still compiles with VERSION, and so the test case might fail or
# pass incorrectly. # pass incorrectly.
BUILT_SOURCES = $(top_srcdir)/.version BUILT_SOURCES += $(top_srcdir)/.version
$(top_srcdir)/.version: configure $(top_srcdir)/.version: configure
echo $(VERSION) > $@-t && mv $@-t $@ echo $(VERSION) > $@-t && mv $@-t $@
dist-hook: dist-hook:

View File

@@ -79,7 +79,7 @@ AC_ARG_ENABLE([yacc],
, [enable_yacc=yes]) , [enable_yacc=yes])
case $enable_yacc in case $enable_yacc in
yes) yes)
YACC_SCRIPT=yacc YACC_SCRIPT=src/yacc
YACC_LIBRARY=liby.a;; YACC_LIBRARY=liby.a;;
*) *)
YACC_SCRIPT= YACC_SCRIPT=
@@ -151,7 +151,7 @@ gt_JAVAEXEC
AC_CONFIG_FILES([Makefile AC_CONFIG_FILES([Makefile
po/Makefile.in po/Makefile.in
examples/calc++/Makefile examples/calc++/Makefile
lib/Makefile src/Makefile lib/Makefile
doc/Makefile doc/Makefile
doc/yacc.1]) doc/yacc.1])
AC_OUTPUT AC_OUTPUT

View File

@@ -66,28 +66,30 @@ MOSTLYCLEANFILES = $(srcdir)/*.t
SUFFIXES = .x .1 SUFFIXES = .x .1
PREPATH = $(top_builddir)/src PREPATH = src
.x.1: .x.1:
@program=`expr "/$*" : '.*/\(.*\)'` && \ @program=`expr "/$*" : '.*/\(.*\)'` && \
save_IFS=$IFS; \ save_IFS=$IFS; \
IFS=$(PATH_SEPARATOR); \ IFS=$(PATH_SEPARATOR); \
for dir in $(PREPATH); do \ for dir in $(PREPATH); do \
IFS=$save_IFS; \ IFS=$save_IFS; \
echo cd $$dir '&&' $(MAKE) $(AM_MAKEFLAGS) $$program && \ echo cd $(top_builddir) '&&' \
(cd $$dir && $(MAKE) $(AM_MAKEFLAGS) $$program) || exit; \ $(MAKE) $(AM_MAKEFLAGS) $$dir/$$program && \
(cd $(top_builddir) && \
$(MAKE) $(AM_MAKEFLAGS) $$dir/$$program) || exit; \
done done
@echo "Updating man page $@" @echo "Updating man page $@"
PATH="$(PREPATH)$(PATH_SEPARATOR)$$PATH"; \ PATH="$(top_builddir)/$(PREPATH)$(PATH_SEPARATOR)$$PATH"; \
export PATH; \ export PATH; \
$(HELP2MAN) \ $(HELP2MAN) \
--include=$*.x \ --include=$*.x \
--include=$(srcdir)/common.x \ --include=$(srcdir)/common.x \
--output=$@.t `echo '$*' | sed 's,.*/,,'` --output=$@.t `echo '$*' | sed 's,.*/,,'`
if $(remove_time_stamp) $@ >$@a.t 2>/dev/null && \ if $(remove_time_stamp) $@ >$@a.t 2>/dev/null && \
$(remove_time_stamp) $@.t | cmp $@a.t - >/dev/null 2>&1; then \ $(remove_time_stamp) $@.t | cmp $@a.t - >/dev/null 2>&1; then \
touch $@; \ touch $@; \
else \ else \
mv $@.t $@; \ mv $@.t $@; \
fi fi
rm -f $@*.t rm -f $@*.t

View File

@@ -404,8 +404,8 @@ sc_the_the:
{ echo '$(ME): found use of "the ''the";' 1>&2; \ { echo '$(ME): found use of "the ''the";' 1>&2; \
exit 1; } || : exit 1; } || :
sc_tight_scope: #sc_tight_scope:
$(MAKE) -C src $@ # $(MAKE) -C src $@
sc_trailing_blank: sc_trailing_blank:
@grep -n '[ ]$$' $$($(VC_LIST_EXCEPT)) && \ @grep -n '[ ]$$' $$($(VC_LIST_EXCEPT)) && \

View File

@@ -1,115 +0,0 @@
# Make bison/src.
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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/>.
AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
AM_CPPFLAGS = -I$(top_srcdir)/lib
AM_YFLAGS = "-dv"
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...
YACC = ../tests/bison -y --warnings=all,error --report=all
bin_PROGRAMS = bison
bin_SCRIPTS = $(YACC_SCRIPT)
EXTRA_SCRIPTS = yacc
bison_SOURCES = \
LR0.c LR0.h \
assoc.c assoc.h \
closure.c closure.h \
complain.c complain.h \
conflicts.c conflicts.h \
derives.c derives.h \
files.c files.h \
flex-scanner.h \
getargs.c getargs.h \
gram.c gram.h \
lalr.h lalr.c \
location.c location.h \
main.c \
muscle_tab.c muscle_tab.h \
nullable.c nullable.h \
output.c output.h \
parse-gram.h parse-gram.y \
print.c print.h \
print_graph.c print_graph.h \
print-xml.c print-xml.h \
reader.c reader.h \
reduce.c reduce.h \
relation.c relation.h \
scan-code.h scan-code-c.c \
scan-gram.h scan-gram-c.c \
scan-skel.h scan-skel-c.c \
state.c state.h \
symlist.c symlist.h \
symtab.c symtab.h \
system.h \
tables.h tables.c \
uniqstr.c uniqstr.h \
graphviz.c graphviz.h
EXTRA_bison_SOURCES = scan-code.l scan-skel.l scan-gram.l
BUILT_SOURCES = \
parse-gram.c parse-gram.h \
scan-code.c \
scan-skel.c \
scan-gram.c
MOSTLYCLEANFILES = yacc
yacc:
echo '#! /bin/sh' >$@
echo "exec '$(bindir)/bison' -y "'"$$@"' >>$@
chmod a+x $@
echo:
echo $(bison_SOURCES) $(noinst_HEADERS)
# The following rule is not designed to be portable,
# and relies on tools that not everyone has.
# Most functions in src/*.c should have static scope.
# Any that don't must be marked with `extern', but `main'
# and `usage' are exceptions. They're always extern, but
# don't need to be marked.
#
# The second nm|grep checks for file-scope variables with `extern' scope.
sc_tight_scope: $(all_programs)
@t=exceptions-$$$$; \
trap 's=$$?; rm -f $$t; exit $$s' 0 1 2 13 15; \
( printf '^main$$\n^usage$$\n'; \
grep -h -A1 '^extern .*[^;]$$' $(SOURCES) \
| grep -vE '^(extern |--)' |sed 's/^/^/;s/ .*/$$/' ) > $$t; \
if nm -e *.$(OBJEXT) \
| sed -n 's/.* T //p' \
| grep -Ev -f $$t; then \
echo 'the above functions should have static scope' 1>&2; \
exit 1; \
fi; \
( printf '^program_name$$\n'; \
sed -n 's/^extern .*[* ]\([a-zA-Z_][a-zA-Z_0-9]*\);$$/^\1$$/p' \
$$(ls $(SOURCES) | grep '\.h$$') /dev/null) > $$t; \
if nm -e *.$(OBJEXT) \
| sed -n 's/.* [BD] //p' \
| grep -Ev -f $$t; then \
echo 'the above variables should have static scope' 1>&2; \
exit 1; \
fi

154
src/local.mk Normal file
View File

@@ -0,0 +1,154 @@
## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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/>.
AUTOMAKE_OPTIONS = subdir-objects
AM_CPPFLAGS = -I$(top_srcdir)/lib
# Find builddir/src/scan-code.c etc.
AM_CPPFLAGS += -I$(top_builddir)
AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
LDADD = $(top_builddir)/lib/libbison.a $(LIBINTL)
# Use our own Bison to build the parser. Of course, you ought to
# keep a sane version of Bison nearby...
YACC = $(top_builddir)/tests/bison -y
AM_YFLAGS = -dv --warnings=all,error --report=all
bin_PROGRAMS = src/bison
bin_SCRIPTS = $(YACC_SCRIPT)
EXTRA_SCRIPTS = src/yacc
src_bison_SOURCES = \
src/LR0.c \
src/LR0.h \
src/assoc.c \
src/assoc.h \
src/closure.c \
src/closure.h \
src/complain.c \
src/complain.h \
src/conflicts.c \
src/conflicts.h \
src/derives.c \
src/derives.h \
src/files.c \
src/files.h \
src/flex-scanner.h \
src/getargs.c \
src/getargs.h \
src/gram.c \
src/gram.h \
src/graphviz.c \
src/graphviz.h \
src/lalr.c \
src/lalr.h \
src/location.c \
src/location.h \
src/main.c \
src/muscle_tab.c \
src/muscle_tab.h \
src/nullable.c \
src/nullable.h \
src/output.c \
src/output.h \
src/parse-gram.h \
src/parse-gram.y \
src/print-xml.c \
src/print-xml.h \
src/print.c \
src/print.h \
src/print_graph.c \
src/print_graph.h \
src/reader.c \
src/reader.h \
src/reduce.c \
src/reduce.h \
src/relation.c \
src/relation.h \
src/scan-code-c.c \
src/scan-code.h \
src/scan-gram-c.c \
src/scan-gram.h \
src/scan-skel-c.c \
src/scan-skel.h \
src/state.c \
src/state.h \
src/symlist.c \
src/symlist.h \
src/symtab.c \
src/symtab.h \
src/system.h \
src/tables.c \
src/tables.h \
src/uniqstr.c \
src/uniqstr.h
EXTRA_src_bison_SOURCES = \
src/scan-code.l \
src/scan-gram.l \
src/scan-skel.l
BUILT_SOURCES += \
src/parse-gram.c \
src/parse-gram.h \
src/scan-code.c \
src/scan-gram.c \
src/scan-skel.c
MOSTLYCLEANFILES = src/yacc
src/yacc:
rm -f $@ $@.tmp
echo '#! /bin/sh' >$@.tmp
echo "exec '$(bindir)/bison' -y "'"$$@"' >>$@.tmp
chmod a+x $@.tmp
mv $@.tmp $@
echo:
echo $(src_bison_SOURCES) $(noinst_HEADERS)
# The following rule is not designed to be portable,
# and relies on tools that not everyone has.
# Most functions in src/*.c should have static scope.
# Any that don't must be marked with `extern', but `main'
# and `usage' are exceptions. They're always extern, but
# don't need to be marked.
#
# The second nm|grep checks for file-scope variables with `extern' scope.
sc_tight_scope: $(all_programs)
@t=exceptions-$$$$; \
trap 's=$$?; rm -f $$t; exit $$s' 0 1 2 13 15; \
( printf '^main$$\n^usage$$\n'; \
grep -h -A1 '^extern .*[^;]$$' $(SOURCES) \
| grep -vE '^(extern |--)' |sed 's/^/^/;s/ .*/$$/' ) > $$t; \
if nm -e *.$(OBJEXT) \
| sed -n 's/.* T //p' \
| grep -Ev -f $$t; then \
echo 'the above functions should have static scope' 1>&2; \
exit 1; \
fi; \
( printf '^program_name$$\n'; \
sed -n 's/^extern .*[* ]\([a-zA-Z_][a-zA-Z_0-9]*\);$$/^\1$$/p' \
$$(ls $(SOURCES) | grep '\.h$$') /dev/null) > $$t; \
if nm -e *.$(OBJEXT) \
| sed -n 's/.* [BD] //p' \
| grep -Ev -f $$t; then \
echo 'the above variables should have static scope' 1>&2; \
exit 1; \
fi

View File

@@ -1,3 +1,3 @@
#include <config.h> #include <config.h>
#include "system.h" #include "system.h"
#include "scan-code.c" #include "src/scan-code.c"

View File

@@ -27,16 +27,16 @@
#define code_wrap() 1 #define code_wrap() 1
#define FLEX_PREFIX(Id) code_ ## Id #define FLEX_PREFIX(Id) code_ ## Id
#include "flex-scanner.h" #include <src/flex-scanner.h>
#include "complain.h" #include <src/complain.h>
#include "reader.h" #include <src/reader.h>
#include "getargs.h" #include <src/getargs.h>
#include <get-errno.h> #include <get-errno.h>
#include <quote.h> #include <quote.h>
#include "scan-code.h" #include <src/scan-code.h>
#include "symlist.h" #include <src/symlist.h>
/* The current calling start condition: SC_RULE_ACTION or /* The current calling start condition: SC_RULE_ACTION or
SC_SYMBOL_ACTION. */ SC_SYMBOL_ACTION. */

View File

@@ -1,3 +1,3 @@
#include <config.h> #include <config.h>
#include "system.h" #include "system.h"
#include "scan-gram.c" #include "src/scan-gram.c"

View File

@@ -28,19 +28,19 @@
#define gram_wrap() 1 #define gram_wrap() 1
#define FLEX_PREFIX(Id) gram_ ## Id #define FLEX_PREFIX(Id) gram_ ## Id
#include "flex-scanner.h" #include <src/flex-scanner.h>
#include "complain.h" #include <src/complain.h>
#include "files.h" #include <src/files.h>
#include "gram.h" #include <src/gram.h>
#include "quotearg.h" #include <quotearg.h>
#include "reader.h" #include <src/reader.h>
#include "uniqstr.h" #include <src/uniqstr.h>
#include <mbswidth.h> #include <mbswidth.h>
#include <quote.h> #include <quote.h>
#include "scan-gram.h" #include <src/scan-gram.h>
#define YY_DECL GRAM_LEX_DECL #define YY_DECL GRAM_LEX_DECL

View File

@@ -1,3 +1,3 @@
#include <config.h> #include <config.h>
#include "system.h" #include "system.h"
#include "scan-skel.c" #include "src/scan-skel.c"

View File

@@ -1,6 +1,6 @@
/* Scan Bison Skeletons. -*- C -*- /* Scan Bison Skeletons. -*- C -*-
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
Foundation, Inc. Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -28,16 +28,16 @@
#define skel_wrap() 1 #define skel_wrap() 1
#define FLEX_PREFIX(Id) skel_ ## Id #define FLEX_PREFIX(Id) skel_ ## Id
#include "flex-scanner.h" #include <src/flex-scanner.h>
#include <dirname.h> #include <dirname.h>
#include <error.h> #include <error.h>
#include <quotearg.h> #include <quotearg.h>
#include "complain.h" #include <src/complain.h>
#include "getargs.h" #include <src/getargs.h>
#include "files.h" #include <src/files.h>
#include "scan-skel.h" #include <src/scan-skel.h>
#define YY_DECL static int skel_lex (void) #define YY_DECL static int skel_lex (void)
YY_DECL; YY_DECL;