Инфраструктура портов FreeBSD поддерживает параллельное
построение с использованием множественных подпроцессов
make
, что позволяет системам
SMP задействовать всю доступную мощность
CPU, тем самым делая построение портов более
быстрым и эффективным.
Это достигается путем передачи флага -jX
команде make(1). К сожалению, не все порты поддерживают
параллельную сборку достаточно хорошо. Поэтому требуется включать
этот механизм явным образом путем добавления строки
MAKE_JOBS_SAFE=yes
в Makefile
где-нибудь после раздела с объявлениями зависимостей.
Другой опцией управления этим механизмом с точки зрения
сопровождающего является MAKE_JOBS_UNSAFE=yes
.
Эта переменная используется в случае, когда известно, что порт
ломается с -jX
, и пользователь форсирует
использование многопроцессорной компиляции для всех портов с
переменной FORCE_MAKE_JOBS=yes
в
/etc/make.conf
.
Если ваш порт использует GNU make,
то установите USE_GMAKE=yes
.
Переменная | Значение |
---|---|
USE_GMAKE | Для сборки порта требуется
gmake . |
GMAKE | Полный путь к команде gmake , если
отсутствует в PATH . |
Если ваш порт является приложением X, которое создает файлы
Makefile
из Imakefile
,
используя imake, то установите
USE_IMAKE=yes
. Это заставит стадию
конфигурирования автоматически выполнить xmkmf -a
.
Если флаг -a
представляет для вашего порта
проблему, то установите XMKMF=xmkmf
. Если
порт использует imake, но не понимает
цель install.man
, то следует установить
NO_INSTALL_MANPAGES=yes
.
Если исходный Makefile
вашего порта
имеет что-нибудь помимо all
в качестве
основной цели построения, то задайте соответствующее значение
ALL_TARGET
. То же касается
install
и
INSTALL_TARGET
.
Если ваш порт использует сценарий configure
для получения файлов Makefile
из файлов
Makefile.in
, то установите
GNU_CONFIGURE=yes
. Если вы хотите дать
дополнительные параметры сценарию configure
(аргументом по умолчанию является --prefix=${PREFIX}
--infodir=${PREFIX}/${INFO_PATH}
--mandir=${MANPREFIX}/man
--build=${CONFIGURE_TARGET}
), установите эти параметры
в CONFIGURE_ARGS
. Дополнительные переменные
окружения можно передать, используя переменную
CONFIGURE_ENV
.
configure
Переменная | |
---|---|
GNU_CONFIGURE | Порт использует сценарий configure
для подготовки построения. |
HAS_CONFIGURE | То же, что и GNU_CONFIGURE , кроме
того, что цель configure по умолчанию не добавляется в
CONFIGURE_ARGS . |
CONFIGURE_ARGS | Дополнительные параметры, передаваемые сценарию
configure . |
CONFIGURE_ENV | Дополнительные переменные окружения, задаваемые для
запуска сценария configure . |
CONFIGURE_TARGET | Переопределить цель configure по умолчанию. Значением
по умолчанию является
${MACHINE_ARCH}-portbld-freebsd${OSREL} . |
Если ваш порт использует SCons,
определите USE_SCONS=yes
.
scons
Переменная | Значения |
---|---|
SCONS_ARGS | Специфичные для порта флаги SCons, передаваемые окружению SCons. |
SCONS_BUILDENV | Переменные для установки в системном окружении. |
SCONS_ENV | Переменные для установки в окружении SCons. |
SCONS_TARGET | Последний параметр для передачи SCons, похожий на
MAKE_TARGET . |
Для того, чтобы сторонний SConstruct
соответствовал всему, что передается SCons в переменной
SCONS_ENV
(самое главное, это
CC/CXX/CFLAGS/CXXFLAGS
), примените патч к
SConstruct
, так чтобы переменная построения
Environment
выглядела следующим образом:
В дальнейшем ее можно изменить при помощи
env.Append
и env.Replace
.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.