]> git.draconx.ca Git - dxcommon.git/commitdiff
Simplify glconfig include mechanism.
authorNick Bowler <nbowler@draconx.ca>
Sat, 25 Feb 2012 17:08:23 +0000 (12:08 -0500)
committerNick Bowler <nbowler@draconx.ca>
Thu, 1 Mar 2012 01:16:59 +0000 (20:16 -0500)
Instead of relying on include order to select the right config.h, modify
config.h to include the glconfig header conditionally.

This allows the use of Automake's default include paths again, and is
conceptually simpler.

snippet/glconfig.mk

index 0673817451ced47815f8b0808d3ad7ec58be2f99..b72f1b06598d30daddae5f97e720cbfc217cdf21 100644 (file)
@@ -5,16 +5,14 @@
 # fix-gnulib.pl.  Furthermore, the following additional changes may be
 # required:
 #
-#   * Add AUTOMAKE_OPTIONS = nostdinc to Makefile.am (or equivalent).
-#   * Ensure that -I$(top_builddir)/@GLSRC@ and -I$(top_builddir) are
-#     listed in AM_CPPFLAGS (in that order).
+#   * Add AM_PROC_CC_C_O to configure.ac
 #   * Pass the desired symbol prefix to DX_FIX_GNULIB in configure.ac.
 #
 # 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.
 # There is NO WARRANTY, to the extent permitted by law.
 
-GLCONFIG = @GLSRC@/config.h
+GLCONFIG = @GLSRC@/glconfig.h
 GLCAT    = cat /dev/null
 
 GLSYM_V   = $(GLSYM_V_$(V))
@@ -30,7 +28,8 @@ gnulib_src_headers += $(GLCONFIG)
        $(GLSYM_V) $(MKDIR_P) $(@D)/.syms
        $(AM_V_at) depfile=$(@D)/.syms/$(*F).deps \
                source=$< object=$(GLCONFIG) $(CCDEPMODE) \
-               $(depcomp) $(COMPILE) -c -o $(@D)/.syms/$(*F).o $<
+               $(depcomp) $(COMPILE) -DNO_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)
@@ -47,19 +46,18 @@ clean-glconfig:
 
 # 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 those compilations will include this header if it exists,
-# which is (by definition) out of date when this rule gets triggered.
+# directly because they are phony, and would make this header never up-to-date.
 #
-# Thus, we delete the header, then perform a recursive make call to regenerate
-# the header, which can in turn parallelize the required compilation.
+# Thus, we use a recursive make call to regenerate the header, which avoids
+# the need to list prerequisites.
 #
-# Also delete the phony symbol files so the build doesn't fail badly if they
-# got created somehow (for instance by make -t).
-$(GLCONFIG): $(top_builddir)/config.h $(gnulib_core_headers)
-       -$(AM_V_at) rm -f $(gnulib_symfiles) $@.tmp $@
+# Since GNU make does not appear to allow the target of a suffix rule to be
+# marked .PHONY, we also delete the .glsym files here just in case they were
+# created for some reason (e.g., make -t).
+$(GLCONFIG): $(gnulib_core_headers)
+       -$(AM_V_at) rm -f $(gnulib_symfiles)
        $(AM_V_at) $(MAKE) $(AM_MAKEFLAGS) glconfig-gen
-       $(AM_V_GEN) cat $(top_builddir)/config.h >> $@.tmp
-       $(AM_V_at) mv -f $@.tmp $@
+       $(AM_V_GEN) mv -f $@.tmp $@
 CLEANFILES += $(GLCONFIG)
 
 # The glconfig-gen target is intended only for use in recursive make