SRC.CONF(5)
๐ SRC.CONF(5) ๐
okay bestie, this is the File Formats Manual page for src.conf โ source build options. itโs giving very โlet me control the whole buildโ energy, and honestly? iconic. ๐
โจ
๐ธ NAME ๐ธ
src.conf โ source build options ๐ ๏ธ๐
๐ DESCRIPTION ๐
okay so src.conf is literally the file that contains variables controlling what components get generated during the build process of the FreeBSD source tree; see build(7). ๐ฆ
src.conf uses the standard makefile syntax. however โ and this is important, bestie โ src.conf should not specify any dependencies to make(1). instead, src.conf is there to set make(1) variables that control the aspects of how the system builds. no cap. โจ
the default location of src.conf is the top level of the source tree, or /etc/src.conf if no src.conf is found in the source tree itself, though an alternative location can be specified in the make(1) variable SRCCONF. overriding the location of src.conf may be necessary if the system-wide settings are not suitable for a particular build. for instance, setting SRCCONF to /dev/null effectively resets all build controls to their defaults. ๐ซถ
the only purpose of src.conf is to control the compilation of the FreeBSD source code, which is usually located in /usr/src. as a rule, the system administrator creates src.conf when the values of certain control variables need to be changed from their defaults. ๐
in addition, control variables can be specified for a particular build via the -D option of make(1) or in its environment; see environ(7). ๐
the environment of make(1) for the build can be controlled via the SRC_ENV_CONF variable, which defaults to /etc/src-env.conf. some examples that may only be set in this file are WITH_DIRDEPS_BUILD, and WITH_META_MODE, and MAKEOBJDIRPREFIX as they are environment-only variables. ๐ง
the values of WITH_ and WITHOUT_ variables are ignored regardless of their setting; even if they would be set to FALSE or NO. the presence of an option causes it to be honored by make(1). ๐
this list provides a name and short description for variables that can be used for source builds. ๐
WITHOUT_ACCTโ do not build process accounting tools such asaccton(8)andsa(8).WITHOUT_ACPIโ do not buildacpiconf(8),acpidump(8)and related programs.WITHOUT_APMโ do not buildapm(8),apmd(8)and related programs.WITH_ASANโ build the base system with Address Sanitizer (ASan) to detect memory corruption bugs such as buffer overflows or use-after-free. requires that Clang be used as the base system compiler and that the runtime support library is available. when set, it enforces these options:WITH_LLVM_BINUTILSWITH_LLVM_CXXFILT
WITHOUT_ASSERT_DEBUGโ compile programs and libraries without theassert(3)checks.WITHOUT_ATโ do not buildat(1)and related utilities.WITHOUT_AUDITโ do not build audit support into system programs.WITHOUT_AUTHPFโ do not buildauthpf(8).WITHOUT_AUTOFSโ do not buildautofs(4)related programs, libraries, and kernel modules.WITHOUT_AUTO_OBJโ disable automatic creation of objdirs. this is enabled by default if the wantedOBJDIRis writable by the current user.
this must be set in the environment, make command line, or /etc/src-env.conf, not /etc/src.conf. โ ๏ธ
WITH_BEARSSLโ build the BearSSL library.
BearSSL is a tiny SSL library suitable for embedded environments. for details see https://www.BearSSL.org/ โจ
this library is currently only used to perform signature verification and related operations for Verified Exec and loader(8).
due to size constraints in the BIOS environment on x86, one may need to set LOADERSIZE larger than the default 500000, although often loader is under the 500k limit even with this option. setting LOADERSIZE larger than 500000 may cause pxeboot(8) to be too large to work. careful testing of the loader in the target environment when built with a larger limit to establish safe limits is critical because different BIOS environments reserve differing amounts of the low 640k space, making a precise limit for everybody impossible. ๐ญ
see also WITH_LOADER_PXEBOOT for other considerations. when set, these options are also in effect:
WITH_LOADER_EFI_SECUREBOOT(unlessWITHOUT_LOADER_EFI_SECUREBOOTis set explicitly)WITH_LOADER_VERIEXEC(unlessWITHOUT_LOADER_VERIEXECis set explicitly)WITH_LOADER_VERIEXEC_VECTX(unlessWITHOUT_LOADER_VERIEXEC_VECTXis set explicitly)WITH_VERIEXEC(unlessWITHOUT_VERIEXECis set explicitly)
WITHOUT_BHYVEโ do not build or installbhyve(8), associated utilities, and examples.
this option only affects amd64/amd64 and arm64/aarch64.
WITH_BHYVE_SNAPSHOTโ include support for save and restore (snapshots) inbhyve(8)andbhyvectl(8).
this option only affects amd64/amd64.
WITH_BIND_NOWโ build all binaries with theDF_BIND_NOWflag set to indicate that the run-time loader should perform all relocation processing at process startup rather than on demand. the combination of theBIND_NOWandRELROoptions provide โfullโ Relocation Read-Only (RELRO) support. with full RELRO the entire GOT is made read-only after performing relocation at startup, avoiding GOT overwrite attacks. ๐ฅWITHOUT_BLACKLISTโ this option has been renamed toWITHOUT_BLOCKLIST. when set, it enforces these options:WITHOUT_BLOCKLIST
when set, these options are also in effect:
WITHOUT_BLACKLIST_SUPPORT(unlessWITH_BLACKLIST_SUPPORTis set explicitly)WITHOUT_BLOCKLIST_SUPPORT(unlessWITH_BLOCKLIST_SUPPORTis set explicitly)
WITHOUT_BLACKLIST_SUPPORTโ this option has been renamed toWITHOUT_BLOCKLIST_SUPPORT. when set, it enforces these options:WITHOUT_BLOCKLIST_SUPPORT
WITHOUT_BLOCKLISTโ set this if you do not want to buildblocklistd(8)andblocklistctl(8). when set, it enforces these options:WITHOUT_BLACKLIST
when set, these options are also in effect:
WITHOUT_BLACKLIST_SUPPORT(unlessWITH_BLACKLIST_SUPPORTis set explicitly)WITHOUT_BLOCKLIST_SUPPORT(unlessWITH_BLOCKLIST_SUPPORTis set explicitly)
WITHOUT_BLOCKLIST_SUPPORTโ build some programs withoutlibblocklist(3)support, likefingerd(8)andsshd(8). when set, it enforces these options:WITHOUT_BLACKLIST_SUPPORT
WITHOUT_BLUETOOTHโ do not build Bluetooth related kernel modules, programs and libraries.WITHOUT_BOOTโ do not build the boot blocks and loader.WITHOUT_BOOTPARAMDโ do not build or installbootparamd(8).WITHOUT_BOOTPDโ do not build or installbootpd(8).WITH_BRANCH_PROTECTIONโ build with branch protection enabled. on arm64 enable the use of pointer authentication and branch target identification instructions on arm64. these can be used to help mitigate some exploit techniques. ๐ก๏ธWITHOUT_BSDINSTALLโ do not buildbsdinstall(8),sade(8), and related programs.WITHOUT_BSD_CPIOโ do not build the BSD licensed version of cpio based onlibarchive(3).WITHOUT_BSNMPโ do not build or installbsnmpd(1)and related libraries and data files.WITHOUT_BZIP2โ do not build contributed bzip2 software as a part of the base system. the option has no effect yet. when set, these options are also in effect:WITHOUT_BZIP2_SUPPORT(unlessWITH_BZIP2_SUPPORTis set explicitly)
WITHOUT_BZIP2_SUPPORTโ build some programs without optional bzip2 support.WITHOUT_CALENDARโ do not buildcalendar(1).WITHOUT_CAROOTโ do not add the trusted certificates from the Mozilla NSS bundle to base.WITHOUT_CASPERโ this option has no effect.WITH_CCACHE_BUILDโ useccache(1)for the build. no configuration is required except to install thedevel/ccacheordevel/sccachepackage. when using withdistcc(1), setCCACHE_PREFIX=/usr/local/bin/distcc. when using with sccache setCCACHE_NAME=sccacheinsrc.conf(5). the default cache directory of$HOME/.ccachewill be used, which can be overridden by settingCCACHE_DIR. theCCACHE_COMPILERCHECKoption defaults to content when using the in-tree bootstrap compiler, and mtime when using an external compiler. theCCACHE_CPP2option is used for Clang but not GCC.
sharing a cache between multiple work directories requires using a layout similar to /some/prefix/src /some/prefix/obj and an environment such as:
CCACHE_BASEDIR='${SRCTOP:H}' MAKEOBJDIRPREFIX='${SRCTOP:H}/obj'
see ccache(1) for more configuration options. ๐
WITHOUT_CCDโ do not buildgeom_ccd(4)and related utilities.WITHOUT_CDDLโ do not build code licensed under Sun's CDDL. when set, it enforces these options:WITHOUT_CTFWITHOUT_DTRACEWITHOUT_LOADER_ZFSWITHOUT_ZFSWITHOUT_ZFS_TESTS
WITHOUT_CLANGโ do not build the Clang C/C++ compiler during the regular phase of the build. when set, it enforces these options:WITHOUT_CLANG_EXTRASWITHOUT_CLANG_FORMATWITHOUT_CLANG_FULLWITHOUT_LLVM_COV
when set, these options are also in effect:
WITHOUT_LLVM_TARGET_AARCH64(unlessWITH_LLVM_TARGET_AARCH64is set explicitly)WITHOUT_LLVM_TARGET_ALL(unlessWITH_LLVM_TARGET_ALLis set explicitly)WITHOUT_LLVM_TARGET_ARM(unlessWITH_LLVM_TARGET_ARMis set explicitly)WITHOUT_LLVM_TARGET_POWERPC(unlessWITH_LLVM_TARGET_POWERPCis set explicitly)WITHOUT_LLVM_TARGET_RISCV(unlessWITH_LLVM_TARGET_RISCVis set explicitly)
WITHOUT_CLANG_BOOTSTRAPโ do not build the Clang C/C++ compiler during the bootstrap phase of the build. to be able to build the system, either gcc or clang bootstrap must be enabled unless an alternate compiler is provided viaXCC.WITH_CLANG_EXTRASโ build additional clang and llvm tools, such asbugpointandclang-format.WITH_CLANG_FORMATโ buildclang-format.WITHOUT_CLANG_FULLโ bestie, this one says don't build theARCMigrate,RewriterandStaticAnalyzercomponents of the Clang C/C++ compiler. That's it, that's the whole vibe ๐WITH_CLEANโ clean before buildingworldand/orkernel. Lowkey important detail: recording a new epoch in.clean_build_epochin the root of the source tree will also force a clean world build ๐งน When set, these options are also in effect:WITHOUT_DEPEND_CLEANUP(unlessWITH_DEPEND_CLEANUPis set explicitly)
WITHOUT_CPPโ do not buildcpp(1)โจWITHOUT_CROSS_COMPILERโ do not build any cross compiler in thecross-toolsstage ofbuildworld. Okay so real talk: when you're compiling a different version of FreeBSD than what's installed on the system, provide an alternate compiler withXCCto ensure success ๐ฅ When compiling with an identical version of FreeBSD to the host, this option may be safely used. It may also be safe when the host version of FreeBSD is close to the sources being built โ but all bets are off if there have been any changes to the toolchain between the versions ๐ญ When set, it enforces these options:WITHOUT_CLANG_BOOTSTRAPWITHOUT_ELFTOOLCHAIN_BOOTSTRAPWITHOUT_LLD_BOOTSTRAP
WITHOUT_CRYPTโ do not build any crypto code ๐ When set, it enforces these options:WITHOUT_DMAGENTWITHOUT_KERBEROSWITHOUT_LDNSWITHOUT_LDNS_UTILSWITHOUT_LOADER_ZFSWITHOUT_MITKRB5WITHOUT_OPENSSHWITHOUT_OPENSSLWITHOUT_OPENSSL_KTLSWITHOUT_PKGBOOTSTRAPWITHOUT_UNBOUNDWITHOUT_ZFSWITHOUT_ZFS_TESTS
When set, these options are also in effect:
WITHOUT_KERBEROS_SUPPORT(unlessWITH_KERBEROS_SUPPORTis set explicitly)
WITH_CTFโ compile with CTF (Compact C Type Format) data. CTF data encapsulates a reduced form of debugging information similar toDWARFand the venerablestabs, and it's required for DTrace ๐WITHOUT_CUSEโ do not build CUSE-related programs and libraries.WITHOUT_CXGBETOOLโ do not buildcxgbetool(8)
This is a default setting on arm/armv7 and riscv/riscv64.
WITH_CXGBETOOLโ buildcxgbetool(8)โจ
This is a default setting on amd64/amd64, arm64/aarch64, i386/i386, powerpc/powerpc64 and powerpc/powerpc64le.
WITHOUT_DEBUG_FILESโ avoid building or installing standalone debug files for each executable binary and shared library ๐ซถWITHOUT_DEPEND_CLEANUPโ do not attempt to detect if the object tree needs cleaning in part or in whole before building. It speeds up incremental builds, especially when experimenting with build options โ but heads up, it may cause the build to inexplicably fail or produce non-functioning binaries ๐WITH_DETECT_TZ_CHANGESโ make the time handling code detect changes to the timezone files ๐WITH_DIALOGโ do builddialog(1),dialog(3),dpv(1), anddpv(3).WITHOUT_DICTโ do not build the Webster dictionary files ๐WITH_DIRDEPS_BUILDโ this is an alternate build system. For details seehttps://www.crufty.net/sjg/docs/freebsd-meta-mode.htm. Build commands can be seen from the top-level with:
make show-valid-targets
The build is driven by dirdeps.mk using DIRDEPS stored in Makefile.depend files found in each directory.
The build can be started from anywhere, and behaves the same. The initial instance of make(1) recursively reads DIRDEPS from Makefile.depend, computing a graph of tree dependencies from the current origin. Setting NO_DIRDEPS skips checking dirdep dependencies and will only build in the current and child directories. NO_DIRDEPS_BELOW skips building any dirdeps and only build the current directory.
This also utilizes the WITH_META_MODE logic for incremental builds.
The build hides commands executed unless NO_SILENT is defined.
Note that there is currently no mass install feature for this. This build is designed for producing packages, that can then be installed on a target system.
The implementation in FreeBSD is incomplete ๐ญ Completion would require leaf directories for building each kernel and package so that their dependencies can be tracked. When set, it enforces these options:
WITH_INSTALL_AS_USER
When set, these options are also in effect:
WITH_META_ERROR_TARGET(unlessWITHOUT_META_ERROR_TARGETis set explicitly)WITH_META_MODE(unlessWITHOUT_META_MODEis set explicitly)WITH_STAGING(unlessWITHOUT_STAGINGis set explicitly)WITH_STAGING_MAN(unlessWITHOUT_STAGING_MANis set explicitly)WITH_STAGING_PROG(unlessWITHOUT_STAGING_PROGis set explicitly)WITH_SYSROOT(unlessWITHOUT_SYSROOTis set explicitly)
This must be set in the environment,makecommand line, or/etc/src-env.conf, not/etc/src.conf.
WITH_DIRDEPS_CACHEโ cache the result ofdirdeps.mk, which can save significant time for subsequent builds. Depends onWITH_DIRDEPS_BUILD.
This must be set in the environment,makecommand line, or/etc/src-env.conf, not/etc/src.conf.
WITH_DISK_IMAGE_TOOLS_BOOTSTRAPโ buildetdump(1),makefs(8)andmkimg(1)as bootstrap tools ๐ฟWITHOUT_DMAGENTโ do not builddmaMail Transport Agent ๐ฌWITHOUT_DOCCOMPRESSโ do not install compressed system documentation. Only the uncompressed version will be installed.WITHOUT_DTRACEโ do not build DTrace framework kernel modules, libraries, and user commands. When set, it enforces these options:WITHOUT_CTF
WITH_DTRACE_ASANโ compile userspace DTrace code (libdtrace,dtrace(1),lockstat(1),plockstat(1)) with address and undefined behavior sanitizers ๐งช Requires that Clang be used as the base system compiler and that the runtime support library is available.WITH_DTRACE_TESTSโ build and install the DTrace test suite in/usr/tests/cddl/usr.sbin/dtrace. Heads up bestie: this test suite is considered experimental on architectures other thanamd64/amd64and running it may cause system instability ๐WITHOUT_DYNAMICROOTโ set this if you do not want to link/binand/sbindynamically.WITHOUT_EEโ do not build and installedit(1),ee(1), and related programs.WITHOUT_EFIโ set not to buildefivar(3)andefivar(8).
This is a default setting on i386/i386, powerpc/powerpc64 and powerpc/powerpc64le.
This is a default setting on amd64/amd64, arm/armv7, arm64/aarch64 and riscv/riscv64.
WITHOUT_ELFTOOLCHAIN_BOOTSTRAPโ do not build ELF Tool Chain tools (addr2line,nm,size,stringsandstrip) as part of the bootstrap process. An alternate bootstrap tool chain must be provided ๐ซถWITHOUT_EXAMPLESโ avoid installing examples to/usr/share/examples/.WITH_EXPERIMENTALโ include experimental features in the build ๐งWITHOUT_FDTโ do not build Flattened Device Tree support as part of the base system. This includes the device tree compiler (dtc) andlibfdtsupport library.
This is a default setting on amd64/amd64 and i386/i386.
WITH_FDTโ build Flattened Device Tree support as part of the base system ๐ณ This includes the device tree compiler (dtc) andlibfdtsupport library.
This is a default setting on arm/armv7, arm64/aarch64, powerpc/powerpc64, powerpc/powerpc64le and riscv/riscv64.
WITHOUT_FILEโ do not buildfile(1)and related programs.WITHOUT_FINGERโ do not build or installfinger(1)andfingerd(8)๐WITHOUT_FLOPPYโ do not build or install programs for operating floppy disk driver ๐พWITHOUT_FORMAT_EXTENSIONSโ do not enable-fformat-extensionswhen compiling the kernel. Also disables all format checking.WITHOUT_FORTHโ build bootloaders without Forth support.WITHOUT_FREEBSD_UPDATEโ do not buildfreebsd-update(8).WITHOUT_FTPโ do not build or installftp(1).WITHOUT_GAMESโ do not build games ๐ฎ (tragic, I know)WITHOUT_GNU_DIFFโ do not build GNUdiff3(1); build BSDdiff3(1)instead.WITHOUT_GOOGLETESTโ neither build nor install library โlibgmockโ, library โlibgtestโ, and dependent tests.WITHOUT_GPIOโ do not buildgpioctl(8)as part of the base system.WITHOUT_HASTโ do not buildhastd(8)and related utilities.WITH_HESIODโ build Hesiod support.WITHOUT_HTMLโ do not build HTML docs.WITHOUT_HYPERVโ do not build or install HyperV utilities.
This is a default setting on arm/armv7, powerpc/powerpc64, powerpc/powerpc64le and riscv/riscv64.
WITH_HYPERVโ build or install HyperV utilities โจ
This is a default setting on amd64/amd64, arm64/aarch64 and i386/i386.
WITHOUT_ICONVโ do not buildiconvas part oflibc.WITHOUT_INCLUDESโ do not install header files. Fun lore drop: this option used to be spelledNO_INCS๐ฆ The option does not work for build targets.WITHOUT_INETโ do not build programs and libraries related to IPv4 networking. When set, it enforces these options:WITHOUT_INET_SUPPORT
WITHOUT_INET6โ do not build programs and libraries related to IPv6 networking. When set, it enforces these options:WITHOUT_INET6_SUPPORT
WITHOUT_INET6_SUPPORTโ build libraries, programs, and kernel modules without IPv6 support.WITHOUT_INETDโ do not buildinetd(8).WITHOUT_INET_SUPPORTโ build libraries, programs, and kernel modules without IPv4 support.WITHOUT_INSTALLLIBโ set this to not install optional libraries. For example, when creating ananobsd(8)image. Heads up: the option does not work for build targets.WITH_INSTALL_AS_USERโ makes install targets actually succeed for non-root girlies ๐ซถ by installing files with owner and group attributes set to that of the user running themake(1)command. Bestie you still gotta set theDESTDIRvariable to point at a directory where your user has write permissions, no cap. Permission check, slay, then install.WITHOUT_IPFILTERโ do not build the IP Filter package. Not the vibe today, skip it โจWITH_IPFILTER_IPFSโ enables building theipfs(8)tool so you can save and restore IPFilter state tables. Save your state, restore your state, iconic ๐WITHOUT_IPFWโ do not build the IPFW tools. That's it, that's the whole flag ๐WITHOUT_IPSEC_SUPPORTโ do not build the kernel withipsec(4)support. This option is needed foripsec(4)andtcpmd5(4), so if you turn it off, those two are lowkey not coming to the party ๐ญWITHOUT_ISCSIโ do not buildiscsid(8)and all its related utilities. Bye-bye iSCSI besties ๐WITHOUT_JAILโ do not build the tools for the support of jails, e.g.,jail(8). If you love confinement (affectionate), don't set this fr fr ๐WITHOUT_JEMALLOC_LG_VADDR_WIDEโ disallows programs from using more than 48 address bits onamd64. It's incompatible with LA57 mode. Turning this on might give you a slight reduction in memory consumption for jemalloc metadata, but it also requires disabling LA57 (if your hardware even supports it). Tradeoffs, bestie, tradeoffs ๐WITHOUT_KDUMPโ do not buildkdump(1)andtruss(1). No crash-dump translating, no syscall tracing, we simply don't look ๐๐WITHOUT_KERBEROSโ set this and Kerberos does not get built. When it's set, this option is also in effect:WITHOUT_KERBEROS_SUPPORT(unlessWITH_KERBEROS_SUPPORTis set explicitly)
WITHOUT_KERBEROS_SUPPORTโ build some programs without Kerberos support, likessh(1),telnet(1), andsshd(8). They still work, they just don't get the Kerberos glow-up โจWITH_KERNEL_BINโ generate and installkernel.binfrom the kernel as part of the normal build and install processes for the kernel. Available only onarmandarm64๐ฆ
Usually this gets added to the kernel config file with:
makeoptions WITH_KERNEL_BIN=1
though it can also be used on the command line. Either way, she's flexible, we love that ๐
WITH_KERNEL_RETPOLINEโ enables the "retpoline" mitigation for CVE-2017-5715 in the kernel build. Security said main character energy ๐ฅWITHOUT_KERNEL_SYMBOLSโ do not install the standalone kernel debug symbol files. Heads up: this option has no effect at build time โญWITHOUT_KVMโ do not build thelibkvmlibrary as a part of the base system. The option has no effect yet (I know, I know ๐ญ). When it's set, this option is also in effect:WITHOUT_KVM_SUPPORT(unlessWITH_KVM_SUPPORTis set explicitly)
WITHOUT_KVM_SUPPORTโ build some programs without the optionallibkvmsupport. Same programs, lighter bag ๐WITHOUT_LDNSโ setting this variable prevents the LDNS library from being built. When it's set, it enforces these options:WITHOUT_LDNS_UTILSWITHOUT_UNBOUND
Honestly it's giving "one decision, three consequences" ๐ธ
WITHOUT_LDNS_UTILSโ setting this variable prevents building the LDNS utilitiesdrill(1)andhost(1). No dig energy from these two ๐WITHOUT_LEGACY_CONSOLEโ do not build the programs that support a legacy PC console, e.g.,kbdcontrol(1)andvidcontrol(1). She's retired, respect her ๐WITHOUT_LIB32โ on 64-bit platforms, do not build the 32-bit library set and ald-elf32.so.1runtime linker.
This is a default setting on arm/armv7, i386/i386, powerpc/powerpc64le and riscv/riscv64.
WITH_LIB32โ on 64-bit platforms, build the 32-bit library set and ald-elf32.so.1runtime linker. The 32-bit girlies are so back ๐ฆ
This is a default setting on amd64/amd64, arm64/aarch64 and powerpc/powerpc64.
WITHOUT_LLDโ do not build LLVM'slldlinker. LLD said "I'm leaving" ๐WITHOUT_LLDBโ do not build the LLDB debugger. No breakpoints, no stepping through code, no nosy bestie energy ๐
This is a default setting on riscv/riscv64.
WITH_LLDBโ build the LLDB debugger. Now with the nosy bestie energy ๐ฅ
This is a default setting on amd64/amd64, arm/armv7, arm64/aarch64, i386/i386, powerpc/powerpc64 and powerpc/powerpc64le.
WITHOUT_LLD_BOOTSTRAPโ do not build the LLD linker during the bootstrap phase of the build. To be able to build the system, an alternate linker must be provided viaXLDโ ๏ธ like, you must, not optional.WITH_LLVM_ASSERTIONSโ enable debugging assertions in LLVM. She checks everything twice and I respect it โจWITHOUT_LLVM_BINUTILSโ install ELF Tool Chain's binary utilities instead of LLVM's. This includesaddr2line(1),ar(1),nm(1),objcopy(1),ranlib(1),readelf(1),size(1), andstrip(1). Regardless of this setting, LLVM tools are used forc++filt(1)andobjdump(1). Andstrings(1)is always provided by ELF Tool Chain โ that one's not up for debate ๐WITHOUT_LLVM_COVโ do not build thellvm-cov(1)tool. Coverage? Not today ๐WITHOUT_LLVM_CXXFILTโ install ELF Tool Chain'scxxfiltasc++filt, instead of LLVM'sllvm-cxxfilt. Same name, different girlie ๐WITH_LLVM_FULL_DEBUGINFOโ generate full debug information for LLVM libraries and tools. It uses more disk space and build resources, but it allows for easier debugging. Expensive but worth it, ykyk ๐ธ๐WITH_LLVM_LINK_STATIC_LIBRARIESโ link the LLVM libraries (libllvm,libclang,liblldb) statically into each of the binaries that use them.
This means binaries linked against these libraries, such as clang, ld.lld and lldb, will be much larger and position dependent โ but they will start more quickly. Big girlies, fast girlies โญ
WITHOUT_LLVM_TARGET_AARCH64โ do not build LLVM target support for AArch64. TheLLVM_TARGET_ALLoption should be used rather than this in most cases. (Read: don't do this manually, bestie.)WITHOUT_LLVM_TARGET_ALLโ only build the required LLVM target support. This option is preferred to the specific target support options. When it's set, these options are also in effect:WITHOUT_LLVM_TARGET_AARCH64(unlessWITH_LLVM_TARGET_AARCH64is set explicitly)WITHOUT_LLVM_TARGET_ARM(unlessWITH_LLVM_TARGET_ARMis set explicitly)WITHOUT_LLVM_TARGET_POWERPC(unlessWITH_LLVM_TARGET_POWERPCis set explicitly)WITHOUT_LLVM_TARGET_RISCV(unlessWITH_LLVM_TARGET_RISCVis set explicitly)
One flag to rule them all, periodt ๐
WITHOUT_LLVM_TARGET_ARMโ do not build LLVM target support for ARM. TheLLVM_TARGET_ALLoption should be used rather than this in most cases.WITH_LLVM_TARGET_BPFโ build LLVM target support for BPF. TheLLVM_TARGET_ALLoption should be used rather than this in most cases.WITH_LLVM_TARGET_MIPSโ build LLVM target support for MIPS. TheLLVM_TARGET_ALLoption should be used rather than this in most cases.WITHOUT_LLVM_TARGET_POWERPCโ do not build LLVM target support for PowerPC. TheLLVM_TARGET_ALLoption should be used rather than this in most cases.WITHOUT_LLVM_TARGET_RISCVโ do not build LLVM target support for RISC-V. TheLLVM_TARGET_ALLoption should be used rather than this in most cases.WITHOUT_LLVM_TARGET_X86โ do not build LLVM target support for X86. TheLLVM_TARGET_ALLoption should be used rather than this in most cases.
WITHOUT_LOADER_BIOS_TEXTONLYโ include graphics, font and video mode support in thei386andamd64BIOS boot loader. (Yes, that's the description for theWITHOUT_version as written, bestie โ I don't make the rules ๐)WITH_LOADER_EFI_SECUREBOOTโ enable buildingloader(8)with support for verification based on certificates obtained from UEFI. Certificates only, we trust the vibes ๐๐WITHOUT_LOADER_GELIโ disable inclusion of GELI crypto support in the boot chain binaries. No crypto at boot for you ๐
This is a default setting on powerpc/powerpc64 and powerpc/powerpc64le.
WITH_LOADER_GELIโ build GELI bootloader support. Crypto at boot, slay ๐
This is a default setting on amd64/amd64, arm/armv7, arm64/aarch64, i386/i386 and riscv/riscv64.
WITHOUT_LOADER_IA32โ do not build the 32-bit UEFI loader.
This is a default setting on arm/armv7, arm64/aarch64, i386/i386, powerpc/powerpc64, powerpc/powerpc64le and riscv/riscv64.
WITH_LOADER_IA32โ build the 32-bit UEFI loader. Tiny loader, huge heart ๐ฆ
This is a default setting on amd64/amd64.
WITHOUT_LOADER_KBOOTโ do not buildkboot, a linuxboot environment loader. (Note: no trailing period in the original description, and I respect the chaos ๐)
This is a default setting on arm/armv7, i386/i386, powerpc/powerpc64le and riscv/riscv64.
WITH_LOADER_KBOOTโ buildkboot, a linuxboot environment loader
This is a default setting on amd64/amd64, arm64/aarch64 and powerpc/powerpc64.
WITHOUT_LOADER_LUAโ do not build LUA bindings for the boot loader. Scripting said "not my era" ๐
This is a default setting on powerpc/powerpc64 and powerpc/powerpc64le.
WITH_LOADER_LUAโ build LUA bindings for the boot loader. Boot-time scripting is such a vibe โจ
This is a default setting on amd64/amd64, arm/armv7, arm64/aarch64, i386/i386 and riscv/riscv64.
WITHOUT_LOADER_OFWโ disable building of openfirmware bootloader components.
This is a default setting on amd64/amd64, arm/armv7, arm64/aarch64, i386/i386 and riscv/riscv64.
WITH_LOADER_OFWโ build openfirmware bootloader components.
This is a default setting on powerpc/powerpc64 and powerpc/powerpc64le.
WITHOUT_LOADER_PXEBOOTโ do not buildpxebootoni386/amd64. When thepxebootis too large, or unneeded, it may be disabled with this option. SeeWITH_LOADER_PXEBOOTfor how to adjust the defaults when you need both a larger/boot/loaderand/boot/pxeboot๐ซถ
Heads up: this option only has an effect on x86. Everywhere else it's just decorative ๐
WITHOUT_LOADER_UBOOTโ disable building ofubldr.
This is a default setting on amd64/amd64, arm64/aarch64, i386/i386, powerpc/powerpc64le and riscv/riscv64.
WITH_LOADER_UBOOTโ buildubldr. She's back, she's booting ๐ฆ
This is a default setting on arm/armv7 and powerpc/powerpc64.
WITH_LOADER_VERBOSEโ build with extra verbose debugging in the loader. May explode an already nearly-too-large loader over the limit. Use with care โ ๏ธ like genuinely, she's already at capacity, don't push her ๐ญWITH_LOADER_VERIEXECโ enable buildingloader(8)with support for verification similar to Verified Exec. Depends onWITH_BEARSSL. May require a largerLOADERSIZE. When it's set, these options are also in effect:WITH_LOADER_EFI_SECUREBOOT(unlessWITHOUT_LOADER_EFI_SECUREBOOTis set explicitly)WITH_LOADER_VERIEXEC_VECTX(unlessWITHOUT_LOADER_VERIEXEC_VECTXis set explicitly)
Verify everything, trust nothing ๐
WITH_LOADER_VERIEXEC_PASS_MANIFESTโ enable buildingloader(8)with support to pass a verified manifest to the kernel. The kernel has to be built with a module to parse the manifest โ so this is a two-piece fit, no cap ๐งฉ
Depends on WITH_LOADER_VERIEXEC.
WITH_LOADER_VERIEXEC_VECTXโ enable buildingloader(8)with support for hashing and verifying the kernel and modules as a side effect of loading. Verification as a little treat, we love an efficient queen ๐
Depends on WITH_LOADER_VERIEXEC ๐ (that's the tail of that last one, bestie, keep it attached to whichever entry came just above).
WITHOUT_LOADER_ZFSโ no ZFS file system boot loader support, sorry to the ZFS girlies ๐ซถWITHOUT_LOCALESโ no localization files; peeplocale(1)for the deets.WITHOUT_LOCATEโlocate(1)and its little friends don't get built. Yourlocateera is over ๐ญWITHOUT_LPRโlpr(1)and friends, gone. No printing printcess here ๐WITHOUT_LS_COLORSโ you still getls(1), just no color support for telling file types apart. Monochrome realness, lowkey sad ๐WITHOUT_MACHDEP_OPTIMIZATIONSโ prefer machine-independent, non-assembler code inlibcandlibm. Vibes = portable, not hand-tuned โจWITHOUT_MAILโ zero mail support at all, MUA or MTA, none of it ๐ญ When you set this, it also enforces:WITHOUT_DMAGENTWITHOUT_MAILWRAPPERWITHOUT_SENDMAIL
WITHOUT_MAILWRAPPERโ skip themailwrapper(8)MTA selector entirely.WITHOUT_MAKEโmake(1)and related support files do not get installed. (Iconic, terrifying, moving on ๐)WITHOUT_MAKE_CHECK_USE_SANDBOXโ don't run โmake checkโ in limited sandbox mode. Pair this withWITH_INSTALL_AS_USERif you're running it as an unprivileged user โ that part matters, fr fr. Seetests(7)for the full lore ๐ฆWITHOUT_MALLOC_PRODUCTIONโ this one turns on the extra stuff: assertions and statistics gathering inmalloc(3). The run-time optionsopt.abort,opt.abort_conf, andopt.junkalso default to true ๐ง (yes,WITHOUT_enabling things is giving chaos, that's just how it is)WITHOUT_MANโ no manual pages get built. When set, this is also in effect:WITHOUT_MAN_UTILS(unlessWITH_MAN_UTILSis set explicitly)
WITHOUT_MANCOMPRESSโ no compressed man pages installed; only the uncompressed versions go in. Unzipped and unbothered ๐ธWITH_MANSPLITPKGโ split man pages into their own packages duringmake package. So organized ๐WITHOUT_MAN_UTILSโ no utilities for manual pages:apropos(1),makewhatis(1),man(1),whatis(1),manctl(8), and related support files. The whole help-me-find-help squad, gone ๐WITH_META_ERROR_TARGETโ enables theMETA_MODE.ERRORtarget. This target copies the meta file of a failed target intoERROR_LOGDIR(default is${SRCTOP:H}/error) so you can do failure analysis later. Depends onWITH_META_MODE. It's the default whenWITH_DIRDEPS_BUILDis set ๐ต๏ธ
Heads up bestie: this must be set in the environment, on themakecommand line, or in/etc/src-env.confโ not in/etc/src.conf. Not negotiable.
WITH_META_MODEโ createsmake(1)meta files while building, which can give you a reliable incremental build when you're usingfilemon(4). The meta file lands inOBJDIRastarget.metaโจ These meta files track the command that was executed, its output, and the current directory. Thefilemon(4)module is required unlessNO_FILEMONis defined. Once the module is loaded, any files used by the commands you executed get tracked as dependencies for that target in its meta file. A target counts as out-of-date and gets rebuilt if any of these are true compared to the last build:- The command to execute changes.
- The current working directory changes.
- The target's meta file is missing.
- The target's meta file is missing filemon data when filemon is loaded and a previous run did not have it loaded.
- [requires
filemon(4)] Files read, executed or linked to are newer than the target. - [requires
filemon(4)] Files read, written, executed or linked are missing.
The meta files can also be useful for debugging ๐ The build hides commands that are executed unless NO_SILENT is defined. Errors cause make(1) to show some of its environment so you can debug further. The build operates as it normally would otherwise. This option originally invoked a different build system, but that got renamed to WITH_DIRDEPS_BUILD.
Again for the people in the back: this must be set in the environment, on themakecommand line, or in/etc/src-env.conf, not/etc/src.conf๐
WITHOUT_MITKRB5โ set this to build KTH Heimdal instead of MIT Kerberos 5. Pick your Kerberos fighter ๐ฅWITHOUT_MLX5TOOLโ nomlx5tool(8). This is a default setting onarm/armv7andriscv/riscv64.WITH_MLX5TOOLโ buildsmlx5tool(8). This is a default setting onamd64/amd64,arm64/aarch64,i386/i386,powerpc/powerpc64andpowerpc/powerpc64le.WITHOUT_NETCATโ nonc(1)utility. (The netcat girlies are in shambles ๐ญ)WITHOUT_NETGRAPHโ no applications supportingnetgraph(4). When set, it enforces:WITHOUT_BLUETOOTH
And when set, these options are also in effect:
WITHOUT_NETGRAPH_SUPPORT(unlessWITH_NETGRAPH_SUPPORTis set explicitly)
WITHOUT_NETGRAPH_SUPPORTโ build libraries, programs, and kernel modules without netgraph support.WITHOUT_NETLINKโ nogenl(1)utility.WITHOUT_NETLINK_SUPPORTโ make libraries and programs usertsockandsysctl(3)interfaces instead ofsnl(3). Old school, but make it fashion ๐WITHOUT_NISโ noNIS(8)support and related programs. If you set this, you might need to adopt yournsswitch.conf(5)and remove โnisโ entries. Do the cleanup, bestie ๐งนWITHOUT_NLSโ no NLS catalogs at all. When set, it enforces:WITHOUT_NLS_CATALOGS
WITHOUT_NLS_CATALOGSโ no NLS catalog support forcsh(1). ๐WITHOUT_NS_CACHINGโ disables name caching in the nsswitch subsystem. The generic caching daemon,nscd(8), won't be built either if this is set. No cache, only vibes โญWITHOUT_NTPโ nontpd(8)and related programs. Time is a construct anyway ๐ฐ๏ธWITHOUT_NUAGEINITโ don't install the limited cloud init support scripts.WITHOUT_OFEDโ no โOpenFabrics Enterprise Distributionโ InfiniBand software stack, including kernel modules and userspace libraries. This is a default setting onarm/armv7. When set, it enforces:WITHOUT_OFED_EXTRA
WITH_OFEDโ builds the โOpenFabrics Enterprise Distributionโ InfiniBand software stack, including kernel modules and userspace libraries. This is a default setting onamd64/amd64,arm64/aarch64,i386/i386,powerpc/powerpc64,powerpc/powerpc64leandriscv/riscv64.WITH_OFED_EXTRAโ builds the non-essential components of the โOpenFabrics Enterprise Distributionโ Infiniband software stack, mostly examples. The bonus content ๐WITH_OPENLDAPโ enables building LDAP support for kerberos using an openldap client from ports.WITHOUT_OPENMPโ no LLVM's OpenMP runtime. This is a default setting onarm/armv7.WITH_OPENMPโ builds LLVM's OpenMP runtime. This is a default setting onamd64/amd64,arm64/aarch64,i386/i386,powerpc/powerpc64,powerpc/powerpc64leandriscv/riscv64.WITHOUT_OPENSSHโ no OpenSSH. No cap, that's a big one ๐ซถWITHOUT_OPENSSLโ no OpenSSL. When set, it enforces all of these:WITHOUT_DMAGENTWITHOUT_KERBEROSWITHOUT_LDNSWITHOUT_LDNS_UTILSWITHOUT_LOADER_ZFSWITHOUT_MITKRB5WITHOUT_OPENSSHWITHOUT_OPENSSL_KTLSWITHOUT_PKGBOOTSTRAPWITHOUT_UNBOUNDWITHOUT_ZFSWITHOUT_ZFS_TESTS
When set, these options are also in effect:
WITHOUT_KERBEROS_SUPPORT(unlessWITH_KERBEROS_SUPPORTis set explicitly)
WITHOUT_OPENSSL_KTLSโ don't include kernel TLS support in OpenSSL. This is a default setting onarm/armv7,i386/i386andriscv/riscv64.WITH_OPENSSL_KTLSโ includes kernel TLS support in OpenSSL. This is a default setting onamd64/amd64,arm64/aarch64,powerpc/powerpc64andpowerpc/powerpc64le.WITHOUT_PAMโ don't build the PAM library and modules. โ ๏ธ Heads up: this option is deprecated and does nothing. When set, these options are also in effect:WITHOUT_PAM_SUPPORT(unlessWITH_PAM_SUPPORTis set explicitly)
WITHOUT_PAM_SUPPORTโ buildppp(8)without PAM support.WITHOUT_PFโ no PF firewall package. When set, it enforces:WITHOUT_AUTHPF
WITHOUT_PIEโ don't build dynamically linked binaries as Position-Independent Executable (PIE). This is a default setting onarm/armv7andi386/i386.WITH_PIEโ builds dynamically linked binaries as Position-Independent Executable (PIE). This is a default setting onamd64/amd64,arm64/aarch64,powerpc/powerpc64,powerpc/powerpc64leandriscv/riscv64.WITHOUT_PKGBOOTSTRAPโ nopkg(7)bootstrap tool.WITHOUT_PMCโ nopmccontrol(8)and related programs.WITHOUT_PPPโ noppp(8)and related programs.WITH_PTHREADS_ASSERTIONSโ enable debugging assertions in the pthreads library. Debug girl summer ๐ฅWITHOUT_QUOTASโ noquota(1)and related programs.WITHOUT_RADIUS_SUPPORTโ don't build radius support into various applications, likepam_radius(8)andppp(8).WITH_RATELIMITโ builds the system with rate limit support. This makesSO_MAX_PACING_RATEeffective ingetsockopt(2), and gives you txrlimit support inifconfig(8), by proxy. Throttle era โจWITHOUT_RBOOTDโ don't build or installrbootd(8).WITHOUT_RELROโ don't apply the Relocation Read-Only (RELRO) vulnerability mitigation. โ ๏ธ That's a security mitigation, bestie โ see also theBIND_NOWoption.WITHOUT_REPRODUCIBLE_BUILDโ include build metadata (such as the build time, user, and host) in the kernel, boot loaders, andunameoutput. Successive builds will not be bit-for-bit identical. So much for twins ๐WITHOUT_RESCUEโ norescue(8). Hope you don't need saving ๐WITH_RETPOLINEโ builds the base system with the retpoline speculative execution vulnerability mitigation for CVE-2017-5715. Security slay ๐ก๏ธWITHOUT_ROUTEDโ norouted(8)utility.WITH_RPCBIND_WARMSTART_SUPPORTโ buildsrpcbind(8)with warmstart support.WITH_RUN_TESTSโ run tests as part of the build. Test-driven bestie behavior ๐WITHOUT_SCTP_SUPPORTโ disables kernel support for thesctp(4)Stream Control Transmission Protocol loadable kernel module.WITHOUT_SENDMAILโ nosendmail(8)and related programs. ๐ฎWITHOUT_SERVICESDBโ bestie, we are simply not installing/var/db/services.db. that's it, that's the whole vibe ๐WITHOUT_SETUID_LOGINโ set this andlogin(1)does not get installed as a set-user-ID root program. no root-flavored login for you ๐ซถWITHOUT_SHAREDOCSโ do not build the 4.4BSD legacy docs. they're giving ancient, lowkey, and we're not building them โจWITH_SORT_THREADSโ turn on threads insort(1). parallel sorting rights ๐ฅWITHOUT_SOUNDโ do not build userland sound utilities likebeep(1)and `mixer(8). it's a silent build, literally ๐ฆWITHOUT_SOURCELESSโ do not build kernel modules that include sourceless code (either microcode or native code for host CPU). when this is set, it enforces these options:WITHOUT_SOURCELESS_HOSTWITHOUT_SOURCELESS_UCODE
WITHOUT_SOURCELESS_HOSTโ do not build kernel modules that include sourceless native code for host CPU. nope, not those ๐ซถWITHOUT_SOURCELESS_UCODEโ do not build kernel modules that include sourceless microcode. skipping the ucode modules, periodt ๐WITHOUT_SPLIT_KERNEL_DEBUGโ do not build standalone kernel debug files. debug data (if it's enabled by the kernel configuration file) just gets included in the kernel and modules instead. when set, it enforces these options:WITHOUT_KERNEL_SYMBOLS
WITHOUT_SSPโ do not build world with stack smashing protection. seemitigations(7)for the whole lore ๐WITH_STAGINGโ enable staging of files to a stage tree. think of it as auto-install toDESTDIRbut with some extra meta data so dependencies can actually be tracked โ it's giving organized main character energy ๐. depends onWITH_DIRDEPS_BUILD. when set, these options are also in effect:WITH_STAGING_MAN(unlessWITHOUT_STAGING_MANis set explicitly)WITH_STAGING_PROG(unlessWITHOUT_STAGING_PROGis set explicitly)
โ ๏ธ this must be set in the environment, make command line, or/etc/src-env.conf, not/etc/src.conf. read it again bestie, it matters ๐
WITH_STAGING_MANโ enable staging of man pages to stage tree. the manuals are getting staged too ๐WITH_STAGING_PROGโ enable staging ofPROGsto stage tree. yes girl, the progs ๐WITH_STALE_STAGEDโ check staged files are not stale. freshness check, slay โจWITHOUT_STATSโ neither build nor install library โlibstatsโ and dependent binaries. no stats, no binaries that need stats ๐ธWITHOUT_SYSCONSโ do not buildsyscons(4)support files such as keyboard maps, fonts, and screen output maps. ngl that's a whole little bundle we're skipping ๐ฆWITH_SYSROOTโ enable use of sysroot during build. depends onWITH_DIRDEPS_BUILD.
โ ๏ธ this must be set in the environment, make command line, or/etc/src-env.conf, not/etc/src.conf. iykyk ๐
WITHOUT_SYSTEM_COMPILERโ do not opportunistically skip building a cross-compiler during the bootstrap phase of the build. so normally, if the currently installed compiler matches the planned bootstrap compiler type and revision, then it will not be built โ this option kills that little shortcut. important caveat: this does not prevent a compiler from being built for installation though, only for building one for the build itself. theWITHOUT_CLANGoption controls that one ๐WITHOUT_SYSTEM_LINKERโ do not opportunistically skip building a cross-linker during the bootstrap phase of the build. normally, if the currently installed linker matches the planned bootstrap linker type and revision, then it will not be built. this does not prevent a linker from being built for installation though, only for building one for the build itself โ theWITHOUT_LLDoption controls that.
this option is only relevant when WITH_LLD_BOOTSTRAP is set. only then, bestie ๐ฅ
WITHOUT_TALKโ do not build or installtalk(1)andtalkd(8). no talking in this build fr fr ๐ญWITHOUT_TCP_WRAPPERSโ do not build or installtcpd(8), and related utilities. the wrappers are staying home ๐ซถWITHOUT_TCSHโ do not build and install/bin/csh(which istcsh(1), bestie, they're the same thing). bye bye csh ๐WITHOUT_TELNETโ do not buildtelnet(1)and related programs. no telnet era for us ๐WITHOUT_TESTSโ do not build nor install the FreeBSD Test Suite in/usr/tests/. seetests(7)for more details. this also disables the build of all test-related dependencies, including ATF. when set, it enforces these options:WITHOUT_DTRACE_TESTSWITHOUT_ZFS_TESTS
when set, these options are also in effect:
WITHOUT_GOOGLETEST(unlessWITH_GOOGLETESTis set explicitly)WITHOUT_TESTS_SUPPORT(unlessWITH_TESTS_SUPPORTis set explicitly)
WITHOUT_TESTS_SUPPORTโ disable the build of all test-related dependencies, including ATF. when set, it enforces these options:WITHOUT_GOOGLETEST
WITHOUT_TEXTPROCโ do not build programs used for text processing. no textproc girls allowed ๐WITHOUT_TFTPโ do not build or installtftp(1)andtftpd(8). skipping the file transfer duo ๐ฆWITHOUT_TOOLCHAINโ do not install programs used for program development, compilers, debuggers etc. when set, it enforces these options:WITHOUT_CLANGWITHOUT_CLANG_EXTRASWITHOUT_CLANG_FORMATWITHOUT_CLANG_FULLWITHOUT_LLDWITHOUT_LLDBWITHOUT_LLVM_COV
when set, these options are also in effect:
WITHOUT_LLVM_BINUTILS(unlessWITH_LLVM_BINUTILSis set explicitly)
WITH_UBSANโ build the base system with Undefined Behavior Sanitizer (UBSan) to detect various kinds of undefined behavior at runtime. requires that Clang be used as the base system compiler and that the runtime support library is available. (yes, both, no exceptions ๐)WITHOUT_UNBOUNDโ do not buildunbound(8)and related programs. unbound is not bound to this build ๐WITH_UNDEFINED_VERSIONโ link libraries with--undefined-versionwhich permits version maps to contain symbols that are not present in the library. ngl, if this is necessary to build a particular configuration, a bug is present and the configuration should be reported. it's giving red flag ๐ฉWITHOUT_UNIFIED_OBJDIRโ use the historical object directory format forbuild(7)targets. for native-builds and builds done directly in sub-directories the format of${MAKEOBJDIRPREFIX}/${.CURDIR}is used, while for cross-builds${MAKEOBJDIRPREFIX}/${TARGET}.${TARGET_ARCH}/${.CURDIR}is used.
this option is transitional and will be removed in a future version of FreeBSD, at which time WITH_UNIFIED_OBJDIR will be enabled permanently. so likeโฆ enjoy it while it lasts bestie ๐
โ ๏ธ this must be set in the environment, make command line, or/etc/src-env.conf, not/etc/src.conf. same rule as always ๐ซถ
WITHOUT_USBโ do not build USB-related programs and libraries. unplugged. literally ๐WITHOUT_USB_GADGET_EXAMPLESโ do not build USB gadget kernel modules. no little gadget modules for you ๐ธWITHOUT_UTMPXโ do not build user accounting tools such aslast(1),users(1),who(1),ac(8),lastlogin(8)andutx(8). so nobody knows who logged in. iconique ๐WITH_VERIEXECโ enable buildingveriexec(8)which loads the contents of verified manifests into the kernel for use bymac_veriexec(4).
depends on WITH_BEARSSL. yes, that's a real dependency name, no i'm not kidding ๐ป
WITHOUT_VIโ do not build and installvi,view,exand related programs. no editor for you, go touch grass ๐ฑ โ jk, but the option's the option ๐WITHOUT_VTโ do not buildvt(4)support files (fonts and keymaps). skipping the fonts AND the keymaps ๐ฆWITHOUT_WARNSโ set this to not add warning flags to the compiler invocations. useful as a temporary workaround when code enters the tree which triggers warnings in environments that differ from the original developer. temporary, bestie, i said what i said ๐WITHOUT_WERRORโ set this to not treat compiler warnings as errors. useful as a temporary workaround when working on fixing compiler warnings. when set, warnings are still printed in the build log but do not fail the build. so it's a "we see you, we're just not mad about it" situation โจWITHOUT_WIRELESSโ do not build programs used for 802.11 wireless networks; especiallywpa_supplicant(8)andhostapd(8). when set, these options are also in effect:WITHOUT_WIRELESS_SUPPORT(unlessWITH_WIRELESS_SUPPORTis set explicitly)
WITHOUT_WIRELESS_SUPPORTโ build libraries, programs, and kernel modules without 802.11 wireless support. the whole build is going airplane mode โ๏ธWITHOUT_WPA_SUPPLICANT_EAPOLโ buildwpa_supplicant(8)without support for the IEEE 802.1X protocol and without support forEAP-PEAP,EAP-TLS,EAP-LEAP, andEAP-TTLSprotocols (usable only via 802.1X). so many acronyms gone at once ๐ญWITH_ZEROREGSโ build the basesystem with code to zero caller-used register contents on function return. this prevents leaking temporary values for side channel attacks. additionally this reduces the number of usable ROP gadgets for attackers. security girl summer ๐ฅWITHOUT_ZFSโ do not build the ZFS file system kernel module, libraries such aslibbe(3), and user commands such aszpool(8)orzfs(8). also disable ZFS support in utilities and libraries which implement ZFS-specific functionality. when set, it enforces these options:WITHOUT_ZFS_TESTS
WITHOUT_ZFS_TESTSโ do not build and install the legacy ZFS test suite. legacy tests, we hardly knew ye ๐ฆWITHOUT_ZONEINFOโ do not build the timezone database. when set, it enforces these options:WITHOUT_ZONEINFO_LEAPSECONDS_SUPPORT
WITH_ZONEINFO_LEAPSECONDS_SUPPORTโ build leapsecond information in to the timezone database.
๐จ serious one, bestie โ this option violates IEEE Std 1003.1 (โPOSIX.1โ) and all other applicable standards, and is known to cause unexpected issues with date/time handling in many applications and programming languages. like, actually chaotic ๐
the following options accept a single value from a list of valid values. one value. one. not a boolean situation ๐
๐ INIT_ALL
control default initialization of stack variables in C and C++ code. options other than none require the Clang compiler or GCC 12.0 or later. the default value is none. valid values are:
noneโ do not initialize stack variables (standard C/C++ behavior). the classic ๐patternโ build the base system or kernel with stack variables initialized to (compiler defined) debugging patterns on function entry.zeroโ build the base system or kernel with stack variables initialized to zero on function entry. heads up: this value is converted tononefor amd64 kernel builds due to incompatibility withifunc memset. so on amd64 it's giving "zero" but it's actually "none" ๐
๐ LIBC_MALLOC
specify the malloc(3) implementation used by libc. the default value is jemalloc. valid values are:
jemalloc
other implementations are expected in the future in both FreeBSD and downstream consumers. watch this space โจ
๐ FILES ๐
/etc/src.conf/etc/src-env.conf/usr/share/mk/bsd.own.mk
๐ซถ SEE ALSO
okay so like, if you wanna go deeper (and honestly? you should, bestie, the lore is rich), go peek at these:
make(1)โ the whole reason this file even matters, the main character frmake.conf(5)โ its louder, more chaotic sibling โจbuild(7)โ the big-picture overview of how the build system worksports(7)โ for when you're off building ports and living your best life ๐
๐ธ HISTORY
ngl this one's got a little origin story: the src.conf file made its debut in FreeBSD 7.0. iconic behavior, honestly. ๐
๐ AUTHORS
and who do we have to thank for this masterpiece? plot twist: nobody hand-wrote it ๐ญ this manual page was autogenerated by tools/build/options/makeman. so like, a script wrote it, which is lowkey the most Unix thing ever โ the machine documenting itself. main character energy fr fr ๐คโจ
aww okay bestie that's the whole page, you made it!! ๐ go forth and src.conf responsibly. mwah ๐
โ signed, sealed, delivered: Debian build, dated March 28, 2026, brought to you by the fine folks behind SRC.CONF(5) ๐ฆ
๐ฆ where this page comes from
- freebsd 15.1: base 15.1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms