X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/040984073a54b4c603172be3c3f44b908ea5deb9..6fc0c02473f49a8799abd11d8a66e06a371529d7:/Makefile.maint?ds=sidebyside diff --git a/Makefile.maint b/Makefile.maint index 8656fbba..3a225318 100644 --- a/Makefile.maint +++ b/Makefile.maint @@ -2,7 +2,7 @@ # This Makefile fragment is shared between the coreutils, # CPPI, Bison, and Autoconf. -## Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +## Copyright (C) 2001-2006 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 @@ -34,15 +34,19 @@ GZIP_ENV = \ CVS = cvs +# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/ CVS_LIST = sh -c ' \ - (cvsu --find --types=AFGM $$*) 2>/dev/null || \ - awk -F/ '\''{ \ - if (!$$1 && $$3 !~ /^-/) { \ - f=FILENAME; \ - sub(/CVS\/Entries/, "", f); \ - print f $$2; \ - }}'\'' \ - $$(find $${*-*} -name Entries -print) /dev/null \ + if test -x $(srcdir)/build-aux/cvsu; then \ + $(srcdir)/build-aux/cvsu --find --types=AFGM $$*; \ + else \ + awk -F/ '\''{ \ + if (!$$1 && $$3 !~ /^-/) { \ + f=FILENAME; \ + sub(/CVS\/Entries/, "", f); \ + print f $$2; \ + }}'\'' \ + $$(find $${*-*} -name Entries -print) /dev/null; \ + fi \ ' dummy CVS_LIST_EXCEPT = \ @@ -53,6 +57,7 @@ ifeq ($(origin prev_version_file), undefined) endif PREV_VERSION := $(shell cat $(prev_version_file)) +VERSION_REGEXP = $(subst .,\.,$(VERSION)) tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]') tag-this-version = $(subst .,_,$(VERSION)) @@ -73,6 +78,10 @@ export LC_ALL = C ## Sanity checks. ## ## --------------- ## +# FIXME: add a check to prohibit definition in src/*.c of symbols defined +# in system.h. E.g. today I removed from tail.c a useless definition of +# ENOSYS. It was useless because system.h ensures it's defined. + # Checks that don't require cvs. # Run `changelog-check' last, as previous test may reveal problems requiring # new ChangeLog entries. @@ -93,16 +102,20 @@ syntax-check-rules = \ sc_dd_max_sym_length \ sc_error_exit_success \ sc_file_system \ + sc_no_if_have_config_h \ sc_obsolete_symbols \ sc_prohibit_atoi_atof \ sc_prohibit_jm_in_m4 \ + sc_prohibit_assert_without_use \ + sc_require_config_h \ sc_root_tests \ sc_space_tab \ sc_sun_os_names \ sc_system_h_headers \ sc_tight_scope \ - sc_trailing_space \ - sc_unmarked_diagnostics + sc_trailing_blank \ + sc_unmarked_diagnostics \ + sc_useless_cpp_parens syntax-check: $(syntax-check-rules) # @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \ @@ -135,8 +148,7 @@ sc_cast_of_alloca_return_value: exit 1; } || : sc_space_tab: - @grep -n '[ ] ' \ - $$($(CVS_LIST_EXCEPT)) && \ + @grep -n '[ ] ' $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \ 1>&2; exit 1; } || : @@ -144,8 +156,7 @@ sc_space_tab: # They provide no error checking mechanism. # Instead, use strto* functions. sc_prohibit_atoi_atof: - @grep -nE '\<(ato[filq]|ato''ll)\>' \ - $$($(CVS_LIST_EXCEPT)) && \ + @grep -nE '\<(ato[filq]|ato''ll)\>' $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q' \ 1>&2; exit 1; } || : @@ -158,16 +169,37 @@ sc_error_exit_success: exit 1; } || : sc_file_system: - @grep -ni 'file''system' \ - $$($(CVS_LIST_EXCEPT)) && \ + @grep -ni 'file''system' $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found use of "file''system";' \ 'rewrite to use "file system"' 1>&2; \ exit 1; } || : +sc_no_if_have_config_h: + @grep -n '^# *if HAVE_CONFIG_H' $$($(CVS_LIST_EXCEPT)) && \ + { echo '$(ME): found use of #if HAVE_CONFIG_H; use #ifdef' \ + 1>&2; exit 1; } || : + +# Nearly all .c files must include . +sc_require_config_h: + @grep -L '^# *include ' \ + $$($(CVS_LIST_EXCEPT) | grep '\.c$$') \ + | grep . && \ + { echo '$(ME): the above files do not include ' \ + 1>&2; exit 1; } || : + +# Prohibit the inclusion of assert.h without an actual use of assert. +sc_prohibit_assert_without_use: + @files=$$(grep -l '# *include ' \ + $$($(CVS_LIST_EXCEPT) | grep '\.c$$')) && \ + grep -L '\ but don't use it" \ + 1>&2; exit 1; } || : + sc_obsolete_symbols: - @grep -nE '\<(HAVE_''FCNTL_H)\>' \ + @grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \ $$($(CVS_LIST_EXCEPT)) && \ - { echo '$(ME): do not use HAVE_''FCNTL_H' \ + { echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY' \ 1>&2; exit 1; } || : # FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ @@ -183,10 +215,11 @@ sc_changelog: dd_c = $(srcdir)/src/dd.c sc_dd_max_sym_length: ifneq ($(wildcard $(dd_c)),) - @len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c);\ + @test -f $(dd_c) || exit 0; \ + len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c); \ sed -n '/flags\[\] =$$/,/^};/p' $(dd_c) ) \ |sed -n '/"/s/^[^"]*"\([^"]*\)".*/\1/p' \ - | wc --max-line-length); \ + | wc --max-line-length); \ max=$$(sed -n '/^#define LONGEST_SYMBOL /s///p' $(dd_c) \ |tr -d '"' | wc --max-line-length); \ if test "$$len" = "$$max"; then :; else \ @@ -228,7 +261,7 @@ sc_root_tests: # Files in src/ should not include directly any of # the headers already included via system.h. sc_system_h_headers: .re-list - if test -f $(srcdir)/src/system.h; then \ + @if test -f $(srcdir)/src/system.h; then \ trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \ grep -nE -f .re-list \ $$($(CVS_LIST) src | \ @@ -240,28 +273,34 @@ sc_system_h_headers: .re-list sc_sun_os_names: @grep -nEi \ 'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \ - $$($(CVS_LIST_EXCEPT)) && \ + $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \ exit 1; } || : sc_tight_scope: $(MAKE) -C src $@ -sc_trailing_space: - @grep -n '[ ]$$' \ - $$($(CVS_LIST_EXCEPT)) && \ - { echo '$(ME): found trailing space(s)' \ +sc_trailing_blank: + @grep -n '[ ]$$' $$($(CVS_LIST_EXCEPT)) && \ + { 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 -nE \ - '\&2; \ exit 1; } || : +# Avoid useless parentheses like those in this example: +# #if defined (SYMBOL) || defined (SYM2) +sc_useless_cpp_parens: + @grep -n '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \ + { echo '$(ME): found useless parentheses in cpp directive' \ + 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. @@ -286,15 +325,17 @@ makefile-check: news-date-check: NEWS today=`date +%Y-%m-%d`; \ - if head NEWS | grep '^\*.*'$$today >/dev/null; then \ + if head NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \ + >/dev/null; then \ :; \ else \ - echo "today's date is not in NEWS" 1>&2; \ + echo "version or today's date is not in NEWS" 1>&2; \ exit 1; \ fi changelog-check: - if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \ + if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$' \ + >/dev/null; then \ :; \ else \ echo "$(VERSION) not in ChangeLog" 1>&2; \ @@ -302,7 +343,7 @@ changelog-check: fi m4-check: - @grep 'AC_DEFUN([^[]' m4/*.m4 \ + @grep -n 'AC_DEFUN([^[]' m4/*.m4 \ && { echo 'Makefile.maint: quote the first arg to AC_DEFUN' 1>&2; \ exit 1; } || : @@ -363,7 +404,7 @@ v_etc_file = lib/version-etc.c # Make sure that the copyright date in $(v_etc_file) is up to date. copyright-check: @if test -f $(v_etc_file); then \ - grep 'enum { COPYRIGHT_YEAR = 2005 };' $(v_etc_file) \ + grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \ >/dev/null \ || { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \ exit 1; }; \ @@ -419,7 +460,7 @@ null_AM_MAKEFLAGS = \ # have to have a recent version of gcc and glibc headers. TMPDIR ?= /tmp t=$(TMPDIR)/$(PACKAGE)/test -my-distcheck: $(local-check) +my-distcheck: $(local-check) $(release_archive_dir)/$(prev-tgz) -rm -rf $(t) mkdir -p $(t) GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz @@ -471,6 +512,7 @@ announcement: NEWS ChangeLog $(rel-files) --prev=$(PREV_VERSION) \ --curr=$(VERSION) \ --release-archive-directory=$(release_archive_dir) \ + --gpg-key-id=$(gpg_key_ID) \ --news=NEWS \ $(addprefix --url-dir=, $(url_dir_list)) \