Module Name:    src
Committed By:   lukem
Date:           Mon Jun  5 22:36:59 UTC 2023

Modified Files:
        src/share/mk: bsd.README

Log Message:
bsd.README: update to reality, sync from mk.conf(5)

Sync user variables from mk.conf(5), sorted.
(Arguably this could just refer to mk.conf(5)
or share/man/man5/mk.conf.5 and remove the copypasta.)

Document NOxxx overrides in own subsection.

Unexpand tabs, tweak after.


To generate a diff of this commit:
cvs rdiff -u -r1.443 -r1.444 src/share/mk/bsd.README

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/share/mk/bsd.README
diff -u src/share/mk/bsd.README:1.443 src/share/mk/bsd.README:1.444
--- src/share/mk/bsd.README:1.443	Wed May 24 10:07:16 2023
+++ src/share/mk/bsd.README	Mon Jun  5 22:36:58 2023
@@ -1,11 +1,14 @@
-#	$NetBSD: bsd.README,v 1.443 2023/05/24 10:07:16 lukem Exp $
+#	$NetBSD: bsd.README,v 1.444 2023/06/05 22:36:58 lukem Exp $
 #	@(#)bsd.README	8.2 (Berkeley) 4/2/94
 
 This is the README file for the make "include" files for the NetBSD
 source tree.  The files are installed in /usr/share/mk, and are,
 by convention, named with the suffix ".mk".
 
-Note, this file is not intended to replace reading through the .mk
+Other sources of relevant documentation are BUILDING in the top
+level of the NetBSD source tree, and the mk.conf(5) man page.
+
+Note: this file is not intended to replace reading through the .mk
 files for anything tricky.
 
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -66,32 +69,35 @@ and are tested with  ${VAR} == "no"  and
 
 The basic rule for the variable naming scheme is as follows:
 
-HOST_xxx	A command that runs on the host machine regardless of
+HOST_<cmd>	A command that runs on the host machine regardless of
 		whether or not the system is being cross compiled, or
 		flags for such a command.
 
-MKxxx		Can be set to "no" to disable functionality, or
-		"yes" to enable it.
+MK<feature>	Can be set to "no" to disable feature <feature>,
+		or "yes" to enable feature <feature>.
 		Usually defaults to "yes", although some variables
 		default to "no".
 		Due to make(1) implementation issues, if a temporary
 		command-line override of a mk.conf(5) or <bsd.own.mk>
 		setting is required whilst still honoring a particular
-		Makefile's setting of MKxxx, use
-			env MKxxx=value make
+		Makefile's setting of MK<feature>, use
+			env MK<feature>=value make
 		instead of
-			make MKxxx=value
+			make MK<feature>=value
 
-NOxxx		If defined, disables a feature.
+NO<feature>	If defined, disables feature <feature>, overriding
+		a user's MK<feature>=yes configuration.
 		Not intended for users.
 		This is to allow Makefiles to disable functionality
 		that they don't support (such as missing man pages).
-		NOxxx variables must be defined before <bsd.own.mk>
-		is included.
+		NO<feature> variables must be defined before <bsd.own.mk>
+		is included, which generally means define before
+		any <*.mk> is included.
+		See "Variables for a Makefile".
 
-TOOL_xxx	A tool that is provided as part of the USETOOLS
+TOOL_<tool>	A tool that is provided as part of the USETOOLS
 		framework.  When not using the USETOOLS framework,
-		TOOL_xxx variables should refer to tools that are
+		TOOL_<tool> variables should refer to tools that are
 		already installed on the host system.
 
 The following variables control how things are made/installed that
@@ -99,530 +105,1094 @@ are not set by default. These should not
 the user to define in MAKECONF (see <bsd.own.mk>, below, or mk.conf(5))
 or on the make(1) command line:
 
