changeset 34492:c4b511d04085

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.
author Jim Meyering <meyering@redhat.com>
date Mon, 23 May 2011 17:15:30 +0200
parents 1c2197c49dae
children 0d03a5557fee
files ChangeLog top/maint.mk
diffstat 2 files changed, 26 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon May 23 09:12:06 2011 +0200
+++ b/ChangeLog	Mon May 23 17:15:30 2011 +0200
@@ -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.
--- a/top/maint.mk	Mon May 23 09:12:06 2011 +0200
+++ b/top/maint.mk	Mon May 23 17:15:30 2011 +0200
@@ -1353,27 +1353,27 @@
 	  $$(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 @@
 # 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-$$$$;						\