]> git.draconx.ca Git - cdecl99.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.

Makefile.am
conf_pre.h [new file with mode: 0644]
configure.ac
glconfig.mk

index 90439ad6358b2e8686e16b90baaf4822bfc4c659..1cde25a31efa00912595faac0cf3ad037e8ba6dc 100644 (file)
@@ -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 (file)
index 0000000..435f48f
--- /dev/null
@@ -0,0 +1,3 @@
+#ifndef NO_GLCONFIG
+#      include <lib/glconfig.h>
+#endif
index 0ae3c8aceaaac35de44fb2c7cbc17804ff3fa7e2..f766023a3e4a417c9c411906e7d19a57facae606 100644 (file)
@@ -40,6 +40,7 @@ BISON_I18N
 GLOBAL_SYMBOL_PIPE=$lt_cv_sys_global_symbol_pipe
 AC_SUBST([GLOBAL_SYMBOL_PIPE])
 
+AH_TOP([#include <conf_pre.h>])
 AH_BOTTOM([#include <conf_post.h>])
 
 AC_ARG_WITH([gsl],
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