16.8. Написание чего-либо после bsd.port.mk

Не пишите ничего после строки .include <bsd.port.mk>. Этой строки можно избежать, включив в где-то в середину вашего файла Makefile файл bsd.port.pre.mk, и файл bsd.port.post.mk в конец.

Замечание: Вам нужно включить либо пару файлов bsd.port.pre.mk/bsd.port.post.mk, либо только bsd.port.mk; не используйте оба этих метода одновременно.

В файле bsd.port.pre.mk определяются лишь несколько переменных, которые могут быть использованы в тестах из файла Makefile, в файле bsd.port.post.mk заданы остальные.

Вот некоторые важные переменные, определенные в файле bsd.port.pre.mk (это не полный список, для выяснения полного списка прочтите, пожалуйста, сам файл bsd.port.mk).

Переменная Описание
ARCH Архитектура машины в виде, получаемом по команде uname -m (например, i386)
OPSYS Тип операционной системы, получаемый по команде uname -s (например, FreeBSD)
OSREL Версия релиза операционной системы (например, 2.1.5 или 2.2.7)
OSVERSION Версия операционной системы в виде числа, та же, что и __FreeBSD_version.
PORTOBJFORMAT Формат объектных файлов, используемых в системе (elf или aout); заметьте, что для ``современных'' версий FreeBSD aout не используется.)
LOCALBASE Корень дерева ``local'' (например, /usr/local/)
X11BASE Корень дерева ``X11'' (например, /usr/X11R6)
PREFIX Куда, собственно, устанавливается порт (обратитесь к подробной информации о PREFIX).

Замечание: Если вы задаете переменные USE_IMAKE, USE_X_PREFIX, или MASTERDIR, то делайте это перед тем, как включать bsd.port.pre.mk.

Вот несколько примеров того, что вы можете написать после bsd.port.pre.mk:

# no need to compile lang/perl5 if perl5 is already in system
.if ${OSVERSION} > 300003
BROKEN= perl is in system
.endif

# only one shlib version number for ELF
.if ${PORTOBJFORMAT} == "elf"
TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}
.else
TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR}
.endif

# software already makes link for ELF, but not for a.out
post-install:
.if ${PORTOBJFORMAT} == "aout"
  ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so
.endif

Вы не забываете об использовании табуляции вместо пробелов после BROKEN= и TCL_LIB_FILE=, не так ли? :-).

По вопросам связанным с системой портов для FreeBSD, пишите по адресу <ports@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите по адресу <doc@FreeBSD.org>. Обновлено: 12.03.2015