# This Makefile fragment is shared between the coreutils,
# CPPI, Bison, and Autoconf.
-## Copyright (C) 2001-2004 Free Software Foundation, Inc.
+## Copyright (C) 2001-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
##
## 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., 59 Temple Place - Suite 330, Boston, MA
-## 02111-1307, USA.
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301, USA.
# This is reported not to work with make-3.79.1
# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
CVS = cvs
+CVS_LIST = cvsu --find --types=AFGM
+
ifeq ($(origin prev_version_file), undefined)
prev_version_file = .prev-version
endif
sc_changelog \
sc_dd_max_sym_length \
sc_error_exit_success \
+ sc_file_system \
sc_prohibit_atoi_atof \
+ sc_prohibit_jm_in_m4 \
+ sc_root_tests \
sc_space_tab \
sc_sun_os_names \
sc_system_h_headers \
+ sc_tight_scope \
+ sc_trailing_blank \
sc_unmarked_diagnostics
syntax-check: $(syntax-check-rules)
# exit 1; } || :
# FIXME: don't allow `#include .strings\.h' anywhere
-# Look for diagnostics that aren't marked for translation.
-# This won't find any for which error's format string is on a separate line.
-sc_unmarked_diagnostics:
- @grep --exclude=$(srcdir)/src/shred.c -E \
- '\<error \([^"]*"[^"]*[a-z]{3}' $(srcdir)/{lib,src}/*.c \
- | grep -v '_(' && \
- { echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
- exit 1; } || :
-
sc_cast_of_argument_to_free:
@grep -E '\<free \(\(' $(srcdir)/{lib,src}/*.[chly] && \
{ echo '$(ME): don'\''t cast free argument' 1>&2; \
exit 1; } || :
sc_space_tab:
- @( cvsu --list ) > /dev/null 2>&1 || : && \
+ @( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
grep '[ ] ' \
- $$(cvsu --list | grep -vEf .x-$@ ) && \
+ $$($(CVS_LIST) | grep -vEf .x-$@ ) && \
{ echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \
1>&2; exit 1; } || :
# They provide no error checking mechanism.
# Instead, use strto* functions.
sc_prohibit_atoi_atof:
- @( cvsu --list ) > /dev/null 2>&1 || : && \
+ @( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
grep -E '\<(ato[filq]|atoll)\>' \
- $$(cvsu --list | grep -vEf .x-$@ ) && \
+ $$($(CVS_LIST) | grep -vEf .x-$@ ) && \
{ echo '$(ME): do not use atof, atoi, atol, atoll, or atoq' \
1>&2; exit 1; } || :
{ echo '$(ME): found error (EXIT_SUCCESS' 1>&2; \
exit 1; } || :
+sc_file_system:
+ @grep -i 'filesystem' \
+ $$($(CVS_LIST) | grep -vEf .x-$@ ) && \
+ { echo '$(ME): found use of "filesystem";' \
+ 'rewrite to use "file system"' 1>&2; \
+ exit 1; } || :
+
# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
# Each nonempty line must start with a year number, or a TAB.
sc_changelog:
- @grep '^[^12 ]' $$(find . -name ChangeLog -maxdepth 2) && \
+ @grep '^[^12 ]' $$(find . -maxdepth 2 -name ChangeLog) && \
{ echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2; \
exit 1; } || :
exit 1; \
fi
+# Many m4 macros names once began with `jm_'.
+# On 2004-04-13, they were all changed to start with gl_ instead.
+# Make sure that none are inadvertently reintroduced.
+sc_prohibit_jm_in_m4:
+ @( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
+ grep -E 'jm_[A-Z]' \
+ $$($(CVS_LIST) $(srcdir)/m4 |grep '\.m4$$') && \
+ { echo '$(ME): do not use jm_ in m4 macro names' \
+ 1>&2; exit 1; } || :
+
+sc_root_tests:
+ @t1=sc-root.expected; t2=sc-root.actual; \
+ grep -l '^PRIV_CHECK_ARG=require-root' \
+ $$($(CVS_LIST) tests) |sed s,tests,., |sort > $$t1; \
+ sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
+ $(srcdir)/tests/Makefile.am |sort > $$t2; \
+ diff -u $$t1 $$t2 || diff=1; \
+ rm -f $$t1 $$t2; \
+ test "$$diff" \
+ && { echo 'tests/Makefile.am: missing check-root action'>&2; \
+ exit 1; } || :
+
# Create a list of regular expressions matching the names
# of files included from system.h. Exclude a couple.
.re-list:
# the headers already included via system.h.
sc_system_h_headers: .re-list
@if test -f $(srcdir)/src/system.h; then \
- ( cvsu --list ) > /dev/null 2>&1 || exit 0; \
- trap 'rm -f .re-list' 0 1 2 3 15; \
+ ( $(CVS_LIST) ) > /dev/null 2>&1 || exit 0; \
+ trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \
grep -E -f .re-list \
- $$(cvsu --list src | grep -Ev 'system\.h$$') \
+ $$($(CVS_LIST) src | grep -Ev '(copy|system)\.h$$') \
&& { echo '$(ME): the above are already included via system.h'\
1>&2; exit 1; } || :; \
fi
sc_sun_os_names:
- @( cvsu --list ) > /dev/null 2>&1 || : && \
+ @( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
grep -Ei \
'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \
- $$(cvsu --list | grep -vEf .x-$@ ) && \
+ $$($(CVS_LIST) | grep -vEf .x-$@ ) && \
{ echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \
exit 1; } || :
+sc_tight_scope:
+ $(MAKE) -C src $@
+
+sc_trailing_blank:
+ @( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
+ grep '[ ]$$' \
+ $$($(CVS_LIST) | grep -vEf .x-$@ ) && \
+ { echo '$(ME): found trailing blank(s)' \
+ 1>&2; exit 1; } || :
+
+# Look for diagnostics that aren't marked for translation.
+# This won't find any for which error's format string is on a separate line.
+sc_unmarked_diagnostics:
+ @grep -E \
+ '\<error \([^"]*"[^"]*[a-z]{3}' $(srcdir)/{lib,src}/*.c \
+ | grep -v '_(' && \
+ { echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
+ exit 1; } || :
+
# Ensure that date's --help output stays in sync with the info
# documentation for GNU strftime. The only exception is %N,
# which date accepts but GNU strftime does not.
# Verify that all source files using _() are listed in po/POTFILES.in.
# FIXME: don't hard-code src/false.c below; use a more general mechanism.
po-check:
- ( cvsu --list ) > /dev/null 2>&1 || : && \
+ ( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
if test -f po/POTFILES.in; then \
grep -E -v '^(#|$$)' po/POTFILES.in \
| grep -v '^src/false\.c$$' | sort > $@-1; \
files=; \
- for file in $$(cvsu --list lib src | grep '\.[chly]$$'); do \
+ for file in $$($(CVS_LIST) lib src | grep '\.[chly]$$'); do \
case $$file in \
*.[ch]) \
base=`expr " $$file" : ' \(.*\)\..'`; \
done; \
test "$$fail" && exit 1 || :
-v_etc_file = lib/version-etc.c
+v_etc_file = lib/version-etc-fsf.c
# Make sure that the copyright date in $(v_etc_file) is up to date.
copyright-check:
@if test -f $(v_etc_file); then \
# Detect format-string/arg-list mismatches that would normally be obscured
# by the use of _(). The --disable-nls effectively defines away that macro,
# and building with CFLAGS='-Wformat -Werror' causes any format warning to be
-# treated as a failure.
+# treated as a failure. Also, check for shadowing problems with -Wshadow.
+# These CFLAGS are pretty strict. If you build this target, you probably
+# have to have a recent version of gcc and glibc headers.
TMPDIR ?= /tmp
t=$(TMPDIR)/$(PACKAGE)/test
my-distcheck: $(local-check)
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
cd $(t)/$(distdir) \
&& ./configure --disable-nls \
- && $(MAKE) CFLAGS='-Wformat -Werror' \
+ && $(MAKE) CFLAGS='-Werror -Wall -Wformat -Wshadow' \
AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \
&& $(MAKE) dvi \
&& $(MAKE) check \
# with each of the files that belongs to some other package and is
# regularly updated from the specified URL.
wget_files ?= \
- $(srcdir)/config/config.guess \
- $(srcdir)/config/config.sub \
- $(srcdir)/config/texinfo.tex \
+ $(srcdir)/build-aux/config.guess \
+ $(srcdir)/build-aux/config.sub \
+ $(srcdir)/build-aux/texinfo.tex \
$(srcdir)/src/ansi2knr.c
get-targets = $(patsubst %, get-%, $(wget_files))
-config.guess-url_prefix = $(ftp-gnu)/config/
-config.sub-url_prefix = $(ftp-gnu)/config/
+config.guess-url_prefix = $(ftp-gnu)/build-aux/
+config.sub-url_prefix = $(ftp-gnu)/build-aux/
ansi2knr.c-url_prefix = ftp://ftp.cs.wisc.edu/ghost/
&& $(move_if_change) $(target).t $(target)
cvs_files ?= \
- $(srcdir)/config/depcomp \
- $(srcdir)/config/install-sh \
- $(srcdir)/config/missing \
- $(srcdir)/config/mkinstalldirs \
+ $(srcdir)/build-aux/depcomp \
+ $(srcdir)/build-aux/install-sh \
+ $(srcdir)/build-aux/missing \
+ $(srcdir)/build-aux/mkinstalldirs \
$(srcdir)/src/ansi2knr.c
automake_repo=:pserver:anoncvs:anoncvs@sources.redhat.com:/cvs/automake
.PHONY: wget-update
@echo =====================================
@echo =====================================
@echo "$(srcdir)/gnupload $(GNUPLOADFLAGS) \\"
- @echo " --to fetish.sf.net:fetish-ftp \\"
@echo " --to $(gnu_rel_host):coreutils \\"
@echo " $(rel-files)"
@echo '# send the /tmp/announcement e-mail'