maint.mk: new syntax check for HAVE_DECL checks
authorEric Blake <eblake@redhat.com>
Fri, 13 Jul 2012 20:02:05 +0000 (14:02 -0600)
committerEric Blake <eblake@redhat.com>
Fri, 13 Jul 2012 20:31:48 +0000 (14:31 -0600)
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>
ChangeLog
cfg.mk
top/maint.mk

index f3633d1..43572fa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/cfg.mk b/cfg.mk
index 45a321c..bf59024 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -77,3 +77,6 @@ if_before_free_basename_re_ = \
 
 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)$$
index 0023989..5ca1a31 100644 (file)
@@ -777,6 +777,11 @@ sc_prohibit_always_true_header_tests:
        '  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   \