From 4d4e441e6d6dd231a00921765ba0d4ef00d209d9 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Sat, 25 Feb 2012 12:08:23 -0500 Subject: [PATCH] Simplify glconfig include mechanism. 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 | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/snippet/glconfig.mk b/snippet/glconfig.mk index 0673817..b72f1b0 100644 --- a/snippet/glconfig.mk +++ b/snippet/glconfig.mk @@ -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 -- 2.43.0