bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gnulib-tool: new option --makefile-name


From: Eric Blake
Subject: Re: gnulib-tool: new option --makefile-name
Date: Tue, 29 Aug 2006 18:36:38 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Bruno Haible <bruno <at> clisp.org> writes:

> 
> While doing the coreutils changes, Paul found the answer to the long-standing
> question how gnulib-tool could be used without requiring a lib/ directory of
> its own and while still maintaining a clear separation between hand-maintained
> files and autogenerated files. Namely, rename the gnulib Makefile.am to some
> other name and include it from the real Makefile.am.
> 
> This patch adds an option --makefile-name that does this.

There are still issues if you want multiple gnulib libraries in a single 
project.  Right now, cvs M4 bootstrap uses "gnulib-tool --update" for a giant 
library used by all m4 dynamic modules, then hand-picks a smaller set of 
modules using "gnulib-tool --extract*" that are only needed when linking the 
final executable (for now, getopt and version-etc-fsf, since they provide 
interfaces that main needs but not m4 dynamic modules).

I was interested in trying out the new config-h module.  But it only works when 
using gnulib-tool --import/--update; the sed expression is not applied for 
files copied manually using --extract* information.  So next I tried tried 
experimenting with using two invocations of gnulib-tool --import to create two 
separate libraries.

My first attempt was to use gnulib-tool --makefile-name to stick both gnulib 
libraries in the same --source-base dir, but with different --makefile-name, 
different --m4-base (required, so that the two caches of which modules belong 
in which libraries are separate) and different --macro-prefix (required, so 
that configure.ac can invoke the *_EARLY and *_INIT macros of both libraries), 
and have a single glue Makefile.am pull in both makefile fragments.  This 
failed because of all the automake targets that are defined with = instead of 
+=, so the second fragment caused automake errors for all its redefinitions.

Next, I tried different --source-base dirs.  With separate imports, this almost 
works (although I found that some modules, like unlocked-io and config-h, must 
be --imported into both libraries).  The problem comes when doing "gnulib-tool -
-update" in the bootstrap script - gnulib-tool correctly determined that there 
were two gnulib-cache files and two libraries to update, but when updating the 
second library, func_import used stale --source-base and --macro-prefix values 
remembered from the first library rather than the correct values from the 
second cache.  I suppose I could rewrite m4's bootstrap to do "gnulib-tool --m4-
base=base1 --import; gnulib-tool --m4-base=base2 --import" instead of "gnulib-
tool --update", but it seems like something that gnulib-tool should be able to 
support, especially since it already detects both caches.

-- 
Eric Blake






reply via email to

[Prev in Thread] Current Thread [Next in Thread]