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.