-BUILD 		If defined, 'make install' checks that the targets in the
-		source directories are up-to-date and remakes them if they
-                are out of date, instead of blindly trying to install
-                out of date or non-existent targets.
+BUILD		If defined, 'make install' checks that the targets in the
+		source directories are up-to-date and re-makes them if
+		they are out of date, instead of blindly trying to
+		install out of date or non-existent targets.
+
+		Default: Unset.
+
+BUILDID		Identifier for the build.  If set, this should be a short
+		string that is suitable for use as part of a file or
+		directory name.  The identifier will be appended to
+		object directory names, and can be consulted in the
+		make(1) configuration file in order to set additional
+		build parameters, such as compiler flags.  It will also
+		be used as part of the kernel version string, which can
+		be shown by "uname -v".
+
+		Default: Unset.
+
+BUILDINFO	Optional multi-line string containing information about
+		the build.  This will appear in DESTDIR/etc/release, and
+		it will be stored in the buildinfo variable in any
+		kernels that are built.  When such kernels are booted,
+		the sysctl(7) kern.buildinfo variable will report this
+		value.  The string may contain backslash escape
+		sequences, such as "\\" (representing a backslash
+		character) and "\n" (representing a newline).
+
+		Default: Unset.
+
+BUILDSEED	g++(1) uses random numbers when compiling C++ code.  This
+		variable seeds the g++(1) random number generator using
+		-frandom-seed with this value.  By default, it is set to
+		"NetBSD-(majorversion)".  Using a fixed value causes C++
+		binaries to be the same when built from the same sources,
+		resulting in identical (reproducible) builds.  Additional
+		information is available in the g++(1) documentation of
+		-frandom-seed.
+
+		Default: Unset.
+
+MAKEVERBOSE	Level of verbosity of status messages.  Supported values:
+
+		0   No descriptive messages or commands executed by
+		    make(1) are shown.
+
+		1   Brief messages are shown describing what is being
+		    done, but the actual commands executed by make(1) are
+		    not displayed.
+
+		2   Descriptive messages are shown as above (prefixed
+		    with a `#'), and ordinary commands performed by
+		    make(1) are displayed.
+
+		3   In addition to the above, all commands performed by
+		    make(1) are displayed, even if they would ordinarily
+		    have been hidden through use of the "@" prefix in the
+		    relevant makefile.
+
+		4   In addition to the above, commands executed by
+		    make(1) are traced through use of the sh(1) "-x"
+		    flag.
 
-MAKEVERBOSE	Control how "verbose" the standard make(1) rules are.
 		Default: 2
-		Supported values:
-		    0	Minimal output ("quiet")
-		    1	Describe what is occurring
-		    2	Describe what is occurring and echo the actual command
-		    3	Ignore the effect of the "@" prefix in make commands
-		    4	Trace shell commands using the shell's -x flag
-
-MKARGON2	If "no", don't build support for Argon2 into libcrypt.
-		Default: yes
-
-MKATF		If "no", don't build the Automated Testing Framework (ATF),
-		which includes the libatf-c, libatf-c++ and libatf-sh libraries
-		and the various command line tools.  Also, because the build of
-		the libraries is disabled, don't build the NetBSD test suite
-		either.
-		Default: yes
-
-MKBFD		Obsolete, use MKBINUTILS
-
-MKBINUTILS	If "no", don't build binutils (gas, ld, etc and libbfd,
-		libopcodes)
-		Default: yes
-
-MKBSDTAR	If "yes", use the libarchive based cpio and tar instead of
-		the pax frontends.
-		Default: yes
 
-MKCATPAGES	If "no", don't build or install the catman pages.
-		Default: no
+MKAMDGPUFIRMWARE
+		Can be set to "yes" or "no".  Indicates whether to
+		install the /libdata/firmware/amdgpu directory, which is
+		necessary for the amdgpu(4) AMD RADEON GPU video driver.
 
-MKCOMPAT  	If "no", don't build or install the src/compat.
-		Default: yes on amd64, mips64 and sparc64, no elsewhere.
+		Default: "yes" on i386 and x86_64; "no" on other
+		platforms.
 
-MKCOMPATTESTS  	If "yes", build and install the NetBSD test suite when
-		building and installing src/compat.
-		Default: no
+MKARGON2	Can be set to "yes" or "no".  Indicates whether the
+		Argon2 hash is enabled in libcrypt.
 
-MKCOMPATX11  	If "yes", build and install the X11 libraries when
-		building and installing src/compat.
-		Default: no
+		Default: "yes"
 
-MKCOMPATMODULES	If "no", don't build compat modules (xen, etc.)
-		Default: yes
+MKARZERO	Can be set to "yes" or "no".  Indicates whether ar(1)
+		should zero the timestamp, uid, and gid in the archive
+		for reproducible builds.
 
-MKCOMPLEX	If "no", don't build libm support for <complex.h>
-		Default: yes
+		Default: The value of MKREPRO (if defined), otherwise
+		"no".
 
-MKCTF		If "no", do not build and install CTF tools, and also
-		don't generate and manipulate CTF data of ELF binaries
-		during build.
-		Default: no
+MKATF		Can be set to "yes" or "no".  Indicates whether the
+		Automated Testing Framework (ATF) will be built and
+		installed.  This also controls whether the NetBSD test
+		suite will be built and installed, as the tests rely on
+		ATF and cannot be built without it.
 
-NETBSD_OFFICIAL_RELEASE
-		If defined and set to "yes", the build targets an official
-		NetBSD release which is going to be available from
-		ftp.NetBSD.org / cdn.NetBSD.org. This modifies a few
-		default paths in the installer and also creates different
-		links in the install documentation.
-		The auto-build cluster uses this variable to distinguish
-		"daily" builds from real releases.
-		Default: undefined (no)
+		Forced to "no" if MKCXX=no.
 
-NOCTF		Don't generate and manipulate CTF data of ELF binaries
-		during build. It is set internally for standalone programs.
+		Default: "yes"
 
-MKCVS		If "no", don't build or install cvs(1).
-		Default: yes
+MKBFD		Obsolete, use MKBINUTILS.
 
-MKDEBUG		If "no", don't build and install separate debugging symbols
-		into /usr/libdata/debug.
-		Default: no
+MKBINUTILS	Can be set to "yes" or "no".  Indicates whether any of
+		the binutils tools or libraries will be built and
+		installed.  That is, the libraries libbfd, libiberty, or
+		any of the things that depend upon them, e.g.  as(1),
+		ld(1), dbsym(8), or mdsetimage(8).
 
-NODEBUG		Don't compile with debugging symbols during build.
-		It is set internally for standalone programs.
+		Forced to "no" if TOOLCHAIN_MISSING!=no.
 
-MKDEBUGLIB	Build *_g.a debugging libraries, which are compiled
-		with -DDEBUG.
-		Default: no
+		Default: "yes"
 
-MKDEBUGKERNEL	If "yes", force building of kernel symbol info and creation
-		of netbsd.gdb in all kernel builds, independently of the
-		settings for "makeoptions DEBUG" in the kernel config file.
-		The .gdb kernels will be included with the kernel sets.
-		Default: no
+MKBSDGREP	Can be set to "yes" or "no".  Determines which
+		implementation of grep(1) will be built and installed.
+		If "yes", use the BSD implementation.  If "no", use the
+		GNU implementation.
 
-MKDEBUGTOOLS	If "yes" build the tools with debugging symbols.
-		Default: no
+		Default: "no"
+
+MKBSDTAR	Can be set to "yes" or "no".  Determines which
+		implementation of cpio(1) and tar(1) will be built and
+		installed.  If "yes", use the libarchive-based
+		implementations.  If "no", use the pax(1) based
+		implementations.
+
+		Default: "yes"
+
+MKCATPAGES	Can be set to "yes" or "no".  Indicates whether
+		preformatted plaintext manual pages will be created and
+		installed.
+
+		Forced to "no" if MKMAN=no or MKSHARE=no.
+
+		Default: "no"
+
+MKCLEANSRC	Can be set to "yes" or "no".  Indicates whether `make
+		clean' and `make cleandir' will delete file names in
+		CLEANFILES or CLEANDIRFILES from both the object
+		directory, .OBJDIR, and the source directory, .SRCDIR.
+
+		If "yes", then these file names will be deleted relative
+		to both .OBJDIR and .CURDIR.  If "no", then the deletion
+		will be performed relative to .OBJDIR only.
+
+		Default: "yes"
+
+MKCLEANVERIFY	Can be set to "yes" or "no".  Controls whether `make
+		clean' and `make cleandir' will verify that files have
+		been deleted.  If "yes", then file deletions will be
+		verified using ls(1).  If "no", then file deletions will
+		not be verified.
+
+		Default: "yes"
+
+MKCOMPAT	Can be set to "yes" or "no".  Indicates whether support
+		for multiple ABIs is to be built and installed.
+
+		Forced to "no" if NOCOMPAT is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Default: "yes" on aarch64 (without gcc), mips64,
+		powerpc64, riscv64, sparc64, and x86_64; "no" on other
+		platforms.
+
+MKCOMPATMODULES
+		Can be set to "yes" or "no".  Indicates whether the
+		compat kernel modules will be built and installed.
+
+		Forced to "no" if MKCOMPAT=no.
+
+		Default: "yes" on evbppc-powerpc and mips64; "no" on
+		other platforms.
+
+MKCOMPATTESTS	Can be set to "yes" or "no".  Indicates whether the
+		NetBSD test suite for src/compat will be built and
+		installed.
+
+		Forced to "no" if MKCOMPAT=no.
+
+		Default: "no"
+
+MKCOMPATX11	Can be set to "yes" or "no".  Indicates whether the X11
+		libraries will be built and installed.
+
+		Forced to "no" if MKCOMPAT=no.
+
+		Default: "no"
+
+MKCOMPLEX	Can be set to "yes" or "no".  Indicates whether the Math
+		Library (libm, -lm) is compiled with support for
+		<complex.h>.
+
+		Default: "yes"
+
+MKCROSSGDB	Can be set to "yes" or "no".  Create a cross-gdb as a
+		host tool.
+
+		Default: "no"
+
+MKCRYPTO	Obsolete.
+
+MKCTF		Can be set to "yes" or "no".  Indicates whether CTF tools
+		are to be built and installed.  If "yes", the tools will
+		be used to generate and manipulate CTF data of ELF
+		binaries during build.
+
+		Forced to "no" if NOCTF is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		This is disabled internally for standalone programs in
+		/usr/mdec.
 
-MKDEPINCLUDES	If "yes" issue .include statements in the .depend file
-		instead of inlining the contents of the .d files. Useful
+		Default: "yes" on aarch64, amd64, and i386; "no" on other
+		platforms.
+
+MKCVS		Can be set to "yes" or "no".  Indicates whether cvs(1)
+		will be built and installed.
+
+		Default: "yes"
+
+MKCXX		Can be set to "yes" or "no".  Indicates whether C++
+		support is enabled.
+
+		If "no", C++ compilers and software will not be built,
+		and acts as MKATF=no MKGCCCMDS=no MKGDB=no MKGROFF=no
+		MKKYUA=no.
+
+		Default: "yes"
+
+MKDEBUG		Can be set to "yes" or "no".  Indicates whether debug
+		information should be generated for all userland
+		binaries.  The result is collected as an additional
+		debug.tgz and xdebug.tgz set and installed in
+		DESTDIR/usr/libdata/debug.
+
+		Forced to "no" if NODEBUG is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Default: "no"
+
+MKDEBUGKERNEL	Can be set to "yes" or "no".  Indicates whether debugging
+		symbols will be built for kernels by default; pretend as
+		if makeoptions DEBUG="-g" is specified in kernel
+		configuration files.  This will also put the debug kernel
+		netbsd.gdb in the kernel sets.  See options(4) for
+		details.  This is useful if a cross-gdb is built as well
+		(see MKCROSSGDB).
+
+		Default: "no"
+
+MKDEBUGLIB	Can be set to "yes" or "no".  Indicates whether debug
+		libraries (lib*_g.a) will be built and installed.  Debug
+		libraries are compiled with "-g -DDEBUG".
+
+		Forced to "no" if NODEBUGLIB is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Default: "no"
+
+MKDEBUGTOOLS	Can be set to "yes" or "no".  Indicates whether debug
+		information (lib*_g.a) will be included in the build
+		toolchain.
+
+		Default: "no"
+
+MKDEPINCLUDES	Can be set to "yes" or "no".  Indicates whether to add
+		.include statements in the .depend files instead of
+		inlining the contents of the *.d files.  This is useful
 		when stale dependencies are present, to list the exact
-		files that need refreshing. It is off by default because
-		it is possibly slower.
-		Default "no"
-
-MKDOC		If "no", don't build or install the documentation.
-		Default: yes
-
-MKDTRACE	If "no", do not build and install the kernel modules,
-		utilities and libraries used to implement the dtrace(1)
-		facility.
-		Default: no
+		files that need refreshing, but it is possibly slower
+		than inlining.
+
+		Default: "no"
+
+MKDOC		Can be set to "yes" or "no".  Indicates whether system
+		documentation destined for DESTDIR/usr/share/doc will be
+		installed.
+
+		Forced to "no" if NODOC is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Forced to "no" if MKSHARE=no.
+
+		Default: "yes"
+
+MKDTB		Can be set to "yes" or "no".  Indicates whether the
+		devicetree blobs will be built and installed.
+
+		Default: "yes" on aarch64, armv6, armv7, riscv32, and
+		riscv64; "no" on other platforms.
+
+MKDTC		Can be set to "yes" or "no".  Indicates whether the
+		Device Tree Compiler (dtc) will be built and installed.
+
+		Default: "yes"
+
+MKDTRACE	Can be set to "yes" or "no".  Indicates whether the
+		kernel modules, utilities, and libraries for dtrace(1)
+		support are to be built and installed.
+
+		Default: "yes" on aarch64, amd64, and i386; "no" on other
+		platforms.
+
+MKDYNAMICROOT	Can be set to "yes" or "no".  Indicates whether all
+		programs should be dynamically linked, and to install
+		shared libraries required by /bin and /sbin and the
+		shared linker ld.elf_so(1) into /lib.  If "no", link
+		programs in /bin and /sbin statically.
+
+		Default: "no" on ia64; "yes" on other platforms.
+
+MKEXTSRC	Obsolete.
+
+MKFIRMWARE	Can be set to "yes" or "no".  Indicates whether to
+		install the /libdata/firmware directory, which is
+		necessary for various drivers, including: athn(4),
+		bcm43xx(4), bwfm(4), ipw(4), iwi(4), iwm(4), iwn(4),
+		otus(4), ral(4), rtwn(4), rum(4), run(4), urtwn(4),
+		wpi(4), zyd(4), and the Tegra 124 SoC.
+
+		Default: "yes" on amd64, cobalt, evbarm, evbmips, evbppc,
+		hpcarm, hppa, i386, mac68k, macppc, sandpoint, and
+		sparc64; "no" on other platforms.
+
+MKGCC		Can be set to "yes" or "no".  Indicates whether gcc(1) or
+		any related libraries (libg2c, libgcc, libobjc,
+		libstdc++) will be built and installed.
+
+		Forced to "no" if TOOLCHAIN_MISSING!=no or
+		EXTERNAL_TOOLCHAIN is defined.
+
+		Default: "yes"
+
+MKGCCCMDS	Can be set to "yes" or "no".  Indicates whether gcc(1)
+		will be built and installed.  If "no", then MKGCC
+		controls if the GCC libraries will be built and
+		installed.
+
+		Forced to "no" if MKCXX=no.
+
+		Default: "no" on m68000; "yes" on other platforms.
+
+MKGDB		Can be set to "yes" or "no".  Indicates whether gdb(1)
+		will be built and installed.
 
-MKDTB		If "no", disables building of devicetree blobs.
-		Default: yes on aarch64 and armv7, no elsewhere.
+		Forced to "no" if MKCXX=no or TOOLCHAIN_MISSING!=no.
 
-MKDYNAMICROOT	If "no", build programs in /bin and /sbin statically,
-		don't install certain libraries in /lib, and don't
-		install the shared linker into /libexec.
-		Default: yes
-
-MKFIRMWARE      If not "no", install the /libdata/firmware directory,
-		which is necessary for several drivers: athn(4), bwfm(4),
-		ipw(4), iwi(4), iwm(4), iwn(4), otus(4), rtwn(4), urtwn(4),
-		wpi(4), ral(4), rum(4), run(4), zyd(4), bcm43xx(4), and
-		the Tegra 124 SoC.
-		Default: yes on amd64, cobalt, evbarm evbmips, evbppc, hpcarm,
-		hppa, i386, mac68k, macppc, sandpoint, and sparc64, no elsewhere.
-
-MKGCC		If "no", don't build gcc(1) or any of the GCC-related
-		libraries (libgcc, libobjc, libstdc++).
-		Default: yes
-
-MKGCCCMDS	If "no", don't build gcc(1), but do build the GCC-related
-		libraries (libgcc, libobjc, libstdc++).
-		Default: yes
-
-MKGDB		If "no", don't build gdb(1).
-		Default: yes
-
-MKGROFFHTMLDOC	If "no", avoid trying to use groff to generate html for
-		miscellaneous articles, as this seems to sometimes want
-		to run software not in base. Does not affect html man
+		Default: "no" on ia64 and or1k; "yes" on other platforms.
+
+MKGROFF		Can be set to "yes" or "no".  Indicates whether groff(1)
+		will be built, installed, and used to format some of the
+		PostScript and PDF documentation.
+
+		Forced to "no" if MKCXX=no.
+
+		Default: "yes"
+
+MKGROFFHTMLDOC	Can be set to "yes" or "no".  Indicates whether to use
+		groff(1) to generate HTML for miscellaneous articles
+		which sometimes requires software not in the base
+		installation.  Does not affect the generation of HTML man
 		pages.
-		Default: no
 
-MKHESIOD	If "no", disables building of Hesiod infrastructure
-		(libraries and support programs).
-		Default: yes
-
-MKHOSTOBJ	If not "no", for programs intended to be run on the compile
-		host, the name, release, and architecture of the host
-		operating system will be suffixed to the name of the object
-		directory created by "make obj".
-		Default: no
+		Default: "no"
+
+MKHESIOD	Can be set to "yes" or "no".  Indicates whether the
+		Hesiod infrastructure (libraries and support programs)
+		will be built and installed.
+
+		Default: "yes"
+
+MKHOSTOBJ	Can be set to "yes" or "no".  If "yes", then for programs
+		intended to be run on the compile host, the name,
+		release, and architecture of the host operating system
+		will be suffixed to the name of the object directory
+		created by "make obj".  (This allows multiple host
+		systems to compile NetBSD for a single target.)	 If "no",
+		then programs built to be run on the compile host will
+		use the same object directory names as programs built to
+		be run on the target.
+
+		Default: "no"
+
+MKHTML		Can be set to "yes" or "no".  Indicates whether the HTML
+		manual pages are created and installed.
 
-MKHTML		If "no", don't build or install the HTML man pages.
-		Default: yes
+		Forced to "no" if NOHTML is defined, usually in the
+		Makefile before any make(1) .include directives.
 
-MKIEEEFP	If "no", don't add code for IEEE754/IEC60559 conformance.
+		Forced to "no" if MKMAN=no or MKSHARE=no.
+
+		Default: "yes"
+
+MKIEEEFP	Can be set to "yes" or "no".  Indicates whether code for
+		IEEE754/IEC60559 conformance will be built and installed.
 		Has no effect on most platforms.
-		Default: yes
 
-MKSTRIPIDENT	Strip the RCS IDs from program binaries and shared libraries.
-		Default: no
+		Default: "yes"
 
-MKINET6		If "no", disables building of INET6 (IPv6) infrastructure
-		(libraries and support programs).  This option must not be
-		set to "no" if MKX11 is not "no".
-		Default: yes
-
-MKINFO		If "no", don't build or install Info documentation from
-		Texinfo source files.
-		Default: yes
-
-MKIPFILTER	If "no", don't build or install the IP Filter programs and LKM.
-		Default: yes
-
-MKISCSI		If "no", don't build or install iSCSI library or applications
-		(depends on libpthread.)
-		Default: yes
-
-MKKERBEROS	If "no", disables building of Kerberos v5
-		infrastructure (libraries and support programs).
-		Default: yes
-
-MKKMOD		If "no", disables building of kernel modules.
-		Default: yes
-
-MKKYUA		If "no", don't build Kyua nor its dependent library Lutok.
-		Note that setting this to "no" does not disable the build of
-		the NetBSD test suite itself; the build of the tests is
-		controlled by the MKATF knob.
-		Default: no (until the import is done and validated)
-
-MKLDAP		If "no", disables building of LDAP infrastructure
-		(libraries and support programs).
-		Default: yes
-
-MKLIBCSANITIZER	If "yes", use the selected sanitizer inside libc to compile
-		userland programs and libraries as defined in
-		USE_LIBCSANITIZER, which defaults to "undefined".
-
-		The undefined behavior detector is currently the only supported
-		sanitizer in this mode. Its runtime differs from the UBSan
-		available in MKSANITIZER, and it is reimplemented from scratch
-		as micro-UBSan in the user mode (uUBSan). Its code is shared
-		with the kernel mode variation (kUBSan). The runtime is
-		stripped down from C++ features, in particular -fsanitize=vptr
-		is not supported and explicitly disabled. The only runtime
-		configuration is restricted to the LIBC_UBSAN environment
-		variable, that is designed to be safe for hardening.
-
-		The USE_LIBCSANITIZER value is passed to the -fsanitize=
-		argument to the compiler in CFLAGS and CXXFLAGS, but not in
-		LDFLAGS, as the runtime part is located inside libc.
+MKINET6		Can be set to "yes" or "no".  Indicates whether INET6
+		(IPv6) infrastructure (libraries and support programs)
+		will be built and installed.
 
-		Additional sanitizer arguments can be passed through
-		LIBCSANITIZERFLAGS.
-		Default: no
+		Note: MKINET6 must not be set to "no" if MKX11!=no.
 
-MKLIBCXX	If not "no", build and install libc++.
-		Default: no
+		Default: "yes"
+
+MKINFO		Can be set to "yes" or "no".  Indicates whether GNU Info
+		files, used for the documentation for most of the
+		compilation tools, will be built and installed.
+
+		Forced to "no" if NOINFO is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Forced to "no" if MKSHARE=no.
+
+		Default: "yes"
+
+MKIPFILTER	Can be set to "yes" or "no".  Indicates whether the
+		ipf(4) programs, headers, and other components will be
+		built and installed.
+
+		Default: "yes"
+
+MKISCSI		Can be set to "yes" or "no".  Indicates whether the iSCSI
+		library and applications are built and installed.
+
+		Default: "no" on m68000; "yes" on other platforms.
+
+MKKDEBUG	Deprecated, use MKDEBUGKERNEL.
+
+MKKERBEROS	Can be set to "yes" or "no".  Indicates whether the
+		Kerberos v5 infrastructure (libraries and support
+		programs) will be built and installed.  Caution: the
+		default pam(8) configuration requires that Kerberos be
+		present even if not used.  Do not install a userland
+		without Kerberos without also either updating the
+		pam.conf(5) files or disabling PAM via MKPAM.  Otherwise
+		all logins will fail.
+
+		Default: "yes"
+
+MKKERBEROS4	Obsolete.
+
+MKKMOD		Can be set to "yes" or "no".  Indicates whether kernel
+		modules will be built and installed.
+
+		Default: "no" on or1k; "yes" on other platforms.
+
+MKKYUA		Can be set to "yes" or "no".  Indicates whether Kyua (the
+		testing infrastructure used by NetBSD) will be built and
+		installed.
+
+		Forced to "no" if MKCXX=no.
+
+		Note: This does not control the installation of the tests
+		themselves.  The tests rely on the ATF libraries and
+		therefore their build is controlled by the MKATF
+		variable.
+
+		Default: "no" until the import of Kyua is done and
+		validated.
+
+MKLDAP		Can be set to "yes" or "no".  Indicates whether the
+		Lightweight Directory Access Protocol (LDAP)
+		infrastructure (libraries and support programs) will be
+		built and installed.
+
+		Default: "yes"
+
+MKLIBCSANITIZER
+		Can be set to "yes" or "no".  Indicates whether to use
+		the sanitizer for libc, using the sanitizer defined by
+		USE_LIBCSANITIZER.
+
+		Forced to "no" if NOLIBCSANITIZER is defined, usually in
+		the Makefile before any make(1) .include directives.
+
+		Default: "no"
+
+MKLIBCXX	Can be set to "yes" or "no".  Indicates if libc++ will be
+		built and installed (usually for clang++(1)).
 
-MKLIBSTDCXX	If not "no", build and install libstdc++.
-		Default: yes
+		Default: "yes" if MKLLVM=yes; "no" otherwise.
+
+MKLIBSTDCXX	Can be set to "yes" or "no".  Indicates if libstdc++ will
+		be built and installed (usually for g++(1)).
+
+		Default: "yes"
+
+MKLINKLIB	Can be set to "yes" or "no".  Indicates whether all of
+		the shared library infrastructure will be built and
+		installed.
+
+		If "no", prevents:
+		-   installation of the *.a libraries
+		-   installation of the *_pic.a libraries on PIC systems
+		-   building of *.a libraries on PIC systems
+		-   installation of .so symlinks on ELF systems
 
-MKLINKLIB	If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no".
-		Also:
-			- don't install the .a libraries
-			- don't install _pic.a libraries on PIC systems
-			- don't build .a libraries on PIC systems
-			- don't install the .so symlink on ELF systems
 		I.e, only install the shared library (and the .so.major
 		symlink on ELF).
-		Default: yes
 
-MKLINT		If not "no", build and install the lint libraries.
-		Default: no
+		Forced to "no" if NOLINKLIB is defined, usually in the
+		Makefile before any make(1) .include directives.
 
-MKLLVM		If "yes", build and install clang as host tool and target
-		compiler.  Use as system compiler is enabled with HAVE_LLVM
-		(see below for details).
-		Default: no
+		If "no", acts as MKLINT=no MKPICINSTALL=no MKPROFILE=no.
 
-MKLLVMRT	If "yes", build the LLVM PIC libraries necessary for the
-		various Mesa backend and the native JIT of the target
-		architecture, if supported.  (Radeon R300 and newer,
-		LLVMPIPE for most.)
-		Default: no, enabled automatically with X11 on x86 and aarch64.
-
-MKLVM		If "no", don't build or install the logical volume manager
-		and device mapper tools and libraries
-		Default: yes
-
-MKMAN		If "no", don't build or install the man or catman pages,
-		and also acts as "MKCATPAGES=no MKHTML=no".
-		Default: yes
-
-MKMANDOC	If "yes", mandoc is built as tool and used to compile
-		catman or html pages.  A directory can be exempted by
-		defining NOMANDOC.  Individual man pages are exempted
-		if NOMANDOC.${target} is set to "yes".
-		Default: yes
+		Default: "yes"
 
-MKMANZ		If not "no", compress manual pages at installation time.
-		Default: no
+MKLINT		Can be set to "yes" or "no".  Indicates whether lint(1)
+		will be run against portions of the NetBSD source code
+		during the build, and whether lint libraries will be
+		installed into DESTDIR/usr/libdata/lint.
 
-MKMDNS		If "no", disables building of mDNS infrastructure
-		(libraries and support programs).
-		Default: yes
-
-MKNLS		If "no", don't build or install the NLS files and locale
-		definition files.
-		Default: yes
-
-MKNOUVEAUFIRMWARE If "yes", install the /libdata/firmware/nouveau directory,
-		which is necessary for the nouveau DRM driver.
-		Default: yes on x86 and aarch64, no elsewhere.
+		Forced to "no" if NOLINT is defined, usually in the
+		Makefile before any make(1) .include directives.
 
-MKNPF		If "no", don't build or install the NPF and its modules.
-		Default: yes
+		Forced to "no" if MKLINKLIB=no.
 
-MKNSD		If "no", don't build or install the "nsd" DNS authoritative
-		server.
-		Default: no
+		Default: "no"
 
-MKOBJ		If "no", don't enable the rule which creates objdirs,
-		and also acts as "MKOBJDIRS=no".
-		Default: yes
+MKLLD		Obsolete.
 
-MKOBJDIRS	If "no", don't create objdirs during a "make build".
-		Default: no
+MKLLDB		Obsolete.
 
-MKPAM		If "no", disables building of PAM authentication
-		infrastructure (libraries and support programs).
-		Default: yes
+MKLLVM		Can be set to "yes" or "no".  Indicates whether clang(1)
+		is installed as a host tool and target compiler.
 
-MKPCC		If "no", don't build pcc(1) or any of the PCC-related
-		libraries (libpcc, libpccsoftfloat).
-		Default: no
+		If "yes", acts as MKLIBCXX=yes.
 
-MKPF		If "no", don't build or install the pf programs and LKM.
-		Default: yes
+		Note: Use of clang(1) as the system compiler is
+		controlled by HAVE_LLVM.
 
-MKPIC		If "no", don't build or install shared libraries, and
-		also acts as "MKPICLIB=no"
-		Default: yes (for MACHINE_ARCHs that support it)
-
-MKPICINSTALL	If "no", don't install the *_pic.a libraries.
-		Default: yes
-
-MKPICLIB	If "no", don't build *_pic.a libraries, and build the
-		shared object libraries from the .a libraries.
-		A symlink is installed in ${DESTDIR}/usr/lib for the
-		_pic.a library pointing to the .a library.
-		Default: yes
-
-MKPIE		If "no", create regular executables. Otherwise create
-		PIE (Position Independent Executables).
-		Default: depends on CPU architecture
+		Default: "no"
 
-NOPIE		Don't create PIE (Position Independent Executables)
-		It is set internally for standalone programs.
+MKLLVMRT	Can be set to "yes" or "no".  Indicates whether to build
+		the LLVM PIC libraries necessary for the various Mesa
+		backend and the native JIT of the target architecture, if
+		supported.  (Radeon R300 and newer, LLVMPIPE for most.)
 
-MKPIGZGZIP	If "no", only install pigz as pigz, not gzip.
-		Default: no
+		Default: If MKX11=yes and HAVE_MESA_VER>=19, "yes" on
+		aarch64, amd64, and i386; "no" otherwise.
 
-MKPOSTFIX	If "no", don't build or install postfix(1).
-		Default: yes
+MKLVM		Can be set to "yes" or "no".  If not "no", build and
+		install the logical volume manager.
 
-MKPROFILE	If "no", don't build or install the profiling (*_p.a) libraries.
-		Default: yes
+		Default: "yes"
 
-MKRADEONFIRMWARE If "yes", install the /libdata/firmware/radeon directory,
-		which is necessary for the radeon DRM driver.
-		Default: yes on x86 and aarch64, no elsewhere.
-
-MKRELRO		If "partial", set the non-PLT GOT to read-only. If "full"
-		also force immediate symbol binding.
-		Default: partial on x86 and aarch64, no elsewhere.
-
-NOFULLRELRO	Don't compile with immediate symbol binding during build.
-		It is set internally for standalone programs.
-
-MKREPRO         If "yes", create reproducible builds. This enables
-		different switches to make two builds from the same source tree
-		result in the same build results.
-		Default: no
+MKMAKEMANDB	Can be set to "yes" or "no".  Indicates if the whatis
+		tools (apropos(1), whatis(1), getNAME(8), makemandb(8),
+		and makewhatis(8)), should be built, installed, and used
+		to create and install the whatis.db.
 
-MKSANITIZER	if "yes", use the selected sanitizer to compile userland
-		programs as defined in USE_SANITIZER, which defaults to
-		"address". A selection of available sanitizers:
-			address:	A memory error detector (default)
-			thread:		A data race detector
-			memory:		An uninitialized memory read detector
-			undefined:	An undefined behavior detector
-			leak:		A memory leak detector
-			dataflow:	A general data flow analysis
-			cfi:		A control flow detector
-			safe-stack:	Protect against stack-based corruption
-			scudo:		The Scudo Hardened allocator
-		It's possible to specify multiple sanitizers within the
-		USE_SANITIZER option (comma separated). The USE_SANITIZER value
-		is passed to the -fsanitize= argument to the compiler.
-		Additional arguments can be passed through SANITIZERFLAGS.
-		The list of supported features and their valid combinations
-		depends on the compiler version and target CPU architecture.
-		Default: no
+		Default: "yes"
 
-MKSHARE		If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no
-		MKMAN=no MKNLS=no".
-		I.e, don't build catman pages, documentation, Info
-		documentation, man pages, NLS files, ...
-		Default: yes
-
-MKSKEY		If "no", disables building of S/key authentication
-		infrastructure (libraries and support programs).
-		Default: yes
-
-MKSLJIT		If "no", disables building of sljit (stack-less platform
-		independent JIT compiler) private library and tests.
-		Default: yes on amd64, i386 and sparc, no elsewhere.
-
-MKSOFTFLOAT	If not "no", build with options to enable the compiler to
-		generate output containing library calls for floating
-		point and possibly soft-float library support.
-		Default: no
+MKMAN		Can be set to "yes" or "no".  Indicates whether manual
+		pages will be installed.
+
+		Forced to "no" if NOMAN is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Forced to "no" if MKSHARE=no.
+
+		If "no", acts as MKCATPAGES=no MKHTML=no.
+
+		Default: "yes"
+
+MKMANDOC	Can be set to "yes" or "no".  Indicates whether mandoc(1)
+		will be built and installed, and used to create and
+		install catman and HTML pages.
+
+		If "no", use groff(1) instead of mandoc(1).
+
+		Forced to "no" if NOMANDOC or NOMANDOC.<target> (for a
+		given target <target>) is defined, usually in the Makefile
+		before any make(1) .include directives.
+
+		Only used if MKMAN=yes.
+
+		Default: "yes"
+
+MKMANZ		Can be set to "yes" or "no".  Indicates whether manual
+		pages should be compressed with gzip(1) at installation
+		time.
+
+		Only used if MKMAN=yes.
+
+		Default: "no"
+
+MKMCLINKER	Obsolete.
+
+MKMDNS		Can be set to "yes" or "no".  Indicates whether the mDNS
+		(Multicast DNS) infrastructure (libraries and support
+		programs) will be built and installed.
+
+		Default: "yes"
+
+MKNLS		Can be set to "yes" or "no".  Indicates whether Native
+		Language System (NLS) locale zone files will be built and
+		installed.
+
+		Forced to "no" if NONLS is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Forced to "no" if MKSHARE=no.
+
+		Default: "yes"
+
+MKNOUVEAUFIRMWARE
+		Can be set to "yes" or "no".  Indicates whether to
+		install the /libdata/firmware/nouveau directory, which is
+		necessary for the nouveau(4) NVIDIA video driver.
+
+		Default: "yes" on aarch64, i386, and x86_64, "no" on
+		other platforms.
+
+MKNPF		Can be set to "yes" or "no".  Indicates whether the NPF
+		packet filter is to be built and installed.
+
+		Default: "yes"
+
+MKNSD		Can be set to "yes" or "no".  Indicates whether the Name
+		Server Daemon (NSD) is to be built and installed.
+
+		Default: "no"
+
+MKOBJ		Can be set to "yes" or "no".  Indicates whether object
+		directories will be created when running "make obj".  If
+		"no", then all built files will be located inside the
+		regular source tree.
 
-MKSTATICLIB	If "no", don't build or install the normal static (*.a)
+		Forced to "no" if NOOBJ is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		If "no", acts as MKOBJDIRS=no.
+
+		Note: Setting MKOBJ to "no" is not recommended and may
+		cause problems when updating the tree with cvs(1).
+
+		Default: "yes"
+
+MKOBJDIRS	Can be set to "yes" or "no".  Indicates whether object
+		directories will be created automatically (via a "make
+		obj" pass) at the start of a build.
+
+		Forced to "no" if MKOBJ=no.
+
+		Default: "no"
+
+MKPAM		Can be set to "yes" or "no".  Indicates whether the
+		pam(8) framework (libraries and support files) will be
+		built and installed.  The pre-PAM code is not supported
+		and may be removed in the future.
+
+		Default: "yes"
+
+MKPCC		Can be set to "yes" or "no".  Indicates whether pcc(1) or
+		any related libraries (libpcc, libpccsoftfloat) will be
+		built and installed.
+
+		Default: "no"
+
+MKPERFUSE	Obsolete.
+
+MKPF		Can be set to "yes" or "no".  Indicates whether the pf(4)
+		programs, headers, and LKM will be built and installed.
+
+		Default: "yes"
+
+MKPIC		Can be set to "yes" or "no".  Indicates whether shared
+		objects and libraries will be created and installed.  If
+		"no", the entire built system will be statically linked.
+
+		Forced to "no" if NOPIC is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		If "no", acts as MKPICLIB=no.
+
+		Default: "no" on m68000; "yes" on other platforms.
+
+MKPICINSTALL	Can be set to "yes" or "no".  Indicates whether the ar(1)
+		format libraries (lib*_pic.a), used to generate shared
+		libraries, are installed.
+
+		Forced to "no" if NOPICINSTALL is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Forced to "no" if MKLINKLIB=no.
+
+		Default: "no"
+
+MKPICLIB	Can be set to "yes" or "no".  Indicates whether the ar(1)
+		format libraries (lib*_pic.a), used to generate shared
 		libraries.
-		Default: yes
 
-MKSTATICPIE	Compile in support for static pie binaries. These binaries
-		use a special support in crt0.o for resolving relative
-		relocations and require linker support.
-		Default: yes on platforms that support it.
-
-MKSTRIPSYM	If "yes", strip all local symbols from shared libraries;
-		the affect is equivalent to -x option of ld(1). If "no",
-		strip only temporary local symbols; the affect is equivalent
-		to -X option of ld(1). Keeping non-temporary local symbols
-		such as static function names is useful on using DTrace for
-		userland libraries and getting a backtrace from a rump kernel
-		loading shared libraries.
-		Default: yes
-
-MKTEGRAFIRMWARE	If "no", install the /libdata/firmware/nvidia directory,
-		which is necessary for the NVIDIA Tegra XHCI driver.
-		Default: yes on evbarm, no elsewhere.
+		Forced to "no" if MKPIC=no.
 
-MKTPM		If "no" then don't build the Trusted Platform Module
-		infrastructure.
-		Default: no
+		Default: "no" on vax; "yes" on other platforms.
 
-MKUNBOUND	If not "no", build and install the "unbound" DNS resolver.
-		Default: yes
+MKPIE		Indicates whether Position Independent Executables (PIE)
+		will be built and installed.
 
-MKUNPRIVED	If not "no", don't set the owner/group/mode when installing
-		files or directories, and keep a metadata log of what
-		the owner/group/mode should be.  This allows a
-		non-root "make install".
-		Default: no
+		Forced to "no" if NOPIE is defined, usually in the
+		Makefile before any make(1) .include directives.
 
-MKUPDATE 	If not "no", 'make install' only installs targets that are
-		more recently modified in the source directories that their
-		installed counterparts.
-		Default: no
+		Forced to "no" if COVERITY_TOP_CONFIG is defined.
 
-MKX11		If not "no", 'make build' also descends into
-		src/external/mit/xorg to cross-build X11 and automatically
-		enables creation of X sets.
-		Default: no
+		This is disabled internally for standalone programs in
+		/usr/mdec.
 
-MKX11FONTS	If not "no", do not build or install the X fonts.  The xfont
-		set is still created but will be empty.
-		Default: yes
-
-MKX11MOTIF:	If "yes", build the native X11 libGLw with Motif stubs.  If
-		Motif is not installed in the default location /usr/pkg, the
-		location can be specified using the X11MOTIFPATH variable.
-		Default: no
+		Default: "yes" on aarch64, arm, i386, m68k, mips, sh3,
+		sparc64, and x86_64; "no" on other platforms.
 
-MKYP		If "no", disables building of YP (NIS)
-		infrastructure (libraries and support programs).
-		Default: yes
-
-MKZFS		If "no", do not build and install utilities and libraries
-		used to manage ZFS file system. Do not build zfs and solaris
-		compatibility kernel modules.  Note: ZFS requires 64bit
-		atomic operations.
-		Default: yes on aarch64, amd64 and sparc64, no elsewhere.
-
-MKRUMP		If "no", do not build and install rump related headers,
-		libraries, and programs.
-		Default: yes
-
-USE_HESIOD	If "no", disables building Hesiod support into
-		various system utilities/libraries that support it.
-		If ${MKHESIOD} is "no", USE_HESIOD will also be
-		forced to "no".
-
-USE_INET6	If "no", disables building INET6 (IPv6) support into
-		various system utilities/libraries that support it.
-		If ${MKINET6} is "no", USE_INET6 will also be
-		forced to "no".
-
-USE_JEMALLOC	If "no", disables building the "jemalloc" allocator
-		designed for improved performance with threaded
-		applications.  The "phkmalloc" allocator as used up
-		before NetBSD-5.0 will be substituted.
-
-USE_KERBEROS	If "no", disables building Kerberos v5
-		support into various system utilities/libraries that
-		support it.  If ${MKKERBEROS} is "no", USE_KERBEROS
-		will also be forced to "no".
-
-USE_LDAP	If "no", disables building LDAP support into various
-		system utilities/libraries that support it.
-		If ${MKLDAP} is "no", USE_LDAP will also be forced to "no".
-
-USE_PAM		If "no", disables building PAM authentication support
-		into various system utilities/libraries that support it.
-		If ${MKPAM} is "no", USE_PAM will also be forced to "no".
-
-USE_SKEY	If "no", disables building S/key authentication
-		support into various system utilities/libraries that
-		support it.  If ${MKSKEY} is "no", USE_SKEY will
-		also be forced to "no".
-		Default: no
+MKPIGZGZIP	Can be set to "yes" or "no".  If "no", the pigz(1)
+		utility is not installed as gzip(1).
+
+		Default: "no"
+
+MKPOSTFIX	Can be set to "yes" or "no".  Indicates whether Postfix
+		will be built and installed.
+
+		Default: "yes"
+
+MKPROFILE	Can be set to "yes" or "no".  Indicates whether profiled
+		libraries (lib*_p.a) will be built and installed.
+
+		Forced to "no" if NOPROFILE is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Forced to "no" if MKLINKLIB=no.
+
+		Default: "no" on or1k, riscv32, and riscv64 (due to
+		toolchain problems with profiled code); "yes" on other
+		platforms.
+
+MKRADEONFIRMWARE
+		Can be set to "yes" or "no".  Indicates whether to
+		install the /libdata/firmware/radeon directory, which is
+		necessary for the radeon(4) AMD RADEON GPU video driver.
+
+		Default: "yes" on aarch64, i386, and x86_64, "no" on
+		other platforms.
+
+MKRELRO		Indicates whether to enable support for Relocation Read-
+		Only (RELRO).  Supported values:
+
+		partial	 Set the non-PLT GOT to read-only.
+
+		full	 Set the non-PLT GOT to read-only and also force
+			 immediate symbol binding, unless NOFULLRELRO is
+			 defined and not "no" (usually in the Makefile
+			 before any make(1) .include directives).
+
+		no	 Disable RELRO.
+
+		Forced to "no" if NORELRO is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Default: "partial" on aarch64, i386, and x86_64; "no" on
+		other platforms.
+
+MKREPRO		Can be set to "yes" or "no".  Indicates whether builds
+		are to be reproducible.  If "yes", two builds from the
+		same source tree will produce the same build results.
+
+		Used as the default for MKARZERO.
+
+		Default: "no"
+
+MKREPRO_TIMESTAMP
+		Unix timestamp.  When MKREPRO is set, the timestamp of
+		all files in the sets will be set to this value.
+
+		Default: Unset.
+
+MKRUMP		Can be set to "yes" or "no".  Indicates whether the
+		rump(3) headers, libraries, and programs are to be
+		installed.
+
+		Forced to "no" if COVERITY_TOP_CONFIG is defined.
+
+		Default: "yes"
+
+MKSANITIZER	Can be set to "yes" or "no".  Indicates whether to use
+		the sanitizer to compile userland programs, using the
+		sanitizer defined by USE_SANITIZER.
+
+		Forced to "no" if NOSANITIZER is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Default: "no"
+
+MKSHARE		Can be set to "yes" or "no".  Indicates whether files
+		destined to reside in DESTDIR/usr/share will be built and
+		installed.
+
+		Forced to "no" if NOSHARE is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		If "no", acts as MKCATPAGES=no MKDOC=no MKINFO=no
+		MKHTML=no MKMAN=no MKNLS=no.
+
+		Default: "yes"
+
+MKSKEY		Can be set to "yes" or "no".  Indicates whether the S/key
+		infrastructure (libraries and support programs) will be
+		built and installed.
+
+		Default: "yes"
+
+MKSLJIT		Can be set to "yes" or "no".  Indicates whether to enable
+		support for sljit (stack-less platform-independent Just
+		in Time (JIT) compiler) private library and tests.
+
+		Default: "yes" on i386, sparc, and x86_64; "no" on other
+		platforms.
+
+MKSOFTFLOAT	Can be set to "yes" or "no".  Indicates whether the
+		compiler generates output containing library calls for
+		floating point and possibly soft-float library support.
+
+		Forced to "yes" on arm without `hf', coldfire, emips,
+		or1k, and sh3.
+
+		Default: "yes" on mips64; "no" on other platforms.
+
+MKSTATICLIB	Can be set to "yes" or "no".  Indicates whether the
+		normal static libraries (lib*_g.a) will be built and
+		installed.
+
+		Forced to "no" if NOSTATICLIB is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Default: "yes"
+
+MKSTATICPIE	Can be set to "yes" or "no".  Indicates whether support
+		for static PIE binaries will be built and installed.
+		These binaries use a special support in crt0.o for
+		resolving relative relocations and require linker
+		support.
+
+		Default: "yes" on i386 and x86_64; "no" on other
+		platforms.
+
+MKSTRIPIDENT	Can be set to "yes" or "no".  Indicates whether RCS IDs,
+		for use with ident(1), should be stripped from program
+		binaries and shared libraries.
+
+		Default: "no"
+
+MKSTRIPSYM	Can be set to "yes" or "no".  Indicates whether all local
+		symbols should be stripped from shared libraries.  If
+		"yes", strip all local symbols from shared libraries; the
+		effect is equivalent to the -x option of ld(1).  If "no",
+		strip only temporary local symbols; the effect is
+		equivalent to the -X option of ld(1).  Keeping non-
+		temporary local symbols such as static function names is
+		useful on using DTrace for userland libraries and getting
+		a backtrace from a rump kernel loading shared libraries.
+
+		Default: "yes"
+
+MKTEGRAFIRMWARE
+		Can be set to "yes" or "no".  Indicates whether to
+		install the /libdata/firmware/nvidia directory, which is
+		necessary for the NVIDIA Tegra XHCI driver.
+
+		Default: "yes" on evbarm; "no" on other platforms.
+
+MKTOOLSDEBUG	Deprecated, use MKDEBUGTOOLS.
+
+MKTPM		Can be set to "yes" or "no".  Indicates whether to
+		install the Trusted Platform Module (TPM) infrastructure.
+
+		Default: "no"
+
+MKUNBOUND	Can be set to "yes" or "no".  Indicates whether the
+		unbound(8) DNS resolver will be built and installed.
+
+		Default: "yes"
 
-USE_SSP		If "no", disables GCC stack protection code, which
-		detects stack overflows and aborts the program. The
-		stack protection code imposes a performance penalty
-		of about 5%.
-		Default: "no", unless "USE_FORT" is set to "yes"
-
-NOSSP		Don't compile with stack protector during build.
-		It is set internally for standalone programs.
-
-USE_FORT 	If "yes" turns on substitute wrappers for commonly used
-		functions that do not do bounds checking regularly, but
-		they could in some cases by using the gcc
-		__builtin_object_size() function to determine the buffer
-		size where it is known and detect buffer overflows.
-		These substitute functions are in /usr/include/ssp.
-		Default: depends on the part of the source tree
-
-NOFORT		Don't compile with substitute wrappers during build.
-		It is set internally for standalone programs.
-
-USE_YP		If "no", disables building YP (NIS) support into
-		various system utilities/libraries that support it.
-		If ${MKYP} is "no", USE_YP will also be forced to "no".
-
-USE_PIGZGZIP	If "no", use the host "gzip" program to compress things.
-		Otherwise, build tools/pigz, set TOOL_GZIP=${TOOL_PIGZ},
-		and use nbpigz to compress things.
-		Default: "no".
-
-USE_XZ_SETS	If "no", use the host "gzip" program to compress sets.
-		Otherwise use xz to compress things.
-		Default: "yes" for architectures with "enough" memory to
-		decompress, "no" for older ones.
-		This is currently incompatible with USE_PIGZGZIP, setting
-		USE_PIGZGZIP=yes sets USE_XZ_SETS=no by default for all
-		architectures.
+MKUNPRIVED	Can be set to "yes" or "no".  Indicates whether an
+		unprivileged install will occur.  The user, group,
+		permissions, and file flags, will not be set on the
+		installed items; instead the information will be appended
+		to a file called METALOG in DESTDIR.  The contents of
+		METALOG is used during the generation of the distribution
+		tar files to ensure that the appropriate file ownership
+		is stored.  This allows a non-root `make install'.
+
+		Default: "no"
+
+MKUPDATE	Can be set to "yes" or "no".  Indicates whether all
+		install operations intended to write to DESTDIR will
+		compare file timestamps before installing, and skip the
+		install phase if the destination files are up-to-date.
+
+		Default: "no"
+
+MKX11		Can be set to "yes" or "no".  Indicates whether X11 will
+		be built and installed from X11SRCDIR, and whether the X
+		sets will be created.
+
+		Note: If "yes", requires MKINET6=yes.
+
+		Default: "no"
+
+MKX11FONTS	Can be set to "yes" or "no".  If "no", do not build and
+		install the X fonts.  The xfont set is still created but
+		will be empty.
+
+		Only used if MKX11=yes.
+
+		Default: "yes"
+
+MKX11MOTIF	Can be set to "yes" or "no".  If "yes", build the native
+		Xorg libGLw with Motif stubs.  Requires that Motif can be
+		found via X11MOTIFPATH.
+
+		Default: "no"
+
+MKXORG_SERVER	Can be set to "yes" or "no".  Indicates whether the
+		Xorg(7) X server and drivers will be built and installed.
+
+		Default: "yes" on alpha, amd64, amiga, bebox, cats,
+		dreamcast, ews4800mips, evbarm, evbmips, evbppc, hp300,
+		hpcarm, hpcmips, hpcsh, hppa, i386, ibmnws, iyonix,
+		luna68k, mac68k, macppc, netwinder, newsmips, pmax, prep,
+		ofppc, sgimips, shark, sparc, sparc64, vax, and zaurus;
+		"no" on other platforms.
+
+MKYP		Can be set to "yes" or "no".  Indicates whether the YP
+		(NIS) infrastructure (libraries and support programs)
+		will be built and installed.
+
+		Default: "yes"
+
+MKZFS		Can be set to "yes" or "no".  Indicates whether the ZFS
+		kernel module and the utilities and libraries used to
+		manage the ZFS system are to be built and installed.
+
+		Note: ZFS requires 64-bit atomic operations .
+
+		Default: "yes" on aarch64, amd64, and sparc64; "no" on
+		other platforms.
+
+NETBSD_OFFICIAL_RELEASE
+		Can be set to "yes" or "no".  Indicates whether the build
+		creates an official NetBSD release which is going to be
+		available from ftp.NetBSD.org and/or cdn.NetBSD.org
+		locations.  This variable modifies a few default paths in
+		the installer and also creates different links in the
+		install documentation.  The auto-build cluster uses this
+		variable to distinguish `daily' builds from real
+		releases.
+
+		Default: Unset.  ("no").
+
+USE_FORT	Can be set to "yes" or "no".  Indicates whether the so-
+		called "FORTIFY_SOURCE" security(7) extensions are
+		enabled; see ssp(3) for details.  This imposes some
+		performance penalty.
+
+		Forced to "no" if NOFORT is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Default: "no"
+
+USE_HESIOD	Can be set to "yes" or "no".  Indicates whether Hesiod
+		support is enabled in the various applications that
+		support it.
+
+		Forced to "no" if MKHESIOD=no.
+
+		Default: "yes"
+
+USE_INET6	Can be set to "yes" or "no".  Indicates whether INET6
+		(IPv6) support is enabled in the various applications
+		that support it.
+
+		Forced to "no" if MKINET6=no.
+
+		Default: "yes"
+
+USE_JEMALLOC	Can be set to "yes" or "no".  Indicates whether the
+		jemalloc allocator (which is designed for improved
+		performance with threaded applications) is used instead
+		of the phkmalloc allocator (that was the default until
+		NetBSD 5.0).
+
+		Default: "yes"
+
+USE_KERBEROS	Can be set to "yes" or "no".  Indicates whether Kerberos
+		v5 support is enabled in the various applications that
+		support it.
+
+		Forced to "no" if MKKERBEROS=no.
+
+		Default: "yes"
+
+USE_LDAP	Can be set to "yes" or "no".  Indicates whether LDAP
+		support is enabled in the various applications that
+		support it.
+
+		Forced to "no" if MKLDAP=no.
+
+		Default: "yes"
+
+USE_LIBCSANITIZER
+		Selects the sanitizer in libc to compile userland
+		programs and libraries.  Supported values:
+
+		undefined  Enables the micro-UBSan in the user mode
+			   (uUBSan) undefined behaviour sanitizer.  The
+			   code is shared with the kernel mode variation
+			   (kUBSan).  The runtime runtime differs from
+			   the UBSan available in MKSANITIZER.  The
+			   runtime is stripped down from C++ features,
+			   and is invoked with -fsanitize=no-vptr as that
+			   sanitizer is not supported.  The runtime
+			   configuration is restricted to the LIBC_UBSAN
+			   environment variable, that is designed to be
+			   safe for hardening.
+
+		The value of USE_LIBCSANITIZER is passed to the C and C++
+		compilers as the argument to -fsanitize=.  Additional
+		sanitizer arguments can be passed through
+		LIBCSANITIZERFLAGS.
+
+		Disabled if MKLIBCSANITIZER=no.
+
+		Default: "undefined".
+
+USE_PAM		Can be set to "yes" or "no".  Indicates whether pam(8)
+		support is enabled in the various applications that
+		support it.
+
+		Forced to "no" if MKPAM=no.
+
+		Default: "yes"
+
+USE_PIGZGZIP	Can be set to "yes" or "no".  Indicates whether pigz(1)
+		is used instead of gzip(1) for multi-threaded gzip
+		compression of the distribution tar sets.
+
+		Default: "no"
+
+USE_SKEY	Can be set to "yes" or "no".  Indicates whether S/key
+		support is enabled in the various applications that
+		support it.
+
+		Forced to "no" if MKSKEY=no.
+
+		Note: This is mutually exclusive to USE_PAM!=no.
+
+		Default: "no"
+
+USE_SSP		Can be set to "yes" or "no".  Indicates whether GCC
+		stack-smashing protection (SSP) support, which detects
+		stack overflows and aborts the program, is enabled.  This
+		imposes some performance penalty (approximately 5%).
+
+		This is disabled internally for standalone programs in
+		/usr/mdec.
+
+		Forced to "no" if NOSSP is defined, usually in the
+		Makefile before any make(1) .include directives.
+
+		Forced to "no" if COVERITY_TOP_CONFIG is defined.
+
+		Default: "no" on alpha, hppa, ia64, and mips; "yes" on
+		other platforms if USE_FORT=yes; "no" otherwise.
+
+USE_XZ_SETS	Can be set to "yes" or "no".  Indicates whether the
+		distribution tar files are to be compressed with xz(1)
+		instead of gzip(1) or pigz(1).
+
+		Forced to "no" if USE_PIGZGZIP=yes.
+
+		Default: "yes" on aarch64, amd64, and sparc64, "no" on
+		other platforms.
+
+USE_YP		Can be set to "yes" or "no".  Indicates whether YP (NIS)
+		support is enabled in the various applications that
+		support it.
+
+		Forced to "no" if MKYP=no.
+
+		Default: "yes"
+
+X11MOTIFPATH	Path of the Motif installation to use if MKX11MOTIF=yes.
+
+		Default: "/usr/pkg"
 
 COPTS.lib<lib>
 OBJCOPTS.lib<lib>
@@ -633,7 +1203,7 @@ COPTS.<prog>
 OBJCOPTS.<prog>
 LDADD.<prog>
 CPPFLAGS.<prog>
-CXXFLAGS.<prog>	These provide a way to specify additions to the associated
+CXXFLAGS.<prog> These provide a way to specify additions to the associated
 		variables in a way that applies only to a particular library
 		or program.  <lib> corresponds to the LIB variable set in
 		the library's makefile.  <prog> corresponds to either PROG
@@ -647,13 +1217,51 @@ AVAILABLE_COMPILER
 		for selecting the active compiler for each frontend.
 HAVE_PCC	If defined, PCC is present and enabled.
 HAVE_LLVM	If defined, LLVM/Clang is present and enabled.
-UNSUPPORTED_COMPILER.xxx
-		If defined, the support for compiler "xxx" is disabled.
+UNSUPPORTED_COMPILER.<comp>
+		If defined, the support for compiler <comp> is disabled.
 
 For the frontends (CC, CPP, CXX, FC and OBJC) the following variables exist:
 ACTIVE_CC	Active compile suite for the CC frontend.
 SUPPORTED_CC	Compile suite with support for the CC frontend.
-TOOL_CC.xxx	Path to the CC frontend for compiler "xxx"
+TOOL_CC.<comp>	Path to the CC frontend for compiler <comp>.
+
+
+=-=-=-=-=   Variables for a Makefile   =-=-=-=-=
+
+If the following varialbes are defined in the Makefile before
+any make(1) .include directives, they force the specific behavior.
+
+NOCOMPAT	Force MKCOMPAT=no.
+NOCTF		Force MKCTF=no.
+NODEBUG		Force MKDEBUG=no.
+NODEBUGLIB	Force MKDEBUGLIB=no.
+NODOC		Force MKDOC=no.
+NOFORT		Force USE_FORT=no.
+NOHTML		Force MKHTML=no.
+NOINFO		Force MKINFO=no.
+NOLIBCSANITIZER Force MKLIBCSANITIZER=no (and USE_LIBCSANITIZER=no)
+NOLINKLIB	Force MKLINKLIB=no.
+NOLINT		Force MKLINT=no.
+NOMAN		Force MKMAN=no.
+NOMANDOC	Force MKMANDOC=no.
+NONLS		Force MKNLS=no.
+NOOBJ		Force MKOBJ=no.
+NOPIC		Force MKPIC=no.
+NOPICINSTALL	Force MKPICINSTALL=no.
+NOPIE		Force MKPIE=no.
+NOPROFILE	Force MKPROFILE=no.
+NORELRO		Force MKREPRO=no.
+NOSANITIZER	Force MKSANITIZER=no (and USE_SANITIZER=no)
+NOSHARE		Force MKSHARE=no.
+NOSSP		Force USE_SSP=no.
+NOSTATICLIB	Force MKSTATICLIB=no.
+
+Special variations:
+
+NOFULLRELRO!=no Force MKRELRO=no if MKRELRO=full
+
+TODO: NOFULLRELRO should just be a defined test for consistency.
+
 
 =-=-=-=-=   sys.mk   =-=-=-=-=
 
@@ -750,7 +1358,7 @@ LIBOWN		Library owner.  [${BINOWN}]
 LIBMODE		Library mode.  [${NONBINMODE}]
 
 DOCDIR		Base path for system documentation (e.g. PSD, USD, etc.)
-	        installation.  [/usr/share/doc]
+		installation.  [/usr/share/doc]
 
 DOCGRP		Documentation group.  [wheel]
 
@@ -774,7 +1382,7 @@ NLSMODE		Native Language Support files m
 X11SRCDIR	The path to the xsrc tree.  [${NETBSDSRCDIR}/../xsrc,
 		if that exists; otherwise /usr/xsrc]
 
-X11SRCDIR.local	The path to the local X11 src tree.  [${X11SRCDIR}/local]
+X11SRCDIR.local The path to the local X11 src tree.  [${X11SRCDIR}/local]
 
 X11SRCDIR.lib<package>
 X11SRCDIR.<package>
@@ -1009,7 +1617,7 @@ TOOL_PIC		Compile pictures for groff.  [
 
 TOOL_PIGZ		Parallel compressor.  [pigz]
 
-TOOL_POWERPCMKBOOTIMAGE	Make bootable image for powerpc.  [powerpc-mkbootimage]
+TOOL_POWERPCMKBOOTIMAGE Make bootable image for powerpc.  [powerpc-mkbootimage]
 
 TOOL_PWD_MKDB		Generate the password databases.  [pwd_mkdb]
 
@@ -1137,6 +1745,7 @@ SRCS		List of source files to build the 
 DPSRCS		List of source files which are needed for generating
 		dependencies, but are not needed in ${SRCS}.
 
+NODPSRCS	TODO
 
 =-=-=-=-=   bsd.files.mk   =-=-=-=-=
 
@@ -1174,7 +1783,7 @@ FILESBUILD	If this variable is defined, 
 		used as the default for all FILESBUILD_<fn> variables.
 		Otherwise, the default will be "no".
 
-FILESBUILD_<fn>	A value different from "no" will add the file to the list of
+FILESBUILD_<fn> A value different from "no" will add the file to the list of
 		targets to be built by `realall'.  Users of that variable
 		should provide a target to build the file.
 
@@ -1239,7 +1848,7 @@ INCSYMLINKS	Similar to SYMLINKS in <bsd.
 		are installed in the 'includes' target and not the
 		(much later) 'install' target.
 
-INCSNAME_<file>	The name file <file> should be installed as, if not <file>,
+INCSNAME_<file> The name file <file> should be installed as, if not <file>,
 		same as FILESNAME_<file>, but for include files.
 
 
@@ -1325,7 +1934,7 @@ MKARZERO	Normally, ar(1) sets the timest
 		permissions to be set to 644. This allows .a files
 		from different builds to be bit identical.
 
-SHLIBINSTALLDIR	Target directory for shared libraries if ${USE_SHLIBDIR}
+SHLIBINSTALLDIR Target directory for shared libraries if ${USE_SHLIBDIR}
 		is not "no".
 
 SHLIB_MAJOR
@@ -1380,7 +1989,7 @@ SRCS		List of source files to build the 
 
 LIBDPLIBS/
 PROGDPLIBS	A list of the tuples:
-			libname  path-to-srcdir-of-libname
+			libname	 path-to-srcdir-of-libname
 
 		Instead of depending on installed versions of the libraries,
 		one can depend on their built version in the source directory.
@@ -1528,10 +2137,10 @@ OBJMACHINE	If this is set but MAKEOBJDIR
 		object directories or links named "obj.${MACHINE}";
 		otherwise, just creates ones named "obj".
 
-OBJMACHINE_ARCH	If set with OBJMACHINE, creates object directories or
+OBJMACHINE_ARCH If set with OBJMACHINE, creates object directories or
 		links named "obj.${MACHINE}-${MACHINE_ARCH}".
 
-USR_OBJMACHINE  If set, and the current directory is a subdirectory of
+USR_OBJMACHINE	If set, and the current directory is a subdirectory of
 		${BSDSRCDIR}, create object directory in the
 		corresponding subdirectory of ${BSDOBJDIR}.${MACHINE};
 		otherwise, create it in the corresponding subdirectory
@@ -1887,14 +2496,14 @@ The following macros may be defined in m
 <bsd.rpc.mk> in order to control which files get built and how they
 are to be built:
 
-RPC_INCS:	construct .h file from .x file
-RPC_XDRFILES:	construct _xdr.c from .x file
+RPC_INCS	construct .h file from .x file
+RPC_XDRFILES	construct _xdr.c from .x file
 		(for marshalling/unmarshalling data types)
-RPC_SVCFILES:	construct _svc.c from .x file
+RPC_SVCFILES	construct _svc.c from .x file
 		(server-side stubs)
-RPC_SVCFLAGS:	Additional flags passed to builds of RPC_SVCFILES.
+RPC_SVCFLAGS	Additional flags passed to builds of RPC_SVCFILES.
 
-RPC_XDIR:	Directory containing .x/.h files
+RPC_XDIR	Directory containing .x/.h files
 
 
 =-=-=-=-=   bsd.shlib.mk   =-=-=-=-=
@@ -1906,7 +2515,7 @@ included before <bsd.shlib.mk>.
 <bsd.own.mk> sets the following variables, if they are not already defined
 (defaults are in brackets):
 
-SHLIBINSTALLDIR	If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR}
+SHLIBINSTALLDIR If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR}
 		instead of ${LIBDIR} as the base path for shared library
 		installation.  [/lib]
 
