Previous: Bundling the unit tests of the Gnulib modules, Up: Invoking gnulib-tool [Contents][Index]
In some cases, a module is needed by another module only on specific
platforms. But when a module is present, its Autoconf checks are always
executed, and its Makefile.am
additions are always enabled. So
it can happen that some Autoconf checks are executed and some source files
are compiled, although no other module needs them on this particular
platform, just in case some other module would need them.
The option ‘--conditional-dependencies’ enables an optimization of
configure checks and Makefile.am
snippets that avoids this. With
this option, whether a module is considered “present” is no longer decided
when gnulib-tool
is invoked, but later, when configure
is run.
This applies to modules that were added as dependencies while
gnulib-tool
was run; modules that were passed on the command line
explicitly are always “present”.
For example, the timegm
module needs, on platforms
where the system’s timegm
function is missing or buggy, a replacement
that is based on a function mktime_internal
. The module
mktime-internal
that provides this function provides it on all
platforms. So, by default, the file mktime-internal.c will be
compiled on all platforms, even on glibc and BSD systems which have a
working timegm
function. When the option
‘--conditional-dependencies’ is given, on the other hand, and if
mktime-internal
was not explicitly required on the command line,
the file mktime-internal.c will only be compiled on the platforms
where the timegm
needs them.
Conditional dependencies are specified in the module description by putting
the condition on the same line as the dependent module, enclosed in brackets.
The condition is a boolean shell expression that can assume that the
configure.ac
snippet from the module description has already been
executed. In the example above, the dependency from timegm
to
mktime-internal
is written like this:
Depends-on: ... mktime-internal [test $HAVE_TIMEGM = 0 || test $REPLACE_TIMEGM = 1] ...
Note: The option ‘--conditional-dependencies’ cannot be used together
with the option ‘--with-tests’. It also cannot be used when a package
uses gnulib-tool
for several subdirectories, with different values
of ‘--source-base’, in the scope of a single configure.ac
file.
Previous: Bundling the unit tests of the Gnulib modules, Up: Invoking gnulib-tool [Contents][Index]