Many packages come with an autoconf-generated ./configure
script for checking the build environment and configuring optional
support for libraries. The econf
function should be used where
possible
—
this will provide correct build and path specifications for
a Gentoo environment.
Often the configure script will try to automatically enable support
for optional components based upon installed packages. This
must not be allowed to happen. For example, if a user has Perl
installed but has USE="-perl"
, packages with optional
Perl support must not link against Perl. This automatic detection can
usually be overridden using --enable-
and --disable
or --with-
and --without-
switches (but note that these
don't always work
—
make sure these are tested properly!).
The use_enable
and use_with
utility functions should,
where appropriate, be used to generate these switches.
src_configure() {
# We have optional perl, python and ruby support
econf \
$(use_enable perl ) \
$(use_enable python ) \
$(use_enable ruby )
}
src_configure() {
# Our package optional IPv6 support which uses --with rather than
# --enable / --disable
econf $(use_with ipv6 )
}
Sometimes the package's choice of name for the option will not exactly
match the name or case of the USE
flag. This is very often the
case with the X
flag. For these situations, there are two
argument forms:
src_configure() {
# Our package has optional perl, python and ruby support
econf \
$(use_enable perl perlinterp ) \
$(use_enable python pythoninterp ) \
$(use_enable ruby rubyinterp )
# ...
}
src_configure() {
econf $(use_with X x11 )
}
To check for an unset USE
flag, the use_enable !flag
form can be used.