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