On 25/01/10 11:51, Jim Meyering wrote:
Pádraig Brady wrote:
Subject: [PATCH] syntax-check: detect incorrect boolean macro values in config.h
* modules/maintainer-makefile (configure.ac): Parameterize the location
of config.h. The logic is from Eric Blake and the location indicated
by Jim Meyering. Note CONFIG_HEADER is a forbidden variable name.
* top/maint.mk (sc_Wundef_boolean): New rule.
That patch looks fine.
What does "forbidden variable name" mean?
Maybe say that this has the effect of exporting CONFIG_HEADER
(via an AC_SUBST-like mechanism) so that Makefile.am files may
use $(CONFIG_HEADER) ?
Amended patch with this attached:
* modules/maintainer-makefile (configure.ac): Parameterize the location
of config.h which will be available to make files as $(CONFIG_INCLUDE).
The logic is from Eric Blake and the location indicated by Jim Meyering.
Note the more natural CONFIG_HEADER name is prohibited by automake
for backwards compatibility reasons.
* top/maint.mk (sc_Wundef_boolean): New rule.
cheers,
Pádraig.
>From 24deaca6cad616bce43a3036f77b19306ac8d3bd Mon Sep 17 00:00:00 2001
From: =?utf-8?q?P=C3=A1draig=20Brady?= <p...@draigbrady.com>
Date: Mon, 25 Jan 2010 10:55:34 +0000
Subject: [PATCH] syntax-check: detect incorrect boolean macro values in config.h
* modules/maintainer-makefile (configure.ac): Parameterize the location
of config.h which will be available to make files as $(CONFIG_INCLUDE).
The logic is from Eric Blake and the location indicated by Jim Meyering.
Note the more natural CONFIG_HEADER name is prohibited by automake
for backwards compatibility reasons.
* top/maint.mk (sc_Wundef_boolean): New rule.
---
ChangeLog | 10 ++++++++++
modules/maintainer-makefile | 4 ++++
top/maint.mk | 8 ++++++++
3 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 9546514..2f5f521 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2010-01-25 Pádraig Brady <p...@draigbrady.com>
+
+ syntax-check: detect incorrect boolean macro values in config.h
+ * modules/maintainer-makefile (configure.ac): Parameterize the location
+ of config.h which will be available to make files as $(CONFIG_INCLUDE).
+ The logic is from Eric Blake and the location indicated by Jim Meyering.
+ Note the more natural CONFIG_HEADER name is prohibited by automake
+ for backwards compatibility reasons.
+ * top/maint.mk (sc_Wundef_boolean): New rule.
+
2010-01-24 Bruno Haible <br...@clisp.org>
Tests for module 'yn'.
diff --git a/modules/maintainer-makefile b/modules/maintainer-makefile
index 21c2802..ed43e87 100644
--- a/modules/maintainer-makefile
+++ b/modules/maintainer-makefile
@@ -9,6 +9,10 @@ gnumakefile
useless-if-before-free
vc-list-files
+configure.ac:
+AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER],
+ [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])])
+
License:
GPLed build tool
diff --git a/top/maint.mk b/top/maint.mk
index 346d681..d384ca6 100644
--- a/top/maint.mk
+++ b/top/maint.mk
@@ -718,6 +718,14 @@ sc_copyright_check:
exit 1; }; \
fi
+# #if HAVE_... will evaluate to false for any non numeric string.
+# That would be flagged by using -Wundef, however gnulib currently
+# tests many undefined macros, and so we can't enable that option.
+# So at least preclude common boolean strings as macro values.
+sc_Wundef_boolean:
+ @grep -Ei '^#define.*(yes|no|true|false)$$' '$(CONFIG_INCLUDE)' && \
+ { echo 'Use 0 or 1 for macro values' 1>&2; exit 1; } || :
+
vc-diff-check:
(unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || :
if test -s vc-diffs; then \
--
1.6.2.5