git: 2bee4bb7f1b3 - stable/15 - src.opts: Introduce MK_SOUND

From: Christos Margiolis <christos_at_FreeBSD.org>
Date: Wed, 21 Jan 2026 16:07:19 UTC
The branch stable/15 has been updated by christos:

URL: https://cgit.FreeBSD.org/src/commit/?id=2bee4bb7f1b3605fa0e44bed4578dc87fca2c694

commit 2bee4bb7f1b3605fa0e44bed4578dc87fca2c694
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-01-12 14:16:35 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-01-21 16:06:42 +0000

    src.opts: Introduce MK_SOUND
    
    PR:             291853
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Reviewed by:    zarychtam_plan-b.pwste.edu.pl, markj
    Differential Revision:  https://reviews.freebsd.org/D54456
    
    (cherry picked from commit f74f891581bc4df20431607de9b761107f6a0aa7)
    (cherry picked from commit 37164224eefd11278b0203e1367e1d9d1454da3f)
    (cherry picked from commit 241a43cf9da8933f500e7d0df7fff621fd52168c)
    (cherry picked from commit cf34eb8264954a8fd1e92081bcf67719bddbc2aa)
    (cherry picked from commit 466bad427d74e666e85445729b2e63b82e10d18f)
---
 lib/Makefile                             |  4 ++--
 libexec/rc/rc.d/Makefile                 |  8 ++++----
 sbin/devd/Makefile                       | 12 +++++++-----
 share/man/man5/src.conf.5                |  7 ++++++-
 share/mk/src.opts.mk                     |  6 ++++++
 tools/build/mk/OptionalObsoleteFiles.inc | 13 +++++++++++++
 tools/build/options/WITHOUT_SOUND        |  4 ++++
 tools/build/options/WITH_SOUND           |  1 +
 usr.bin/Makefile                         |  4 ++--
 usr.sbin/Makefile                        |  6 +++---
 10 files changed, 48 insertions(+), 17 deletions(-)

diff --git a/lib/Makefile b/lib/Makefile
index 216ba1d58473..c3a95f00d4ef 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -73,7 +73,6 @@ SUBDIR=	${SUBDIR_BOOTSTRAP} \
 	liblzma \
 	libmemstat \
 	libmd \
-	libmixer \
 	libmt \
 	lib80211 \
 	libnetbsd \
@@ -176,7 +175,6 @@ SUBDIR+=	clang
 .endif
 
 SUBDIR.${MK_CUSE}+= 	libcuse
-SUBDIR.${MK_CUSE}+=	virtual_oss
 SUBDIR.${MK_TOOLCHAIN}+=libpe
 SUBDIR.${MK_DIALOG}+=	libdpv libfigpar
 SUBDIR.${MK_FDT}+=	libfdt
@@ -238,6 +236,8 @@ SUBDIR.${MK_PMC}+=	libpmc libpmcstat
 SUBDIR.${MK_RADIUS_SUPPORT}+=	libradius
 SUBDIR.${MK_SENDMAIL}+=	libmilter libsm libsmdb libsmutil
 SUBDIR.${MK_TELNET}+=	libtelnet
+SUBDIR.${MK_SOUND}+=	libmixer
+SUBDIR.${MK_CUSE}.${MK_SOUND}+=	virtual_oss
 SUBDIR.${MK_TESTS_SUPPORT}+=	atf
 SUBDIR.${MK_TESTS_SUPPORT}+=	liblutok
 SUBDIR.${MK_TESTS}+=	tests
diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile
index 3b7f45e8f101..f25338c68766 100644
--- a/libexec/rc/rc.d/Makefile
+++ b/libexec/rc/rc.d/Makefile
@@ -36,7 +36,6 @@ CONFS=	DAEMON \
 	linux \
 	local \
 	localpkg \
-	mixer \
 	motd \
 	mountcritlocal \
 	mountcritremote \
@@ -301,9 +300,10 @@ CONFGROUPS.${MK_VI}+=		VI
 VIPACKAGE=			vi
 VI=		virecover
 
