changeset 16988:ef9bd8b01585

maint.mk: new syntax check for HAVE_DECL checks Based on Karel's report, we might as well enforce a syntax check to help avoid future problems. https://lists.gnu.org/archive/html/coreutils/2012-06/msg00037.html Exempt a few files that still get picked up in the wild rather than as a full gnulib module with m4 files. * top/maint.mk (sc_prohibit_defined_have_decl_tests): New rule. * cfg.mk (exclude_file_name_regexp--sc_prohibit_defined_have_decl_tests): Exempt some false positives. Based on a report by Karel Zak. Signed-off-by: Eric Blake <eblake@redhat.com>
author Eric Blake <eblake@redhat.com>
date Fri, 13 Jul 2012 14:02:05 -0600
parents 6bbf0e9974c9
children 93d4e55aa8a9
files ChangeLog cfg.mk top/maint.mk
diffstat 3 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Jul 13 11:50:59 2012 -0600
+++ b/ChangeLog	Fri Jul 13 14:02:05 2012 -0600
@@ -1,5 +1,12 @@
 2012-07-13  Eric Blake  <eblake@redhat.com>
 
+	maint.mk: new syntax check for HAVE_DECL checks
+	* top/maint.mk (sc_prohibit_defined_have_decl_tests): New rule.
+	* cfg.mk
+	(exclude_file_name_regexp--sc_prohibit_defined_have_decl_tests):
+	Exempt some false positives.
+	Based on a report by Karel Zak.
+
 	argp: make HAVE_DECL usage consistent
 	* lib/argp-parse.c (__argp_parse): Check contents of HAVE_DECL
 	macros, not whether they are defined.
--- a/cfg.mk	Fri Jul 13 11:50:59 2012 -0600
+++ b/cfg.mk	Fri Jul 13 14:02:05 2012 -0600
@@ -77,3 +77,6 @@
 
 exclude_file_name_regexp--sc_avoid_if_before_free = \
   ^lib/($(if_before_free_basename_re_))\.c$$
+
+exclude_file_name_regexp--sc_prohibit_defined_have_decl_tests = \
+  ^lib/((error|getopt|strtoimax)\.c|(argp-namefrob|fpending|getpass)\.h)$$
--- a/top/maint.mk	Fri Jul 13 11:50:59 2012 -0600
+++ b/top/maint.mk	Fri Jul 13 14:02:05 2012 -0600
@@ -777,6 +777,11 @@
 	'  with the corresponding gnulib module, they are always true')	\
 	  $(_sc_search_regexp)
 
+sc_prohibit_defined_have_decl_tests:
+	prohibit='#[	 ]*if(n?def|.*\<defined)\>[	 (]+HAVE_DECL_'	\
+	halt='$(ME): HAVE_DECL macros are always defined'		\
+	  $(_sc_search_regexp)
+
 # ==================================================================
 gl_other_headers_ ?= \
   intprops.h	\