@@ -2064,8 +2673,8 @@ FC		Fortran compiler.  [f77]
 
 FFLAGS		Options to {$FC}.  [-O]
 
-HOST_SH		Shell.	This must be an absolute path, because it may be
-		substituted into "#!" lines in scripts.	 [/bin/sh]
+HOST_SH		Shell.  This must be an absolute path, because it may be
+		substituted into "#!" lines in scripts.  [/bin/sh]
 
 INSTALL		install(1) command.  [install]
 
@@ -2093,7 +2702,7 @@ MKDEPCXX	Construct Makefile dependency l
 
 NM		List symbols from object files.  [nm]
 
-PC		Pascal compiler.  [pc]  (Not present)
+PC		Pascal compiler.  [pc]	(Not present)
 
 PFLAGS		Options to ${PC}.  []
 
@@ -2103,7 +2712,7 @@ OBJCFLAGS	Options to ${OBJC}.  [${CFLAGS
 
 OBJCOPY		Copy and translate object files.  [objcopy]
 
-OBJCOPYLIBFLAGS	Flags to pass to objcopy when library objects are
+OBJCOPYLIBFLAGS Flags to pass to objcopy when library objects are
 		being built. [${.TARGET} =~ "*.po" ? -X : -x]
 
 OBJDUMP		Display information from object files.  [objdump]
@@ -2133,14 +2742,14 @@ YPREFIX		If defined, add "-p ${YPREFIX}"
 
 Other variables of note (incomplete list):
 
+NOCLANGERROR	If defined and clang is used as C compiler, -Werror is not
+		passed to it.
+
 NOGCCERROR	If defined, prevents passing certain ${CFLAGS} to GCC
 		that cause warnings to be fatal, such as:
 			-Werror -Wa,--fatal-warnings
 		(The latter being for as(1).)
 
-NOCLANGERROR	If defined and clang is used as C compiler, -Werror is not
-		passed to it.
-
 WARNS		Crank up compiler warning options; the distinct levels are:
 			WARNS=1
 			WARNS=2
@@ -2149,7 +2758,7 @@ WARNS		Crank up compiler warning options
 			WARNS=5
 			WARNS=6
 
-=-=-=-=-=   bsd.host.mk  =-=-=-=-=
+=-=-=-=-=   bsd.host.mk   =-=-=-=-=
 
 This file is automatically included from bsd.own.mk. It contains settings
 for all the HOST_* variables that are used in host programs and libraries.

Reply via email to