1.\" Copyright (c) 2013-2026 Devin Teske <dteske@FreeBSD.org> 2.\" Copyright (c) 2021-2026 Faraz Vahedi <kfv@FreeBSD.org> 3.\" 4.\" SPDX-License-Identifier: BSD-2-Clause 5.\" 6.Dd August 2, 2026 7.Dt SYSCONF-MAKE 8 8.Os 9.Sh NAME 10.Nm "sysconf make" 11.Nd configure make.conf directives 12.Sh SYNOPSIS 13.Nm sysconf 14.Cm make 15.Op Fl ceFinNqsvVx 16.Op Fl j Ar jail | Fl R Ar dir 17.Op Fl f Ar file 18.Ar name Ns Op Ns Oo +|- Oc Ns = Ns Ar value 19.Ar ... 20.Nm sysconf 21.Cm make 22.Op Fl eFnNqvV 23.Op Fl f Ar file 24.Fl a 25.Nm sysconf 26.Cm make 27.Op Fl E 28.Fl l | L 29.Sh DESCRIPTION 30The 31.Cm make 32target of 33.Xr sysconf 8 34reads and writes 35.Xr make 1 Ns -syntax 36configuration on 37.Pa /etc/make.conf 38by default, 39or on any single file named with 40.Fl f . 41Shared options are in 42.Xr sysconf 8 ; 43make(1) limitations and multi-file policy for other targets in 44.Xr sysconf-targets 8 . 45.Pp 46.Ql += 47is the 48.Xr make 1 49append operator: 50a new 51.Ql name+=value 52line is appended 53.Pq prior assignments for the same name are left intact , 54and reads report the cumulative effective value as 55.Nm make Fl V 56would. 57Assignment modifiers may also be requested by suffixing the name, 58as in 59.Ql CFLAGS+=-DDEBUG . 60.Pp 61.Ql -= 62is not a 63.Xr make 1 64operator; 65it strikes each given word from the 66.Em last 67assignment whose value contains that word as a whole whitespace-separated 68token 69.Pq rewriting the statement, or deleting it when the value becomes empty , 70so successive strikes peel list fragments from the end of the assignment 71chain without collapsing earlier 72.Ql += 73lines. 74.Pp 75.Ql WITH_* 76and 77.Ql WITHOUT_* 78presence knobs may be set with 79.Fl s 80.Pq preferred; writes Ql name= 81or 82.Ar name Ns = ; 83reads report 84.Ql name (present) 85for any assigned value 86.Po 87.Fl e 88prints the real assignment, e.g.\& 89.Ql name= 90or 91.Ql name=t ; 92.Fl n 93prints that same value alone 94.Pc . 95.Fl s 96is a no-op when the knob is already defined 97.Pq any value ; 98an explicit 99.Ar name Ns = 100.Pq including empty 101always writes, and a change of placeholder echoes 102.Ql name: old -> new . 103.Fl s 104does not clear an inverse 105.Ql WITH_ 106or 107.Ql WITHOUT_ 108for the same option 109.Po 110use 111.Fl V 112and clean up manually if needed 113.Pc . 114.Pp 115Writing 116.Ql WITH_ Ns Ar foo Ns =no 117.Pq exact lowercase Ql no 118still stores the assignment but warns to use 119.Ql WITHOUT_ Ns Ar foo Ns =1 , 120matching the 121.Ql .warning 122in 123.Pa share/mk/bsd.mkopt.mk . 124.Nm 125emits that advisory on write and on read 126.Pq named queries and Fl a , 127with 128.Ql file:line: 129of the authoritative statement when known 130.Pq suppressed by Fl q , 131because 132.Xr make.conf 5 133is read by 134.Pa /usr/src 135builds: a line such as 136.Va WITH_MANCOMPRESS Ns =no 137here is what produces 138.Pp 139.Dl warning: Use WITHOUT_MANCOMPRESS=1 instead of WITH_MANCOMPRESS=no 140.Pp 141when running 142.Xr make 1 143in 144.Pa /usr/src 145.Pq after Pa bsd.opts.mk reloads Pa bsd.mkopt.mk for common options . 146The read-time form matters when the default presence display hides the 147.Ql =no 148value behind 149.Ql (present) . 150The same line stays silent under a bare 151.Ql make -C /tmp 152or ports, which never evaluate that option list. 153Neither 154.Nm 155nor make warns for 156.Ql WITHOUT_* Ns =no 157or 158.Ql WITH_* Ns =NO : 159presence of 160.Ql WITHOUT_ 161still disables, and 162.Ql WITH_ 163with a value other than lowercase 164.Ql no 165does not match the check. 166.Pp 167.Va WITHOUT_MODULES 168is not a presence knob: 169its value is a module reject list, so 170.Fl s 171is rejected and reads print the module list rather than 172.Ql (present) . 173Set it with a normal assignment 174.Pq e.g. Va WITHOUT_MODULES Ns = Ns Ar plip . 175.Pp 176This target has no defaults file; 177.Fl d , 178.Fl D , 179and 180.Fl A 181are errors. 182For the 183.Pa /usr/src 184build triad see 185.Xr sysconf-src 8 . 186.Sh FILES 187.Bl -tag -width "/etc/make.conf" -compact 188.It Pa /etc/make.conf 189Default file for the 190.Cm make 191target. 192.El 193.Sh EXAMPLES 194.Dl sysconf make CFLAGS+=-DDEBUG 195.Dl sysconf make -s WITHOUT_MANCOMPRESS 196.Dl sysconf make WITHOUT_MANCOMPRESS 197.Pp 198Strike a word from the last 199.Ql += 200fragment that contains it 201.Pq here removing Ql 3 from the final line only : 202.Bd -literal -offset indent 203bar+=1 204bar+=1 2 205bar+=1 2 3 206.Ed 207.Pp 208.Dl sysconf make bar-=3 209.Pp 210leaves 211.Ql bar+=1 2 212on the last line. 213Repeating with 214.Ql bar-=2 215and 216.Ql bar-=1 217peels that line further, then removes it when emptied. 218.Sh SEE ALSO 219.Xr make 1 , 220.Xr sysconf 8 , 221.Xr sysconf-src 8 , 222.Xr sysconf-targets 8 223.Sh HISTORY 224The 225.Nm sysconf 226utility first appeared in 227.Fx 16.0 . 228.Sh AUTHORS 229.An Devin Teske Aq Mt dteske@FreeBSD.org 230.An Faraz Vahedi Aq Mt kfv@FreeBSD.org 231