-CONFGROUPS.${MK_CUSE}+=		VOSS
-VOSSPACKAGE=			sound
-VOSS=		virtual_oss
+CONFGROUPS.${MK_SOUND}+=	SOUND
+SOUNDPACKAGE=			sound
+SOUND=		mixer \
+		virtual_oss
 
 CONFGROUPS.${MK_WIRELESS}+=	HOSTAPD
 HOSTAPDPACKAGE=			hostapd
diff --git a/sbin/devd/Makefile b/sbin/devd/Makefile
index 553aecf4ee88..3dab9f7c9a25 100644
--- a/sbin/devd/Makefile
+++ b/sbin/devd/Makefile
@@ -32,11 +32,6 @@ CONSOLEDIR=		${DEVDDIR}
 CONSOLE+=		moused.conf syscons.conf
 CONSOLEPACKAGE=		console-tools
 
-CONFGROUPS+=		SND
-SNDDIR=			${DEVDDIR}
-SND=			snd.conf
-SNDPACKAGE=		sound
-
 .if ${MK_BLUETOOTH} != "no"
 CONFGROUPS+=		BLUETOOTH
 BLUETOOTHDIR=		${DEVDDIR}
@@ -56,6 +51,13 @@ NVMEDIR=		${DEVDDIR}
 NVME+=			nvmf.conf
 NVMEPACKAGE=		nvme-tools
 
+.if ${MK_SOUND} != "no"
+CONFGROUPS+=		SND
+SNDDIR=			${DEVDDIR}
+SND=			snd.conf
+SNDPACKAGE=		sound
+.endif
+
 .if ${MK_USB} != "no"
 DEVD+=	uath.conf ulpt.conf
 .endif
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index bd8a40589d07..e62290c30b7b 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -1,5 +1,5 @@
 .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman.
-.Dd December 21, 2025
+.Dd January 20, 2026
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -1639,6 +1639,11 @@ legacy docs.
 .It Va WITH_SORT_THREADS
 Enable threads in
 .Xr sort 1 .
+.It Va WITHOUT_SOUND
+Do not build userland sound utilities such as
+.Xr beep 1
+and
+.Xr mixer 8 .
 .It Va WITHOUT_SOURCELESS
 Do not build kernel modules that include sourceless code (either microcode or native code for host CPU).
 When set, it enforces these options:
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index 754f6b2be0d2..1b6ca9b7a5cc 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -171,6 +171,7 @@ __DEFAULT_YES_OPTIONS = \
     SERVICESDB \
     SETUID_LOGIN \
     SHAREDOCS \
+    SOUND \
     SOURCELESS \
     SOURCELESS_HOST \
     SOURCELESS_UCODE \
@@ -500,6 +501,11 @@ MK_CLANG_FULL:= no
 MK_LLVM_COV:= no
 .endif
 
+# CUSE is needed only by virtual_oss, but virtual_oss is part of MK_SOUND.
+.if ${MK_CUSE} == "no"
+MK_SOUND:= no
+.endif
+
 .if ${MK_ASAN} == "yes"
 # In order to get sensible backtraces from ASAN we have to install
 # llvm-symbolizer as /usr/bin/addr2line instead of the elftoolchain version.
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index a7ae52650999..4e602c929568 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -7387,6 +7387,19 @@ OLD_DIRS+=var/spool/clientmqueue
 OLD_FILES+=var/db/services.db
 .endif
 
+.if ${MK_SOUND} == no
+OLD_DIRS+=lib/mixer
+OLD_DIRS+=lib/virtual_oss
+OLD_DIRS+=usr.bin/beep
+OLD_DIRS+=usr.bin/mididump
+OLD_DIRS+=usr.sbin/mixer
+OLD_DIRS+=usr.sbin/sndctl
+OLD_DIRS+=usr.sbin/virtual_oss
+OLD_FILES+=libexec/rc/rc.d/mixer
+OLD_FILES+=libexec/rc/rc.d/virtual_oss
+OLD_FILES+=sbin/devd/snd.conf
+.endif
+
 .if ${MK_NUAGEINIT} == no
 OLD_FILES+=etc/rc.d/nuageinit
 OLD_FILES+=usr/libexec/nuageinit
