Различные инструменты 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
.
Означает использование 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
порта.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.