12.6. Writing Something After `bsd.port.mk`
Prev | Chapter 12. Dos and Don'ts | Next

## 12.6. Writing Something After `bsd.port.mk`

Do not write anything after the `.include <bsd.port.mk>` line. It usually can be avoided by including `bsd.port.pre.mk` somewhere in the middle of your `Makefile` and `bsd.port.post.mk` at the end.

### Note:

Include either the `bsd.port.pre.mk`/`bsd.port.post.mk` pair or `bsd.port.mk` only; do not mix these two usages.

`bsd.port.pre.mk` only defines a few variables, which can be used in tests in the `Makefile`, `bsd.port.post.mk` defines the rest.

Here are some important variables defined in `bsd.port.pre.mk` (this is not the complete list, please read `bsd.port.mk` for the complete list).

Variable | Description
--- | ---
`ARCH` | The architecture as returned by `uname -m` (e.g., `i386`)
`OPSYS` | The operating system type, as returned by `uname -s` (e.g., `FreeBSD`)
`OSREL` | The release version of the operating system (e.g., `2.1.5` or `2.2.7`)
`OSVERSION` | The numeric version of the operating system; the same as `__FreeBSD_version`.
`LOCALBASE` | The base of the “local” tree (e.g., `/usr/local`)
`PREFIX` | Where the port installs itself (see more on `PREFIX`).

### Note:

If you have to define the variable `MASTERDIR`, do so before including `bsd.port.pre.mk`.

Here are some examples of things you can write after `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

You did remember to use tab instead of spaces after `BROKEN=` and :-).

Prev | Up | Next
12.5. `__FreeBSD_version` Values | Home | 12.7. Use the `exec` Statement in Wrapper Scripts

All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.