"Создаем порт для FreeBSD своими руками" - читать интересную книгу автора (Ачилов Рашид)

(EXTRACT_DEPENDS, RUN_DEPENDS и т. д., см. bsd.port.mk для полного списка),
то на данном этапе построения порта (extract, install и т. д.) система
проверит наличие установленного пакета, который указан как зависимость, и
если он не установлен, система автоматически перейдет к его установке. В
этом проявляется еще одно преимущество системы портов - имея скоростной
канал в Интернете и дешевый трафик, можно не думать, например, о том, какие
файлы нужны для установки KDE - достаточно перейти в каталог x11/kde и
набрать make. Построение правильного списка зависимостей - одна из задач
автора порта. Если указать ненужные программы - порт будет пытаться их
поставить, что будет забивать систему мусором, если же забыть нужные - порт
в лучшем случае не соберется, в худшем - соберется и не будет работать.

GNU_CONFIGURE= yes
CONFIGURE_ARGS += -with-qt-dir=${QT_PREFIX} \
-with-extra-includes=${LOCALBASE}/include \
-with-extra-libs=${LOCALBASE}/lib

Эти строки должны присутствовать (если они есть) после всех переменных
USE_*. Они определяют, что для создания Makefile, управляющего сборкой
программы, будет использоваться configure, и задают дополнительные
аргументы, передаваемые при вызове configure. При сборке программы configure
получает неявные параметры, задаваемые, например, с помощью PREFIX, но может
получать и явные параметры, перечисляемые выше.
Ну и последней строкой нашего Makefile обязательно должна быть:

.include "bsd.port.mk·

которая, собственно, и загрузит основной файл. Вот и все, файл,
управляющий сборкой программы создан.

Файл pkg-plist

Файл составляется как раз на основе протокола инсталляции install.log,
который был сохранен во время установки программы. Следует также учесть, что
программы для KDE часто используют локальные скрипты libtool, которые
устанавливают динамические библиотеки, используя свои собственные
конфигурационные файлы с расширением .la. Поэтому, если в протоколе
установки упоминается, например, kickermenu_contactsmenu.la, нужно открыть
его (это текстовый файл) и посмотреть, какая же библиотека там используется.
Как правило, ее имя совпадает с именем .la файла (в нашем случае
kickermenu_contactsmenu.so), но могут быть отличия, в частности, файлов
может быть несколько. В файл pkg-plist компоненты программы вписываются по
одному в строке, с указанием пути относительно корня установки (по умолчанию
/usr/local).
То есть в нашем случае:

Iib/kde3/kickermenu_contactsmenu.so
Iib/kde3/kickermenu_contactsmenu.la
share/apps/kicker/menuext/contactsmenu.desktop
share/locale/bg/LC_MESSAGES/libkickermenu_contactsmenu.mo