The various GNU autotools provide an abstraction mechanism for building a piece of software over a wide variety of operating systems and machine architectures. Within the Ports Collection, an individual port can make use of these tools via a simple construct:
tool
:version
[:operation
] ...At the time of writing, tool
can be
one of libtool
, libltdl
,
autoconf
, autoheader
,
automake
or aclocal
.
version
specifies the particular
tool revision to be used (see
devel/{automake,autoconf,libtool}[0-9]+
for
valid versions).
operation
is an optional extension
to modify how the tool is used.
Multiple tools can be specified at once, either by including
them all on a single line, or using the +=
Makefile construct.
Finally, there is the special tool, called
autotools
, which is a convenience function
to bring in all available versions of the autotools to allow
for cross-development work. This can also be accomplished
by installing the devel/autotools
port.
Shared libraries using the GNU building framework usually use
libtool
to adjust the compilation and
installation of shared libraries to match the specifics of the
underlying operating system. The usual practice is to use copy of
libtool
bundled with the application. In case
you need to use external libtool
, you can use
the version provided by The Ports Collection:
version
[:env]With no additional operations,
libtool:
tells
the building framework to patch the configure script with the
system-installed copy of version
libtool
.
The GNU_CONFIGURE
is implied.
Further, a number of make and shell
variables will be assigned for onward use by the port. See
bsd.autotools.mk
for details.
With the :env
operation, only the
environment will be set up.
Finally, LIBTOOLFLAGS
and
LIBTOOLFILES
can be optionally set to override
the most likely arguments to, and files patched by,
libtool
. Most ports are unlikely to need this.
See bsd.autotools.mk
for further
details.
Some ports make use of the libltdl
library
package, which is part of the libtool
suite.
Use of this library does not automatically necessitate the use of
libtool
itself, so a separate construct is
provided.
version
Currently, all this does is to bring in a
LIB_DEPENDS
on the appropriate
libltdl
port, and is provided as a convenience
function to help eliminate any dependencies on the autotools ports
outside of the USE_AUTOTOOLS
framework. There
are no optional operations for this tool.
Some ports do not contain a configure script, but do contain an
autoconf template in the configure.ac
file.
You can use the following assignments to let
autoconf
create the configure script, and also
have autoheader
create template headers for use
by the configure script.
version
[:env]and
version
which also implies the use of
autoconf:
.version
Similarly to libtool
, the inclusion of the
optional :env
operation simply sets up the
environment for further use. Without it, patching and
reconfiguration of the port is carried out.
The additional optional variables
AUTOCONF_ARGS
and
AUTOHEADER_ARGS
can be overridden by the port
Makefile
if specifically requested. As with
the libtool
equivalents, most ports are unlikely
to need this.
Some packages only contain Makefile.am
files. These have to be converted into
Makefile.in
files using
automake
, and the further processed by
configure
to generate an actual
Makefile
.
Similarly, packages occasionally do not ship with included
aclocal.m4
files, again required to build the
software. This can be achieved with aclocal
,
which scans configure.ac
or
configure.in
.
aclocal
has a similar relationship to
automake
as autoheader
does
to autoconf
, described in the previous section.
aclocal
implies the use of
automake
, thus we have:
version
[:env
]and
version
which also implies the use of
automake:
.version
Similarly to libtool
and
autoconf
, the inclusion of the optional
:env
operation simply sets up the environment
for further use. Without it, reconfiguration of the port is
carried out.
As with
autoconf
and autoheader
, both
automake
and aclocal
have
optional argument variables, AUTOMAKE_ARGS
and
ACLOCAL_ARGS
respectively, which may be
overriden by the port Makefile
if
required.
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。