maint.mk: avoid using a temporary file in the always-defined-macros check
authorJim Meyering <meyering@redhat.com>
Mon, 10 May 2010 07:29:09 +0000 (09:29 +0200)
committerJim Meyering <meyering@redhat.com>
Mon, 10 May 2010 07:29:09 +0000 (09:29 +0200)
* top/maint.mk (.re-defmac): Remove rule.
(gl_trap_): Remove definition.
(sc_prohibit_always-defined_macros): Rewrite not to create and
depend on a temporary file.  Instead, depend on GNU grep's ability
to read a list of regular expressions from stdin when given "-f -".

ChangeLog
top/maint.mk

index f2efae5..5510f68 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2010-05-10  Jim Meyering  <meyering@redhat.com>
+
+       maint.mk: avoid using a temporary file in the always-defined-macros check
+       * top/maint.mk (.re-defmac): Remove rule.
+       (gl_trap_): Remove definition.
+       (sc_prohibit_always-defined_macros): Rewrite not to create and
+       depend on a temporary file.  Instead, depend on GNU grep's ability
+       to read a list of regular expressions from stdin when given "-f -".
+
 2010-05-09  Bruno Haible  <bruno@clisp.org>
 
        Update to GNU gettext 0.18.
index 2e11ac1..867e4be 100644 (file)
@@ -679,31 +679,24 @@ gl_extract_significant_defines_ = \
 
 # Create a list of regular expressions matching the names
 # of macros that are guaranteed to be defined by parts of gnulib.
-.re-defmac:
-       @gen_h=$(gl_generated_headers_);                                \
+define def_sym_regex
+       gen_h=$(gl_generated_headers_);                                 \
        (cd $(gnulib_dir)/lib;                                          \
          for f in *.in.h $(gl_other_headers_); do                      \
            perl -lne '$(gl_extract_significant_defines_)' $$f;         \
          done;                                                         \
        ) | sort -u                                                     \
          | grep -Ev '^ATTRIBUTE_NORETURN'                              \
-         | sed 's/^/^ *# *define /;s/$$/\\>/'                          \
-         > $@-t
-       @mv $@-t $@
-
-define gl_trap_
-  Exit () { set +e; (exit $$1); exit $$1; };                           \
-  for sig in 1 2 3 13 15; do                                           \
-    eval "trap 'Exit $$(expr $$sig + 128)' $$sig";                     \
-  done
+         | sed 's/^/^ *# *define /;s/$$/\\>/'
 endef
 
 # Don't define macros that we already get from gnulib header files.
-sc_prohibit_always-defined_macros: .re-defmac
+sc_prohibit_always-defined_macros:
        @if test -d $(gnulib_dir); then                                 \
-         trap 'rc=$$?; rm -f .re-defmac; exit $$rc' 0;                 \
-         $(gl_trap_);                                                  \
-         grep -f .re-defmac $$($(VC_LIST_EXCEPT))                      \
+         case $$(echo all: | grep -l -f - Makefile) in Makefile);; *)  \
+           echo '$(ME): skipping $@: you lack GNU grep' 1>&2; exit 0;; \
+         esac;                                                         \
+         $(def_sym_regex) | grep -f - $$($(VC_LIST_EXCEPT))            \
            && { echo '$(ME): define the above via some gnulib .h file' \
                  1>&2;  exit 1; } || :;                                \
        fi