Инфраструктура портов FreeBSD поддерживает параллельное
построение с использованием множественных подпроцессов
make
, что позволяет системам
SMP задействовать всю доступную мощность
CPU, тем самым делая построение портов
более быстрым и эффективным.
Это достигается путём передачи флага
-jX
команде make(1). Такое
построение портов является поведением по умолчанию. К
сожалению, не все порты поддерживают параллельную сборку
достаточно хорошо, и поэтому может потребоваться выключить
этот механизм явным образом путём добавления переменной
MAKE_JOBS_UNSAFE=yes
. Эта переменная
используется в случае, когда известно, что порт ломается с
-jX
.
Если ваш порт использует
GNU make, то установите
USES= gmake
.
Переменная | Значение |
---|---|
USES= gmake | Для сборки порта требуется
gmake . |
GMAKE | Полный путь к команде gmake ,
если отсутствует в PATH . |
Если ваш порт является приложением X, которое создает
файлы Makefile
из
Imakefile
, используя
imake, то установите
USES= imake
. Это заставит стадию
конфигурирования автоматически выполнить
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} . |
Если порт использует CMake,
определите USES= cmake
или
USES= cmake:outsource
для построения во
внешнем каталоге (см. ниже).
cmake
Переменная | Значение |
---|---|
CMAKE_ARGS | Специфичные для порта флаги
CMake, передаваемые
cmake . |
CMAKE_BUILD_TYPE | Тип построения (предопределённые профили
построения CMake). По
умолчанию Release ,
Debug при использовании
WITH_DEBUG . |
CMAKE_ENV | Переменные окружения для передачи
cmake . По умолчанию
${CONFIGURE_ENV} . |
CMAKE_SOURCE_PATH | Путь к каталогу с исходным кодом. По умолчанию
${WRKSRC} . |
cmake
,
устанавливаемые пользователемПеременная | Значение |
---|---|
CMAKE_VERBOSE | Разрешает подробный вывод сообщений при
построении. Значение по умолчанию не задано, если не
заданы BATCH или
PACKAGE_BUILDING . |
CMAKE_NOCOLOR | Запрещает цветной вывод сообщений при
построении. Значение по умолчанию не задано, если не
заданы BATCH или
PACKAGE_BUILDING . |
CMake поддерживает следующие
профили построения: Debug
,
Release
, RelWithDebInfo
и MinSizeRel
. Профили
Debug
и Release
учитывают системные флаги *FLAGS
;
RelWithDebInfo
и
MinSizeRel
соответственно определяют
CFLAGS
со значением
-O2 -g
и -Os -DNDEBUG
.
Значение CMAKE_BUILD_TYPE
экспортируется в
нижнем регистре в PLIST_SUB
и должно
использоваться, если порт устанавливает файлы
*.cmake
в зависимости от типа построения
(для примера посмотрите на
deskutils/strigi). Следует
учитывать, что некоторые проекты могут определять собственные
профили построения и/или форсировать конкретный тип
построения через установку
CMAKE_BUILD_TYPE
в файлах
CMakeLists.txt
. Для того чтобы порт
для такого проекта учитывал CFLAGS
и
WITH_DEBUG
, из этих файлов должны быть
удалены значения CMAKE_BUILD_TYPE
.
Большинство проектов, основанных на
CMake, поддерживают метод внешнего
(out-of-source) построения. Для порта внешнее построение
можно запросить с использованием суффикса
:outsource
. В этом случае
CONFIGURE_WRKSRC
,
BUILD_WRKSRC
и
INSTALL_WRKSRC
будут иметь значение
${WRKDIR}/.build
для каталога,
содержащего файлы, получаемые на этапах конфигурации и
построения; при этом каталог с исходным кодом будет
оставаться без изменений.
USES= cmake
Следующий отрывок демонстрирует использование
CMake для порта.
CMAKE_SOURCE_PATH
обычно не требуется,
но может быть установлен, когда исходный код не находится
в верхнем каталоге или если порт используется для
построения части проекта.
USES= cmake:outsource CMAKE_SOURCE_PATH= ${WRKSRC}/subproject
Если ваш порт использует
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 = Environment(**ARGUMENTS)
В дальнейшем ее можно изменить при помощи
env.Append
и
env.Replace
.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.