Не пишите ничего после строки .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