maint.mk: more tight_scope improvements
authorJim Meyering <meyering@redhat.com>
Mon, 23 May 2011 15:15:30 +0000 (17:15 +0200)
committerJim Meyering <meyering@redhat.com>
Mon, 23 May 2011 15:25:34 +0000 (17:25 +0200)
* top/maint.mk: (_gl_TS_var_match): Use $(_gl_TS_extern) here, too.
(_gl_TS_headers): Define only in if-0'd block.
(_gl_TS_dir): Omit the $(srcdir)/ prefix.  Sometimes we need it,
sometimes we must *not* use it.  Adjust uses accordingly.
(sc_tight_scope): Use much simpler grep-based test to determine
whether we skip this rule.

ChangeLog
top/maint.mk

index f206cd4bf437b865e290fbdc6b9b0cf11ac2e6ce..3208380f3fb11b31a045cda1d2269b43c48fb415 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2011-05-23  Jim Meyering  <meyering@redhat.com>
 
+       maint.mk: more tight_scope improvements
+       * top/maint.mk: (_gl_TS_var_match): Use $(_gl_TS_extern) here, too.
+       (_gl_TS_headers): Define only in if-0'd block.
+       (_gl_TS_dir): Omit the $(srcdir)/ prefix.  Sometimes we need it,
+       sometimes we must *not* use it.  Adjust uses accordingly.
+       (sc_tight_scope): Use much simpler grep-based test to determine
+       whether we skip this rule.
+
        maint.mk: generalize/improve the tight-scope rule
        * top/maint.mk: Emit a warning when the test is skipped.
        (_gl_TS_dir): Add $(srcdir)/ prefix.
index 58e8004fba8f35573ab4379649f89b430e6e6920..9f20900a32c32b030f593aa5021a104caed8d81b 100644 (file)
@@ -1353,27 +1353,27 @@ update-copyright:
          $$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \
          | $(update-copyright-env) xargs $(build_aux)/$@
 
-# NOTE: This test is skipped with a warning if $(_gl_TS_headers) still
-# has its default value and $(_gl_TS_dir)/Makefile.am does not mention
-# noinst_HEADERS.
+# This tight_scope test is skipped with a warning if $(_gl_TS_headers) is not
+# overridden and $(_gl_TS_dir)/Makefile.am does not mention noinst_HEADERS.
 
 # NOTE: to override any _gl_TS_* default value, you must
 # define the variable(s) using "export" in cfg.mk.
-_gl_TS_dir ?= $(srcdir)/src
-
-# The file(s) to search for extern declarations.
-_gl_TS_headers ?= $(noinst_HEADERS)
+_gl_TS_dir ?= src
 
 ALL_RECURSIVE_TARGETS += sc_tight_scope
 sc_tight_scope: tight-scope.mk
-       @if test 'x$(_gl_TS_headers)' = 'x$(noinst_HEADERS)'            \
-         && ! grep -w noinst_HEADERS $(_gl_TS_dir)/Makefile.am         \
+       @if ! grep '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk       \
+               > /dev/null                                             \
+          && ! grep -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \
                > /dev/null 2>&1; then                                  \
            echo '$(ME): skipping $@';                                  \
        else                                                            \
-           $(MAKE) -s -C $(_gl_TS_dir) -f $(abs_builddir)/$<           \
-               -f Makefile _gl_tight_scope                             \
-             || fail=1;                                                \
+           $(MAKE) -s -C $(_gl_TS_dir)                                 \
+               -f Makefile                                             \
+               -f $(abs_top_srcdir)/cfg.mk                             \
+               -f $(abs_top_builddir)/$<                               \
+             _gl_tight_scope                                           \
+               || fail=1;                                              \
        fi
        @rm -f $<
 
@@ -1411,12 +1411,16 @@ _gl_TS_unmarked_extern_vars ?=
 # a macro like this: GLOBAL(type, var_name, initializer), then you
 # can override this definition to automatically extract those names:
 # export _gl_TS_var_match = \
-#   /^(?:extern|XTERN) .*?\**(\w+)(\[.*?\])?;/ || /\bGLOBAL\(.*?,\s*(.*?),/
-_gl_TS_var_match ?= /^(?:extern|XTERN) .*?(\w+)(\[.*?\])?;/
+#   /^(?:$(_gl_TS_extern)) .*?\**(\w+)(\[.*?\])?;/ || /\bGLOBAL\(.*?,\s*(.*?),/
+_gl_TS_var_match ?= /^(?:$(_gl_TS_extern)) .*?(\w+)(\[.*?\])?;/
 
 # The names of object files in (or relative to) $(_gl_TS_dir).
 _gl_TS_obj_files ?= *.$(OBJEXT)
 
+# Files in which to search for the one-line style extern declarations.
+# $(_gl_TS_dir)-relative.
+_gl_TS_headers ?= $(noinst_HEADERS)
+
 .PHONY: _gl_tight_scope
 _gl_tight_scope: $(bin_PROGRAMS)
        t=exceptions-$$$$;                                              \