## Recognize the available methods for compiling a customized binary ##

TODO: should this be renamed s/a customized binary/customized packages/ ?


[Author](authors.html): _name_ _[[contact]]_ _[[BSD_flavour]]_

[Reviewer](technical_reviewers.html): _name_ _[[contact]]_ _[[BSD_flavour]]_

[Reviewer](technical_reviewers.html): Chris Silva racerx@makeworld.com FreeBSD/OpenBSD

----



### Concept ###

Many applications used by servers support make(1) options to compile
a binary with the feature set required by a particular installation.
While the BSDs all use make(1), the admin should recognize
that each BSD uses different mechanisms to use and preserve make(1)
options.


### Introduction ###


#### FreeBSD Ports ####

FreeBSD ports (((ports, FreeBSD))) includes a /usr/ports/KNOBS (((knobs))) file that lists commonly-used options with their descriptions.
These "knobs" can be used with WITH\_\* or WITHOUT\_\* make (((make))) variables, for example: 
WITH\_APACHE2, WITH\_ISPELL, and WITHOUT\_X11.
Some ports honor options like these to override the defaults.

TODO: cover /var/db/ports/*portname*/options, make showconfig, make rmconfig, 

TODO: show examples

### Examples ###


### Practice Exercises ###


### More information ###

DragonFly: mk.conf(5)(((mk.conf))) or make.conf(5), PKG\_OPTIONS,
CFLAGS FreeBSD: -DWITH\_* or WITH\_*=, pkgtools.conf(5), make.conf(5)
NetBSD: PKG\_OPTIONS.<pkg>, CFLAGS, mk.conf(5), PKG\_DEFAULT\_OPTIONS
OpenBSD: bsd.port.mk(5)

Add: /usr/ports/KNOBS