---
name: "sysconf-src"
section: "8"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/sysconf-src"
---

# sysconf-src(8)

configure the src-env.conf / make.conf / src.conf triad

## NAME

**sysconf src** – configure the src-env.conf / make.conf / src.conf triad

## SYNOPSIS

**sysconf** **src** \[**-ceFinNqsvVx**\] \[**-j** *jail* \| **-R** *dir*\] \[**-f** *file*\] *name*\[\[+\|-\]=*value*\] *...*

**sysconf** **src** \[**-eFnNqvV**\] \[**-f** *file*\] **-a**

**sysconf** **src** \[**-E**\] **-l** \| **-L**

## DESCRIPTION

The **src** target of [sysconf(8)](/sysconf/8.md) is the */usr/src* build audience: it consults the same triad [make(1)](/make/1.md) uses when building the source tree( *src-env.conf*, then *make.conf*, then *src.conf*), honoring SRC\_ENV\_CONF, \_\_MAKE\_CONF, and SRCCONF when set. See [bsdconf\_format(3)](/bsdconf_format/3.md) and [src.conf(5)](/src.conf/5.md). Shared options are in [sysconf(8)](/sysconf/8.md); authoritative-file and removal policy in [sysconf-targets(8)](/sysconf-targets/8.md); ‘+=’ and ‘-=’ semantics match [sysconf-make(8)](/sysconf-make/8.md).

New directives are written to *src.conf* (or the path in SRCCONF); an existing definition is rewritten in the file that last set it. There is no separate ‘src-env’ keyword; use **src** or **-f** for surgical edits of *src-env.conf*.

‘WITH\_\*’ and ‘WITHOUT\_\*’ are presence knobs( [src.conf(5)](/src.conf/5.md) ignores the value; empty ‘name=’ is the preferred spelling). Prefer **-s** *name* over *name*= when only presence matters; **-s** leaves an already-defined knob (any value) unchanged and echoes ‘(present) (unchanged)’. An explicit *name*= (including empty) always writes the requested value, and a change of placeholder echoes ‘name: old -\> new’. **-s** appends to the preferred write file and does not remove an inverse ‘WITH\_’ or ‘WITHOUT\_’ for the same option. Reads show ‘name (present)’ for any assigned value; with **-e**, the real assignment( e.g. ‘name=’ or ‘name=t’); with **-n**, that same value alone (empty when the assignment is ‘name=’). Writing ‘WITH\_*foo*=no’ warns as on the **make** target (see [sysconf-make(8)](/sysconf-make/8.md)); */usr/src* make evaluates such assignments via *bsd.opts.mk* and *src.opts.mk*.

*WITHOUT\_MODULES* is not a presence knob: its value is a module reject list, so **-s** is rejected and reads print the module list rather than ‘(present)’. Set it with a normal assignment (e.g. *WITHOUT\_MODULES*=*plip*).

This target has no defaults file; **-d**, **-D**, and **-A** are errors.

## ENVIRONMENT

- SRC\_ENV\_CONF

  Path of *src-env.conf* (default */etc/src-env.conf*); verbatim, not subject to **-R**.

- \_\_MAKE\_CONF

  Path of *make.conf* (default */etc/make.conf*); verbatim, not subject to **-R**.

- SRCCONF

  Path of *src.conf* (default */etc/src.conf*); verbatim, not subject to **-R**. Also the preferred write file for new directives.

## FILES

- */etc/src-env.conf*

  First file of the triad.

- */etc/make.conf*

  Middle file of the triad.

- */etc/src.conf*

  Last file and preferred write target.

## EXAMPLES

```
sysconf src -s WITHOUT_LLDB
```

```
sysconf src WITHOUT_LLDB=
```

```
sysconf src WITHOUT_LLDB
```

```
sysconf src -x WITHOUT_LLDB
```

```
sysconf src -V CFLAGS
```

## SEE ALSO

[make(1)](/make/1.md), [bsdconf\_format(3)](/bsdconf_format/3.md), [src.conf(5)](/src.conf/5.md), [sysconf(8)](/sysconf/8.md), [sysconf-make(8)](/sysconf-make/8.md), [sysconf-targets(8)](/sysconf-targets/8.md)

## HISTORY

The **sysconf** utility first appeared in FreeBSD 16.0.

## AUTHORS

Devin Teske ⟨*dteske@FreeBSD.org*⟩ Faraz Vahedi ⟨*kfv@FreeBSD.org*⟩
