X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/cc14efa5bca9aebd1eaa23ac623d3bcc4cda6b02..203b9274149813e3ad763f1b800c83dcff07237f:/Makefile.maint diff --git a/Makefile.maint b/Makefile.maint index a43a6c73..9bae6be6 100644 --- a/Makefile.maint +++ b/Makefile.maint @@ -25,12 +25,9 @@ ME := Makefile.maint # Do not save the original name or timestamp in the .tar.gz file. # Use --rsyncable if available. -GZIP_ENV = \ - "--no-name --best$$( \ - case $$(gzip --help) in \ - (*--rsyncable*) echo ' --rsyncable';; \ - esac \ - )" +gzip_rsyncable = \ + (gzip --help|grep rsyncable) >/dev/null 2>&1 && echo --rsyncable +GZIP_ENV = "--no-name --best `$(gzip_rsyncable)`" CVS = cvs @@ -87,7 +84,8 @@ export LC_ALL = C # new ChangeLog entries. local-checks-available = \ po-check copyright-check writable-files m4-check author_mark_check \ - changelog-check strftime-check syntax-check makefile_path_separator_check \ + changelog-check strftime-check $(syntax-check-rules) \ + makefile_path_separator_check \ makefile-check .PHONY: $(local-checks-available) @@ -113,7 +111,8 @@ syntax-check-rules = \ sc_sun_os_names \ sc_system_h_headers \ sc_tight_scope \ - sc_trailing_space \ + sc_trailing_blank \ + sc_two_space_separator_in_usage \ sc_unmarked_diagnostics \ sc_useless_cpp_parens @@ -156,7 +155,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 '\' $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q' \ 1>&2; exit 1; } || : @@ -174,10 +173,32 @@ sc_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|O_NDELAY)\>' \ + @grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \ $$($(CVS_LIST_EXCEPT)) && \ - { echo '$(ME): do not use HAVE_FCNTL_H or O_NDELAY' \ + { 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 @@ -193,11 +214,10 @@ sc_changelog: dd_c = $(srcdir)/src/dd.c sc_dd_max_sym_length: ifneq ($(wildcard $(dd_c)),) - @test -f $(dd_c) || exit 0; \ - len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c); \ + @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 \ @@ -239,7 +259,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 | \ @@ -258,9 +278,16 @@ sc_sun_os_names: sc_tight_scope: $(MAKE) -C src $@ -sc_trailing_space: +sc_trailing_blank: @grep -n '[ ]$$' $$($(CVS_LIST_EXCEPT)) && \ - { echo '$(ME): found trailing space(s)' \ + { echo '$(ME): found trailing blank(s)' \ + 1>&2; exit 1; } || : + +sc_two_space_separator_in_usage: + @grep -n '^ *--[a-z][0-9A-Za-z-]* [^ ].*\\$$' \ + $$($(CVS_LIST_EXCEPT)) && \ + { echo "$(ME): help2man requires at least two spaces between"; \ + echo "$(ME): an option and its description"; \ 1>&2; exit 1; } || : # Look for diagnostics that aren't marked for translation. @@ -268,14 +295,14 @@ sc_trailing_space: 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 '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \ + @grep -n '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found useless parentheses in cpp directive' \ 1>&2; exit 1; } || : @@ -312,7 +339,7 @@ news-date-check: NEWS fi changelog-check: - if grep 'Version $(VERSION_REGEXP)\.$$' ChangeLog \ + if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$' \ >/dev/null; then \ :; \ else \ @@ -321,18 +348,21 @@ 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; } || : # 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. +# FIXME: don't hard-code file names below; use a more general mechanism. po-check: if test -f po/POTFILES.in; then \ grep -E -v '^(#|$$)' po/POTFILES.in \ | grep -v '^src/false\.c$$' | sort > $@-1; \ files=; \ - for file in lib/*.[chly] src/*.[chly]; do \ + for file in $$($(CVS_LIST_EXCEPT)) lib/*.[ch]; do \ + case $$file in \ + djgpp/* | man/*) continue;; \ + esac; \ case $$file in \ *.[ch]) \ base=`expr " $$file" : ' \(.*\)\..'`; \ @@ -340,7 +370,7 @@ po-check: esac; \ files="$$files $$file"; \ done; \ - grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort > $@-2; \ + grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort -u > $@-2; \ diff -u $@-1 $@-2 || exit 1; \ rm -f $@-1 $@-2; \ fi @@ -460,16 +490,6 @@ my-distcheck: $(local-check) $(release_archive_dir)/$(prev-tgz) WGET = wget WGETFLAGS = -C off -tgz-md5 = $(shell md5sum < $(my_distdir).tar.gz|sed 's/ -//') -tgz-sha1 = $(shell sha1sum < $(my_distdir).tar.gz|sed 's/ -//') -bz2-md5 = $(shell md5sum < $(my_distdir).tar.bz2|sed 's/ -//') -bz2-sha1 = $(shell sha1sum < $(my_distdir).tar.bz2|sed 's/ -//') -xdelta-md5 = $(shell md5sum < $(xd-delta)|sed 's/ -//') -xdelta-sha1 = $(shell sha1sum < $(xd-delta)|sed 's/ -//') -tgz-size = $(shell du --human $(my_distdir).tar.gz|sed 's/\([MkK]\).*/ \1B/') -bz2-size = $(shell du --human $(my_distdir).tar.bz2|sed 's/\([MkK]\).*/ \1B/') -xd-size = $(shell du --human $(xd-delta)|sed 's/\([MkK]\).*/ \1B/') - rel-check: tarz=/tmp/rel-check-tarz-$$$$; \ md5_tmp=/tmp/rel-check-md5-$$$$; \