Различные инструменты 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>.