Nick Bowler [Thu, 10 May 2012 00:51:24 +0000 (20:51 -0400)]
Merge branch 'fix-gnulib' of /home/nbowler/projects/cdecl99
Import the fix-gnulib history from cdecl99.
* 'fix-gnulib' of /home/nbowler/projects/cdecl99:
Better document fix-gnulib.
Make fix-gnulib only need a single output file.
Simplify glconfig include mechanism.
Mangle spliced makefile lines in Gnulib correctly.
Avoid gratuitous library dependencies linking gnulib.
Rewrite Gnulib symbols to be in libcdecl's namespace.
Split gnulib_headers into 3 variables.
Move all Gnulib CLEANFILES variables to the end of the makefile.
Handle gl_LIBOBJS/gl_LTLIBOBJS correctly.
Eliminate use of BUILT_SOURCES from Gnulib.
Integrate Gnulib non-recursively.
Nick Bowler [Thu, 10 May 2012 00:02:29 +0000 (20:02 -0400)]
Better document fix-gnulib.
Add a big blurb in the comments describing the main bits required to use
the script in a project. Also rename the header variables a bit so we
can ensure future compatibility with the documented behaviour.
Nick Bowler [Wed, 9 May 2012 23:59:32 +0000 (19:59 -0400)]
Make fix-gnulib only need a single output file.
We combine the Automake and M4 bits into a single polyglot that can be
interpreted by either, so all one needs to do is include the makefile
fragment in configure.ac. I've created a monster.
libcdecl doesn't use the readline module at all, but libtool happily
pulls it in as a dependency. Handle library dependencies manually to
avoid this problem.
Nick Bowler [Wed, 21 Sep 2011 04:51:17 +0000 (00:51 -0400)]
Rewrite Gnulib symbols to be in libcdecl's namespace.
The gnulib symbols are not properly prefixed for libcdecl internal
symbols (e.g. cdecl__blah). This *will* cause problems when statically
linking against both libcdecl and another library that uses the same
gnulib modules.
Unfortunately, there's no simple way to determine what symbols need
prefixing without compiling all the gnulib objects. The results can't
be distributed either, because they depend on the configuration. So,
limited to simple tools and portable make rules, we hack together a
"new" config.h at build time that defines object-like macros to rewrite
the symbols, carefully ensuring that header dependencies are correct.
Nick Bowler [Mon, 19 Sep 2011 03:01:18 +0000 (23:01 -0400)]
Eliminate use of BUILT_SOURCES from Gnulib.
As with recursive make, BUILT_SOURCES is harmful because of inadequate
dependency information. We can achieve a similar effect with by using
order-only dependencies: These force the headers to be up-to-date
before anything that might require them is built: but rebuilds are only
triggered based on the accurate dependency information generated by the
normal mechanisms.
Unfortunately, order-only dependencies are a GNU make feature, so we use
a hack which should fall back to ordinary dependencies on other make
implementations. The worst effect of using ordinary dependencies will
be that files might be needlessly rebuilt when a header changes.