Не пишите ничего после строки .include <bsd.port.mk>. Этой строки можно избежать, включив в где-то в середину вашего файла Makefile файл bsd.port.pre.mk, и файл bsd.port.post.mk в конец.
Note: Вам нужно включить либо пару файлов pre.mk/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 | Формат объектных файлов, используемых в системе (aout или elf) |
LOCALBASE | Корень дерева ``local'' (например, /usr/local/) |
X11BASE | Корень дерева ``X11'' (например, /usr/X11R6) |
PREFIX | Куда, собственно, устанавливается порт (обратитесь к подробной информации о PREFIX). |
Note: Если вы задаете переменные 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