]> git.draconx.ca Git - dxcommon.git/blobdiff - snippet/glconfig.mk
Import getline helper from cdecl99.
[dxcommon.git] / snippet / glconfig.mk
index b72f1b06598d30daddae5f97e720cbfc217cdf21..42d024eed3ba9673d24bf2206a4cf2275b595520 100644 (file)
@@ -1,12 +1,13 @@
-# 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 enhancements done by
-# fix-gnulib.pl.  Furthermore, the following additional changes may be
+# symbols.  This fragment relies on the Gnulib makefile postprocessing done by
+# fix-gnulib.pl.  Furthermore, the following additions to configure.ac may be
 # required:
 #
 #   * Add AM_PROC_CC_C_O to configure.ac
-#   * Pass the desired symbol prefix to DX_FIX_GNULIB in configure.ac.
+#   * Pass the desired symbol prefix to DX_GLSYM_PREFIX in configure.ac,
+#     after including the fix-gnulib.pl output.
 #
 # License WTFPL2: Do What The Fuck You Want To Public License, version 2.
 # This is free software: you are free to do what the fuck you want to.
 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_src_headers += $(GLCONFIG)
+gnulib_headers += $(GLCONFIG)
 
 # This suffix rule triggers symbol generation only on demand.  Dependencies are
 # not tracked directly, so it must remain phony and thus not create the target.
@@ -32,7 +32,6 @@ gnulib_src_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:
@@ -44,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.
@@ -63,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