summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2008-12-21 17:37:22 +0100
committerJim Meyering <meyering@redhat.com>2008-12-21 17:49:58 +0100
commit317d2c6384839f43d8dd472dc1961fcf21ec181d (patch)
tree7af3e7a1ee6bc1c16ffc80b9976468673a035075
parent292d68565a34b237cd2bf586ace545b7cd3dbfcf (diff)
downloadcoreutils-317d2c6384839f43d8dd472dc1961fcf21ec181d.tar.xz
maint.mk: enforce the "include <config.h> first" rule
* maint.mk (sc_require_config_h_first): New rule. * .x-sc_require_config_h_first: New file.
-rw-r--r--.x-sc_require_config_h_first9
-rw-r--r--maint.mk15
2 files changed, 24 insertions, 0 deletions
diff --git a/.x-sc_require_config_h_first b/.x-sc_require_config_h_first
new file mode 100644
index 000000000..727bb8ead
--- /dev/null
+++ b/.x-sc_require_config_h_first
@@ -0,0 +1,9 @@
+^lib/buffer-lcm\.c$
+^src/false\.c$
+^src/lbracket\.c$
+^src/ls-dir\.c$
+^src/ls-ls\.c$
+^src/ls-vdir\.c$
+^src/tac-pipe\.c$
+^src/uname-arch\.c$
+^src/uname-uname\.c$
diff --git a/maint.mk b/maint.mk
index cb3c6a56d..7a9649e10 100644
--- a/maint.mk
+++ b/maint.mk
@@ -191,6 +191,21 @@ sc_require_config_h:
else :; \
fi
+# You must include <config.h> before including any other header file.
+sc_require_config_h_first:
+ @if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
+ fail=0; \
+ for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do \
+ grep '^# *include\>' $$i | sed 1q \
+ | grep '^# *include <config\.h>' > /dev/null \
+ || { echo $$i; fail=1; }; \
+ done; \
+ test $$fail = 1 && \
+ { echo '$(ME): the above files include some other header' \
+ 'before <config.h>' 1>&2; exit 1; } || :; \
+ else :; \
+ fi
+
# To use this "command" macro, you must first define two shell variables:
# h: the header, enclosed in <> or ""
# re: a regular expression that matches IFF something provided by $h is used.