changeset 15263:a003200eb24e

syntax-check: add a rule to help enforce the no-AC_LIBOBJ-in-m4/ policy * Makefile (sc_prohibit_AC_LIBOBJ_in_m4): New rule.
author Jim Meyering <meyering@redhat.com>
date Mon, 13 Jun 2011 18:01:47 +0200
parents 5e2f99e0a66f
children df803aaa6922
files ChangeLog Makefile
diffstat 2 files changed, 42 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
-2011-05-23  Bruno Haible  <bruno@clisp.org>
+2011-06-13  Jim Meyering  <meyering@redhat.com>
+
+	syntax-check: add a rule to help enforce the no-AC_LIBOBJ-in-m4/ policy
+	* Makefile (sc_prohibit_AC_LIBOBJ_in_m4): New rule.
+
+2011-05-23  Bruno Haible  <bruno@clisp.org>
 
 	yesno: Move AC_LIBOBJ invocations to module description.
 	* m4/yesno.m4 (gl_YESNO): Remove AC_LIBOBJ invocation.
--- a/Makefile
+++ b/Makefile
@@ -37,6 +37,42 @@
 		 "  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		\
+  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$$'					\