From: Nick Bowler Date: Sat, 25 Feb 2012 17:08:23 +0000 (-0500) Subject: Simplify glconfig include mechanism. X-Git-Tag: v1~62 X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/commitdiff_plain/d76ea597ae42f16aadb34f4e740cf333f6ca856f 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. --- diff --git a/Makefile.am b/Makefile.am index 90439ad..1cde25a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -5,7 +5,6 @@ # There is NO WARRANTY, to the extent permitted by law. ACLOCAL_AMFLAGS = -I m4 -AUTOMAKE_OPTIONS = nostdinc # For Gnulib MOSTLYCLEANFILES = @@ -13,7 +12,6 @@ noinst_LTLIBRARIES = AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src \ -I$(top_builddir)/lib -I$(top_srcdir)/lib \ - -I$(top_builddir) -I$(top_srcdir) \ -I$(top_builddir)/test \ -DBISON_LOCALEDIR=\"$(BISON_LOCALEDIR)\" \ -DLOCALEDIR=\"$(localedir)\" @@ -35,7 +33,7 @@ EXTRA_DIST = m4/gnulib-cache.m4 src/types.lst src/validtypes.sed \ dist_man_MANS = doc/man/cdecl99.1 doc/man/libcdecl.3 include_HEADERS = src/cdecl.h -noinst_HEADERS = conf_post.h src/typemap.h src/output.h src/scan.h \ +noinst_HEADERS = conf_pre.h conf_post.h src/typemap.h src/output.h src/scan.h \ src/parse.h src/i18n.h src/normalize.h src/error.h test/declgen.h \ test/test.h diff --git a/conf_pre.h b/conf_pre.h new file mode 100644 index 0000000..435f48f --- /dev/null +++ b/conf_pre.h @@ -0,0 +1,3 @@ +#ifndef NO_GLCONFIG +# include +#endif diff --git a/configure.ac b/configure.ac index 0ae3c8a..f766023 100644 --- a/configure.ac +++ b/configure.ac @@ -40,6 +40,7 @@ BISON_I18N GLOBAL_SYMBOL_PIPE=$lt_cv_sys_global_symbol_pipe AC_SUBST([GLOBAL_SYMBOL_PIPE]) +AH_TOP([#include ]) AH_BOTTOM([#include ]) AC_ARG_WITH([gsl], diff --git a/glconfig.mk b/glconfig.mk index 0673817..b72f1b0 100644 --- a/glconfig.mk +++ b/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