X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=Makefile;h=f62a661383797441b200ddf60660259a5100ae1d;hb=9723bfe9bb9af8309314ad6230f7661000ba03b1;hp=c9bfc1615b0e49309636fe053a9a0f25a93279f9;hpb=9ada6e7b5cf3aa507b6b54e47775c29ffd1378d3;p=gnulib.git diff --git a/Makefile b/Makefile index c9bfc1615..f62a66138 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,9 @@ # This Makefile requires the use of GNU make. Some targets require # that you have tools like git, makeinfo and cppi installed. +# Required for the use of <(...) below. +SHELL=/bin/bash + # Produce some files that are not stored in the repository. all: @@ -29,6 +32,15 @@ sc_prefer_ac_check_funcs_once: in modules/ 1>&2; exit 1; } || : \ else :; fi +sc_prohibit_leading_TABs: + if test -d .git; then \ + git grep -l '^ * ' lib m4 tests \ + | grep -Ev '^lib/reg|Makefile|test-update-copyright' \ + | grep . \ + && { printf '*** %s\n' 'indent with spaces, not TABs;' \ + 1>&2; exit 1; } || : \ + else :; fi + sc_prohibit_augmenting_PATH_via_TESTS_ENVIRONMENT: if test -d .git; then \ url=http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/22874; \ @@ -37,6 +49,42 @@ sc_prohibit_augmenting_PATH_via_TESTS_ENVIRONMENT: " see <$$url>" 1>&2; exit 1; } || : \ else :; fi +# Files in m4/ that (exceptionally) may use AC_LIBOBJ. +# Do not include their ".m4" suffix. +allow_AC_LIBOBJ = \ + close \ + dprintf \ + dup2 \ + faccessat \ + fchdir \ + fclose \ + fcntl \ + fprintf-posix \ + open \ + printf-posix-rpl \ + snprintf \ + sprintf-posix \ + stdio_h \ + vasnprintf \ + vasprintf \ + vdprintf \ + vfprintf-posix \ + vprintf-posix \ + vsnprintf \ + vsprintf-posix + +allow_AC_LIBOBJ_or := $(shell echo $(allow_AC_LIBOBJ) | tr -s ' ' '|') + +sc_prohibit_AC_LIBOBJ_in_m4: + url=http://article.gmane.org/gmane.comp.lib.gnulib.bugs/26995; \ + if test -d .git; then \ + git ls-files m4 \ + | grep -Ev '^m4/($(allow_AC_LIBOBJ_or))\.m4$$' \ + | xargs grep '^ *AC_LIBOBJ(' \ + && { printf '%s\n' 'Do not use AC_LIBOBJ in m4/*.m4;' \ + "see <$$url>"; exit 1; } || :; \ + else :; fi + sc_pragma_columns: if test -d .git; then \ git ls-files|grep '\.in\.h$$' \ @@ -53,11 +101,26 @@ sc_pragma_columns: # *.c files are consistently cpp indented. sc_cpp_indent_check: ./gnulib-tool --extract-filelist \ - $$(cd ./modules; grep -ilrE '(meyering|blake)' .) \ - | sort -u \ - | grep '\.c$$' \ - | grep -v '/getloadavg\.c$$' \ - | xargs cppi -c + $$(cd ./modules; grep -ilrE '(meyering|blake)' .) \ + | sort -u \ + | grep '\.c$$' \ + | grep -vE '/(stdio-(read|write)|getloadavg)\.c$$' \ + | xargs cppi -c + +# Ensure that the list of symbols checked for by the +# sc_prohibit_intprops_without_use rule match those in the actual file. +# Extract the symbols from the .h file and compare with the list of +# symbols extracted from the rule in maint.mk. +sc_check_sym_list: + i=lib/intprops.h; \ + diff -u <(perl -lne '/^# *define ([A-Z]\w+)\(/ and print $$1' $$i|fmt) \ + <(sed -n /^_intprops_name/,/^_intprops_syms_re/p top/maint.mk \ + |sed '/^_/d;s/^ //;s/ *\\$$//') + +# Ensure that the copyright statements in files and in the module descriptions +# are consistent. +sc_check_copyright: + ./check-copyright # Regenerate some files that are stored in the repository. regen: MODULES.html