Различные инструменты GNU autotools предоставляют механизм абстракции для построения частей программного обеспечения на широком наборе операционных систем и аппаратных архитектур. Внутри Коллекции Портов отдельный порт может использовать эти инструменты при помощи простых конструкций:
USE_AUTOTOOLS=tool
:version
[:operation
] ...
К моменту написания tool
может быть одним из libtool
,
libltdl
, autoconf
,
autoheader
, automake
или
aclocal
.
version
указывает конкретную
версию используемого инструмента (действующие версии смотрите в
devel/{automake,autoconf,libtool}[0-9]+
).
operation
является необязательным
расширением и указывает на способ использования
инструмента.
Одновременно может быть указано несколько инструментов,
добавляя их все на одной строке или используя конструкцию
Makefile +=
.
В заключение, существует специальный инструмент по называнию
autotools
, который является удобной функцией
при установке всех доступных версий autotools для возможности
проведения кросс-разработки. Это также может быть достигнуто
путем установки порта devel/autotools
.
Динамические библиотеки, использующие инфраструктуру
построения GNU, обычно используют libtool
для настройки компиляции и установки динамических библиотек в
соответствии с особенностями данной операционной системы.
В типичной практике используется копирование встроенного в
приложение libtool
. Если вам нужно
использовать внешнюю команду libtool
, то вы
можете использовать версию, поставляемую Коллекцией Портов:
USE_AUTOTOOLS= libtool:version
[:env]
При отсутствии дополнительных операций,
libtool:version
сообщает инфраструктуре построения о применении патча к сценарию
configure с установленной в системе копией
libtool
. Подразумевается использование
The GNU_CONFIGURE
Более того, некоторые переменные make и оболочки shell
будут назначены для дальнейшего использования этим портом.
Подробности смотрите в bsd.autotools.mk
.
При использовании операции :env
будет
настроено только окружение.
Наконец, LIBTOOLFLAGS
и
LIBTOOLFILES
можно установить по желанию,
чтобы переопределить наиболее вероятные аргументы для
libtool
и файлы, предназначенные для
изменения. Большинству портов это скорее всего не понадобится.
Для дальнейших подробностей смотрите
bsd.autotools.mk
.
Некоторые порты задействуют пакет с библиотекой
libltdl
, которая является частью комплекта
libtool
. Использование этой библиотеки
не вызывает автоматическое использование самой
libtool
, и, таким образом, обеспечивается
отдельная конструкция.
USE_AUTOTOOLS= libltdl:version
Всё, что в настоящее время она делает, это добавление
LIB_DEPENDS
для подходящего порта
libltdl
, потому она предоставляется как
удобная функция для помощи в устранении всяких зависимостей от
портов autotools вне инфраструктуры USE_AUTOTOOLS
.
Для этого инструмента не существует необязательных операций.
Некоторые порты не содержат сценарий configure, но содержат
шаблон autoconf в файле configure.ac
.
Вы можете использовать следующие присвоения, чтобы позволить
autoconf
создать сценарий configure, а
autoheader
создать заголовки шаблона для
использования в сценарии configure.
USE_AUTOTOOLS= autoconf:version
[:env]
и
USE_AUTOTOOLS= autoheader:version
которые также подразумевают использование
autoconf:version
.
Аналогично команде libtool
, подключение
необязательной операции :env
всего лишь
настраивает окружение для дальнейшего использования. Без этого
выполняется наложение патчей и переконфигурирование порта.
Дополнительные необязательные переменные
AUTOCONF_ARGS
и AUTOHEADER_ARGS
можно переопределить в Makefile
порта,
если указано явным образом. Как и с эквивалентами
libtool
, большинству портов это вряд ли
понадобится.
Некоторые пакеты содержат только файлы
Makefile.am
. Они должны быть преобразованы
в файлы Makefile.in
с использованием
automake и дальнейшей обработкой
configure
для получения настоящего
Makefile
.
Аналогично, иногда пакеты не поставляются с вложенными
файлами aclocal.m4
, снова требуемых для
построения программного обеспечения. Этого можно достичь
с aclocal
, которая просматривает
configure.ac
или
configure.in
.
aclocal
имеет похожую связь с
automake
, как у autoheader
с autoconf
, что описано в предыдущей главе.
aclocal
подразумевает использование
automake
, таким образом, мы имеем:
USE_AUTOTOOLS= automake:version
[:env
]
и
USE_AUTOTOOLS= aclocal:version
которые также подразумевают использование
automake:version
.
Также как и для libtool
и
autoconf
, подключение необязательной
операции :env
всего лишь устанавливает
окружение для дальнейшего пользования. Без этого выполняется
реконфигурирование этого порта.
Как и в случае с
autoconf
и autoheader
, обе
automake
и aclocal
имеют
необязательные переменные AUTOMAKE_ARGS
и
ACLOCAL_ARGS
, соответственно, которые при
необходимости можно переопределить в Makefile
порта.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.