12.6. Написание чего-либо после `bsd.port.mk`
Пред. | Глава 12. Что делать нужно, и что делать нельзя | След.

## 12.6. Написание чего-либо после `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`.
`LOCALBASE` | Корень дерева «local» (например, `/usr/local/`)
`PREFIX` | Куда, собственно, устанавливается порт (обратитесь к подробной информации о `PREFIX`).

### Примечание:

Если вы задаете переменные `USE_IMAKE` или `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=`, не так ли? :-).

Пред. | Наверх | След.
12.5. Значения `__FreeBSD_version` | Начало | 12.7. Использование выражения `exec` в сценариях обёртках

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.