From 483bd08221cccf613ae5bb5738076113150579b0 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Mon, 23 May 2011 17:15:30 +0200 Subject: [PATCH 1/1] 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. --- ChangeLog | 8 ++++++++ top/maint.mk | 32 ++++++++++++++++++-------------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index f206cd4bf4..3208380f3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2011-05-23 Jim Meyering + 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. diff --git a/top/maint.mk b/top/maint.mk index 58e8004fba..9f20900a32 100644 --- a/top/maint.mk +++ b/top/maint.mk @@ -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-$$$$; \ -- 2.30.2