X-Git-Url: https://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/83acbb95d2f181cd67f08f1bae4572de9768b63b..HEAD:/snippet/glconfig.mk diff --git a/snippet/glconfig.mk b/snippet/glconfig.mk index dd999af..42d024e 100644 --- a/snippet/glconfig.mk +++ b/snippet/glconfig.mk @@ -1,4 +1,4 @@ -# Copyright © 2011 Nick Bowler +# Copyright © 2011-2013, 2019, 2021-2023 Nick Bowler # # Automake fragment to generate a Gnulib config header to rewrite exported # symbols. This fragment relies on the Gnulib makefile postprocessing done by @@ -16,11 +16,10 @@ GLCONFIG = @GLSRC@/glconfig.h GLCAT = cat /dev/null -GLSYM_V = $(GLSYM_V_$(V)) -GLSYM_V_ = $(GLSYM_V_$(AM_DEFAULT_VERBOSITY)) -GLSYM_V_0 = @echo " GLSYM " $<; +GLSYM_V = $(GLSYM_V_@AM_V@) +GLSYM_V_ = $(GLSYM_V_@AM_DEFAULT_V@) +GLSYM_V_0 = @printf ' %$(DX_ALIGN_V)s %s\n' 'GLSYM ' $<; -gnulib_symfiles = $(gnulib_lt_objects:.lo=.glsym) gnulib_headers += $(GLCONFIG) # This suffix rule triggers symbol generation only on demand. Dependencies are @@ -33,7 +32,6 @@ gnulib_headers += $(GLCONFIG) -c -o $(@D)/.syms/$(*F).o $< $(AM_V_at) $(SHELL) $(top_builddir)/exported.sh \ $(@D)/.syms/$(*F).o > $(@D)/.syms/$(*F).sym -$(gnulib_symfiles): $(gnulib_core_headers) clean-local: clean-glconfig clean-glconfig: @@ -45,6 +43,15 @@ clean-glconfig: done .PHONY: clean-glconfig +# Produce the list of all currently-enabled gnulib object files to assist with +# external build helpers. +GLCONFIG_OBJECTS = &1 +glconfig-objects: + @:; { \ + for f in $(gnulib_objects); do echo "$$f"; done; \ + } >$(GLCONFIG_OBJECTS) +.PHONY: glconfig-objects + # The config header requires compilation of all gnulib object files via the # .glsym rule above. However, it cannot depend on those build products # directly because they are phony, and would make this header never up-to-date. @@ -64,18 +71,34 @@ CLEANFILES += $(GLCONFIG) # The glconfig-gen target is intended only for use in recursive make # invocations. glconfig-gen: $(gnulib_symfiles) + $(AM_V_at) $(MKDIR_P) @GLSRC@ $(AM_V_at) depfiles=; symfiles=; \ for sym in $(gnulib_symfiles); do \ - symdir=`expr "$$sym" : '\(.*/\)'`; \ - symfile=`expr "$$sym" : '.*/\(.*\)' || printf '%s\n' "$$sym"`; \ - symbase=$$symdir.syms/`expr "$$symfile" : '\(.*\)\..*'`; \ - test -f "$$symbase.deps" && \ - depfiles="$$depfiles $$symbase.deps"; \ - symfiles="$$symfiles $$symbase.sym"; \ + symdir=`expr "$$sym" : '\(.*/\)'`; \ + symfile=`expr "$$sym" : '.*/\(.*\)' || printf '%s\n' "$$sym"`; \ + symbase=$$symdir.syms/`expr "$$symfile" : '\(.*\)\..*'`; \ + test -f "$$symbase.deps" && \ + depfiles="$$depfiles $$symbase.deps"; \ + symfiles="$$symfiles $$symbase.sym"; \ done; \ - $(GLCAT) $$depfiles > @GLSRC@/$(DEPDIR)/glconfig.Ph && \ - $(GLCAT) $$symfiles | sed 's/.*/#define & $(GLSYM_PREFIX)&/' \ - > $(GLCONFIG).tmp + $(glconfig_nodeps) \ + || $(GLCAT) $$depfiles > @GLSRC@/$(DEPDIR)/glconfig.Ph || exit; \ + $(GLCAT) $$symfiles | sed 's/.*/#define & $(GLSYM_PREFIX)&/' \ + >$(GLCONFIG).tmp .PHONY: glconfig-gen -@AMDEP_TRUE@@am__include@ @am__quote@@GLSRC@/$(DEPDIR)/glconfig.Ph@am__quote@ +if AMDEP +glconfig_nodeps = false +@am__include@ @am__quote@@GLSRC@/$(DEPDIR)/glconfig.Ph@am__quote@@dx_include_marker@ +else +glconfig_nodeps = true +endif + +# Automake 1.16 and newer use make rules to generate the dependency stubs. +# we must hook those which is kind of annoying to do. This should be harmless +# on previous versions which generate the stubs directly in config.status. +@dx_depfiles_target@: @GLSRC@/$(DEPDIR)/glconfig.Ph +@GLSRC@/$(DEPDIR)/glconfig.Ph: + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && mv -f $@-t $@ +DISTCLEANFILES += @GLSRC@/$(DEPDIR)/glconfig.Ph