diff --git a/tools/build/options/WITHOUT_SOUND b/tools/build/options/WITHOUT_SOUND
new file mode 100644
index 000000000000..b4ca08f1263c
--- /dev/null
+++ b/tools/build/options/WITHOUT_SOUND
@@ -0,0 +1,4 @@
+Do not build userland sound utilities such as
+.Xr beep 1
+and
+.Xr mixer 8 .
diff --git a/tools/build/options/WITH_SOUND b/tools/build/options/WITH_SOUND
new file mode 100644
index 000000000000..0e2de52511ac
--- /dev/null
+++ b/tools/build/options/WITH_SOUND
@@ -0,0 +1 @@
+Compile with sound utilities and libraries support.
diff --git a/usr.bin/Makefile b/usr.bin/Makefile
index da1a9b3a681f..6d703c151135 100644
--- a/usr.bin/Makefile
+++ b/usr.bin/Makefile
@@ -7,7 +7,6 @@ SUBDIR=	alias \
 	backlight \
 	banner \
 	basename \
-	beep \
 	bintrans \
 	brandelf \
 	bsdcat \
@@ -86,7 +85,6 @@ SUBDIR=	alias \
 	mandoc \
 	mdo \
 	mesg \
-	mididump \
 	ministat \
 	mkdep \
 	mkfifo \
@@ -240,6 +238,8 @@ SUBDIR.${MK_NIS}+=	ypwhich
 SUBDIR.${MK_OPENSSH}+=	ssh-copy-id
 SUBDIR.${MK_QUOTAS}+=	quota
 SUBDIR.${MK_SENDMAIL}+=	vacation
+SUBDIR.${MK_SOUND}+=	beep
+SUBDIR.${MK_SOUND}+=	mididump
 SUBDIR.${MK_TALK}+=	talk
 SUBDIR.${MK_TELNET}+=	telnet
 SUBDIR.${MK_TESTS_SUPPORT}+=	kyua
diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile
index 0290ed4f1c58..3d3a8443a7cf 100644
--- a/usr.sbin/Makefile
+++ b/usr.sbin/Makefile
@@ -41,7 +41,6 @@ SUBDIR=	adduser \
 	makefs \
 	memcontrol \
 	mfiutil \
-	mixer \
 	mlxcontrol \
 	mountd \
 	mount_smbfs \
@@ -84,7 +83,6 @@ SUBDIR=	adduser \
 	setpmac \
 	smbmsg \
 	snapinfo \
-	sndctl \
 	spi \
 	spray \
 	syslogd \
@@ -131,7 +129,6 @@ SUBDIR.${MK_BSNMP}+=	bsnmpd
 .if ${MK_CAROOT} != "no"
 SUBDIR.${MK_OPENSSL}+=	certctl
 .endif
-SUBDIR.${MK_CUSE}+=	virtual_oss
 SUBDIR.${MK_CXGBETOOL}+=	cxgbetool
 SUBDIR.${MK_EFI}+=	efivar efidp efibootmgr efitable efiwake
 .if ${MK_OPENSSL} != "no"
@@ -200,6 +197,9 @@ SUBDIR.${MK_SENDMAIL}+=	mailstats
 SUBDIR.${MK_SENDMAIL}+=	makemap
 SUBDIR.${MK_SENDMAIL}+=	praliases
 SUBDIR.${MK_SENDMAIL}+=	sendmail
+SUBDIR.${MK_SOUND}+=	mixer
+SUBDIR.${MK_SOUND}+=	sndctl
+SUBDIR.${MK_CUSE}.${MK_SOUND}+=	virtual_oss
 SUBDIR.${MK_TCP_WRAPPERS}+=	tcpdchk
 SUBDIR.${MK_TCP_WRAPPERS}+=	tcpdmatch
 SUBDIR.${MK_TOOLCHAIN}+=	config