xref: /freebsd/share/mk/src.opts.mk (revision e0281204cce3d309b9aa390c0bcb2b1ab7bf2606)
15e84b765SWarner Losh# $FreeBSD$
25e84b765SWarner Losh#
3*e0281204SWarner Losh# Option file for FreeBSD /usr/src builds, at least the userland and boot loader
4*e0281204SWarner Losh# portions of the tree. These options generally chose what parts of the tree to
5*e0281204SWarner Losh# include or omit and are FreeBSD source tree specific.
65e84b765SWarner Losh#
75e84b765SWarner Losh# Users define WITH_FOO and WITHOUT_FOO on the command line or in /etc/src.conf
85e84b765SWarner Losh# and /etc/make.conf files. These translate in the build system to MK_FOO={yes,no}
95e84b765SWarner Losh# with sensible (usually) defaults.
105e84b765SWarner Losh#
115e84b765SWarner Losh# Makefiles must include bsd.opts.mk after defining specific MK_FOO options that
125e84b765SWarner Losh# are applicable for that Makefile (typically there are none, but sometimes there
135e84b765SWarner Losh# are exceptions). Recursive makes usually add MK_FOO=no for options that they wish
145e84b765SWarner Losh# to omit from that make.
155e84b765SWarner Losh#
161fc86460SWarner Losh# Makefiles must include bsd.mkopt.mk before they test the value of any MK_FOO
175e84b765SWarner Losh# variable.
185e84b765SWarner Losh#
19c6063d0dSWarner Losh# Makefiles may also assume that this file is included by src.opts.mk should it
205e84b765SWarner Losh# need variables defined there prior to the end of the Makefile where
215e84b765SWarner Losh# bsd.{subdir,lib.bin}.mk is traditionally included.
225e84b765SWarner Losh#
235e84b765SWarner Losh# The old-style YES_FOO and NO_FOO are being phased out. No new instances of them
245e84b765SWarner Losh# should be added. Old instances should be removed since they were just to
255e84b765SWarner Losh# bridge the gap between FreeBSD 4 and FreeBSD 5.
265e84b765SWarner Losh#
275e84b765SWarner Losh# Makefiles should never test WITH_FOO or WITHOUT_FOO directly (although an
285e84b765SWarner Losh# exception is made for _WITHOUT_SRCONF which turns off this mechanism
2922cac754SWarner Losh# completely inside bsd.*.mk files).
305e84b765SWarner Losh#
315e84b765SWarner Losh
325e84b765SWarner Losh.if !target(__<src.opts.mk>__)
335e84b765SWarner Losh__<src.opts.mk>__:
345e84b765SWarner Losh
35f9798cc7SWarner Losh.include <bsd.own.mk>
36f9798cc7SWarner Losh
375e84b765SWarner Losh#
385e84b765SWarner Losh# Define MK_* variables (which are either "yes" or "no") for users
395e84b765SWarner Losh# to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the
405e84b765SWarner Losh# make(1) environment.
415e84b765SWarner Losh# These should be tested with `== "no"' or `!= "no"' in makefiles.
425e84b765SWarner Losh# The NO_* variables should only be set by makefiles for variables
435e84b765SWarner Losh# that haven't been converted over.
445e84b765SWarner Losh#
455e84b765SWarner Losh
46c1593b9eSWarner Losh# These options are used by the src builds. Those listed in
47c1593b9eSWarner Losh# __DEFAULT_YES_OPTIONS default to 'yes' and will build unless turned
48c1593b9eSWarner Losh# off.  __DEFAULT_NO_OPTIONS will default to 'no' and won't build
49c1593b9eSWarner Losh# unless turned on. Any options listed in 'BROKEN_OPTIONS' will be
50c1593b9eSWarner Losh# hard-wired to 'no'.  "Broken" here means not working or
51c1593b9eSWarner Losh# not-appropriate and/or not supported. It doesn't imply something is
52c1593b9eSWarner Losh# wrong with the code. There's not a single good word for this, so
53c1593b9eSWarner Losh# BROKEN was selected as the least imperfect one considered at the
54c1593b9eSWarner Losh# time. Options are added to BROKEN_OPTIONS list on a per-arch basis.
55c1593b9eSWarner Losh# At this time, there's no provision for mutually incompatible options.
565e84b765SWarner Losh
575e84b765SWarner Losh__DEFAULT_YES_OPTIONS = \
585e84b765SWarner Losh    ACCT \
595e84b765SWarner Losh    ACPI \
605e84b765SWarner Losh    APM \
615e84b765SWarner Losh    AT \
625e84b765SWarner Losh    ATM \
635e84b765SWarner Losh    AUDIT \
645e84b765SWarner Losh    AUTHPF \
65b3590423SEnji Cooper    AUTOFS \
6602629e46SEnji Cooper    BHYVE \
6795856e14SKurt Lidl    BLACKLIST \
685e84b765SWarner Losh    BLUETOOTH \
695e84b765SWarner Losh    BOOT \
7011981695SEnji Cooper    BOOTPARAMD \
7111981695SEnji Cooper    BOOTPD \
725e84b765SWarner Losh    BSD_CPIO \
73e45b569cSEnji Cooper    BSDINSTALL \
745e84b765SWarner Losh    BSNMP \
755e84b765SWarner Losh    BZIP2 \
765e84b765SWarner Losh    CALENDAR \
775e84b765SWarner Losh    CAPSICUM \
78f27f39dbSKyle Evans    CAROOT \
795e84b765SWarner Losh    CASPER \
8018cc3172SEnji Cooper    CCD \
815e84b765SWarner Losh    CDDL \
8283a08b7cSEd Maste    CLANG \
834a4c9a0fSAlex Richardson    CLANG_BOOTSTRAP \
844a4c9a0fSAlex Richardson    CLANG_IS_CC \
8575766799SEd Maste    CLEAN \
865e84b765SWarner Losh    CPP \
875e84b765SWarner Losh    CROSS_COMPILER \
885e84b765SWarner Losh    CRYPT \
8936716419SHans Petter Selasky    CUSE \
905e84b765SWarner Losh    CXX \
91983a395dSWarner Losh    CXGBETOOL \
92f987297fSEd Maste    DIALOG \
935e84b765SWarner Losh    DICT \
945e84b765SWarner Losh    DMAGENT \
955e84b765SWarner Losh    DYNAMICROOT \
9679a86dafSEnji Cooper    EE \
97d49a5dddSWarner Losh    EFI \
9808474898SEd Maste    ELFTOOLCHAIN_BOOTSTRAP \
995e84b765SWarner Losh    EXAMPLES \
1005e84b765SWarner Losh    FDT \
101c7b6816fSEnji Cooper    FILE \
10211981695SEnji Cooper    FINGER \
1035e84b765SWarner Losh    FLOPPY \
1045e84b765SWarner Losh    FORTH \
1055e84b765SWarner Losh    FP_LIBC \
1065e84b765SWarner Losh    FREEBSD_UPDATE \
10711981695SEnji Cooper    FTP \
1085e84b765SWarner Losh    GAMES \
109252884aeSStefan Eßer    GH_BC \
11094ff3d03SEd Maste    GNU_DIFF \
111d679c719SKyle Evans    GOOGLETEST \
1125e84b765SWarner Losh    GPIO \
1134e395054SEnji Cooper    HAST \
1145e84b765SWarner Losh    HTML \
115983a395dSWarner Losh    HYPERV \
1165e84b765SWarner Losh    ICONV \
1175e84b765SWarner Losh    INET \
1185e84b765SWarner Losh    INET6 \
11911981695SEnji Cooper    INETD \
1205e84b765SWarner Losh    IPFILTER \
1215e84b765SWarner Losh    IPFW \
122b29d6977SEnji Cooper    ISCSI \
1235e84b765SWarner Losh    JAIL \
1245e84b765SWarner Losh    KDUMP \
1255e84b765SWarner Losh    KVM \
1265e84b765SWarner Losh    LDNS \
1275e84b765SWarner Losh    LDNS_UTILS \
1285e84b765SWarner Losh    LEGACY_CONSOLE \
12983a08b7cSEd Maste    LLD \
130a04ec978SBrandon Bergren    LLD_BOOTSTRAP \
131a04ec978SBrandon Bergren    LLD_IS_LD \
132147d7b56SKyle Evans    LLVM_ASSERTIONS \
1331b49115aSEd Maste    LLVM_COV \
1349fa94e1cSDimitry Andric    LLVM_CXXFILT \
13554095bf4SKyle Evans    LOADER_GELI \
1361a7ed7feSWarner Losh    LOADER_KBOOT \
1379d45c24cSWarner Losh    LOADER_LUA \
13854095bf4SKyle Evans    LOADER_OFW \
13954095bf4SKyle Evans    LOADER_UBOOT \
1405e84b765SWarner Losh    LOCALES \
1415e84b765SWarner Losh    LOCATE \
1425e84b765SWarner Losh    LPR \
1435e84b765SWarner Losh    LS_COLORS \
1445e84b765SWarner Losh    MAIL \
1455e84b765SWarner Losh    MAILWRAPPER \
1465e84b765SWarner Losh    MAKE \
147983a395dSWarner Losh    MLX5TOOL \
1485e84b765SWarner Losh    NDIS \
1495e84b765SWarner Losh    NETCAT \
1505e84b765SWarner Losh    NETGRAPH \
1515e84b765SWarner Losh    NLS_CATALOGS \
1525e84b765SWarner Losh    NS_CACHING \
1535e84b765SWarner Losh    NTP \
154983a395dSWarner Losh    NVME \
155be3bff32SKonstantin Belousov    OFED \
1565e84b765SWarner Losh    OPENSSL \
1575e84b765SWarner Losh    PAM \
1585e84b765SWarner Losh    PF \
1595e84b765SWarner Losh    PKGBOOTSTRAP \
1605e84b765SWarner Losh    PMC \
1615e84b765SWarner Losh    PORTSNAP \
1625e84b765SWarner Losh    PPP \
1635e84b765SWarner Losh    QUOTAS \
16431a741f4SEnji Cooper    RADIUS_SUPPORT \
16511981695SEnji Cooper    RBOOTD \
1665e84b765SWarner Losh    RESCUE \
1675e84b765SWarner Losh    ROUTED \
1685e84b765SWarner Losh    SENDMAIL \
1696f077571SSean Bruno    SERVICESDB \
1705e84b765SWarner Losh    SETUID_LOGIN \
1716ab18ea6SDimitry Andric    SHARED_TOOLCHAIN \
1725e84b765SWarner Losh    SHAREDOCS \
1735e84b765SWarner Losh    SOURCELESS \
1745e84b765SWarner Losh    SOURCELESS_HOST \
1755e84b765SWarner Losh    SOURCELESS_UCODE \
1761a13f2e6SEdward Tomasz Napierala    STATS \
1775e84b765SWarner Losh    SYSCONS \
178bf16c2e9SBryan Drewery    SYSTEM_COMPILER \
179a7d84af8SBryan Drewery    SYSTEM_LINKER \
1803f802165SEnji Cooper    TALK \
18111981695SEnji Cooper    TCP_WRAPPERS \
1825e84b765SWarner Losh    TCSH \
1835e84b765SWarner Losh    TELNET \
1845e84b765SWarner Losh    TEXTPROC \
18511981695SEnji Cooper    TFTP \
1865e84b765SWarner Losh    UNBOUND \
1875e84b765SWarner Losh    USB \
1885e84b765SWarner Losh    UTMPX \
1895e84b765SWarner Losh    VI \
190824a9093SEd Maste    VT \
1915e84b765SWarner Losh    WIRELESS \
1925e84b765SWarner Losh    WPA_SUPPLICANT_EAPOL \
1935e84b765SWarner Losh    ZFS \
194fbeb31a2SMatt Macy    LOADER_ZFS \
1955e84b765SWarner Losh    ZONEINFO
1965e84b765SWarner Losh
1975e84b765SWarner Losh__DEFAULT_NO_OPTIONS = \
198a92958dfSSimon J. Gerraty    BEARSSL \
199483d953aSJohn Baldwin    BHYVE_SNAPSHOT \
2005e84b765SWarner Losh    CLANG_EXTRAS \
2010a9ab9f5SConrad Meyer    CLANG_FORMAT \
202ddedf2a1SEdward Tomasz Napierala    DETECT_TZ_CHANGES \
203d912066cSMark Johnston    DTRACE_TESTS \
20443f75d57SBjoern A. Zeeb    EXPERIMENTAL \
2055e84b765SWarner Losh    HESIOD \
206c42ade60SWarner Losh    LIBSOFT \
207a179cd91SWarner Losh    LOADER_FIREWIRE \
208f871c5d9SWarner Losh    LOADER_VERBOSE \
209b0fefb25SMarcin Wojtas    LOADER_VERIEXEC_PASS_MANIFEST \
210021385abSAlex Richardson    LLVM_BINUTILS \
2117d4374f6SDimitry Andric    MALLOC_PRODUCTION \
212abbe7d5aSKonstantin Belousov    OFED_EXTRA \
2135e84b765SWarner Losh    OPENLDAP \
214a58383d2SJohn Baldwin    REPRODUCIBLE_BUILD \
215609b7b26SEnji Cooper    RPCBIND_WARMSTART_SUPPORT \
2165e84b765SWarner Losh    SORT_THREADS \
217c5cba060SEnji Cooper    ZONEINFO_LEAPSECONDS_SUPPORT \
2186120aabdSBryan Drewery
219100fafebSBryan Drewery# LEFT/RIGHT. Left options which default to "yes" unless their corresponding
220100fafebSBryan Drewery# RIGHT option is disabled.
221100fafebSBryan Drewery__DEFAULT_DEPENDENT_OPTIONS= \
222100fafebSBryan Drewery	CLANG_FULL/CLANG \
223e7e22476SAlex Richardson	LLVM_TARGET_ALL/CLANG \
224a92958dfSSimon J. Gerraty	LOADER_VERIEXEC/BEARSSL \
22513ea0450SMarcin Wojtas	LOADER_EFI_SECUREBOOT/LOADER_VERIEXEC \
226afc571b1SSimon J. Gerraty	LOADER_VERIEXEC_VECTX/LOADER_VERIEXEC \
227a92958dfSSimon J. Gerraty	VERIEXEC/BEARSSL \
228100fafebSBryan Drewery
229100fafebSBryan Drewery# MK_*_SUPPORT options which default to "yes" unless their corresponding
230100fafebSBryan Drewery# MK_* variable is set to "no".
231100fafebSBryan Drewery#
232100fafebSBryan Drewery.for var in \
233100fafebSBryan Drewery    BLACKLIST \
234100fafebSBryan Drewery    BZIP2 \
235100fafebSBryan Drewery    INET \
236100fafebSBryan Drewery    INET6 \
237100fafebSBryan Drewery    KERBEROS \
238100fafebSBryan Drewery    KVM \
239100fafebSBryan Drewery    NETGRAPH \
240100fafebSBryan Drewery    PAM \
241100fafebSBryan Drewery    TESTS \
242100fafebSBryan Drewery    WIRELESS
243100fafebSBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+= ${var}_SUPPORT/${var}
244100fafebSBryan Drewery.endfor
2455e84b765SWarner Losh
2465e84b765SWarner Losh#
2475e84b765SWarner Losh# Default behaviour of some options depends on the architecture.  Unfortunately
2485e84b765SWarner Losh# this means that we have to test TARGET_ARCH (the buildworld case) as well
2495e84b765SWarner Losh# as MACHINE_ARCH (the non-buildworld case).  Normally TARGET_ARCH is not
2505e84b765SWarner Losh# used at all in bsd.*.mk, but we have to make an exception here if we want
2515e84b765SWarner Losh# to allow defaults for some things like clang to vary by target architecture.
2525e84b765SWarner Losh# Additional, per-target behavior should be rarely added only after much
2535e84b765SWarner Losh# gnashing of teeth and grinding of gears.
2545e84b765SWarner Losh#
2555e84b765SWarner Losh.if defined(TARGET_ARCH)
2565e84b765SWarner Losh__T=${TARGET_ARCH}
2575e84b765SWarner Losh.else
2585e84b765SWarner Losh__T=${MACHINE_ARCH}
2595e84b765SWarner Losh.endif
2600104753bSDimitry Andric
261631e709fSBryan Drewery# All supported backends for LLVM_TARGET_XXX
262631e709fSBryan Drewery__LLVM_TARGETS= \
263631e709fSBryan Drewery		aarch64 \
264631e709fSBryan Drewery		arm \
265631e709fSBryan Drewery		powerpc \
266de9950e8SJohn Baldwin		riscv \
267631e709fSBryan Drewery		x86
268980bae69SWarner Losh__LLVM_TARGET_FILT=	C/(amd64|i386)/x86/:C/powerpc.*/powerpc/:C/armv[67]/arm/:C/riscv.*/riscv/:C/mips.*/mips/
2694e2a4490SBryan Drewery.for __llt in ${__LLVM_TARGETS}
27096aaefdfSBryan Drewery# Default enable the given TARGET's LLVM_TARGET support
271980bae69SWarner Losh.if ${__T:${__LLVM_TARGET_FILT}} == ${__llt}
27296aaefdfSBryan Drewery__DEFAULT_YES_OPTIONS+=	LLVM_TARGET_${__llt:${__LLVM_TARGET_FILT}:tu}
2734e2a4490SBryan Drewery# aarch64 needs arm for -m32 support.
274980bae69SWarner Losh.elif ${__T} == "aarch64" && ${__llt:Marm*} != ""
2754e2a4490SBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+=	LLVM_TARGET_ARM/LLVM_TARGET_AARCH64
27696aaefdfSBryan Drewery# Default the rest of the LLVM_TARGETs to the value of MK_LLVM_TARGET_ALL.
277631e709fSBryan Drewery.else
2784e2a4490SBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+=	LLVM_TARGET_${__llt:${__LLVM_TARGET_FILT}:tu}/LLVM_TARGET_ALL
279631e709fSBryan Drewery.endif
280631e709fSBryan Drewery.endfor
281631e709fSBryan Drewery
2824dbc7835SWarner Losh__DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF LLVM_TARGET_MIPS
28389edb881SDimitry Andric
2840104753bSDimitry Andric.include <bsd.compiler.mk>
2858758abd5SBryan Drewery
286056dd75bSEd Maste.if ${__T} == "aarch64" || ${__T} == "amd64" || ${__T} == "i386"
287dfccd92cSEd Maste__DEFAULT_YES_OPTIONS+=LLDB
288d0ba16f7SEd Maste.else
289dfccd92cSEd Maste__DEFAULT_NO_OPTIONS+=LLDB
290d0ba16f7SEd Maste.endif
291a4330302SBrooks Davis# LIB32 is supported on amd64, mips64, and powerpc64
29255c2583aSBrooks Davis.if (${__T} == "amd64" || ${__T:Mmips64*} || ${__T} == "powerpc64")
293a4330302SBrooks Davis__DEFAULT_YES_OPTIONS+=LIB32
294a4330302SBrooks Davis.else
295a4330302SBrooks DavisBROKEN_OPTIONS+=LIB32
296a4330302SBrooks Davis.endif
2970c095a65SEnji Cooper# Only doing soft float API stuff on armv6 and armv7
2980b972ac9SWarner Losh.if ${__T} != "armv6" && ${__T} != "armv7"
299c42ade60SWarner LoshBROKEN_OPTIONS+=LIBSOFT
300c42ade60SWarner Losh.endif
3013d79fdacSWarner Losh.if ${__T:Mmips*}
3026794d195SKyle Evans# GOOGLETEST cannot currently be compiled on mips due to external circumstances.
3036794d195SKyle Evans# Notably, the freebsd-gcc port isn't linking in libgcc so we end up trying ot
3046794d195SKyle Evans# link to a hidden symbol. LLVM would successfully link this in, but some of
3056794d195SKyle Evans# the mips variants are broken under LLVM until LLVM 10. GOOGLETEST should be
3066794d195SKyle Evans# marked no longer broken with the switch to LLVM.
3076794d195SKyle EvansBROKEN_OPTIONS+=GOOGLETEST SSP
3085bec6d55SRuslan Bukin.endif
3092192efc0SMitchell Horne# EFI doesn't exist on mips or powerpc.
3102192efc0SMitchell Horne.if ${__T:Mmips*} || ${__T:Mpowerpc*}
311f86dd996SWarner LoshBROKEN_OPTIONS+=EFI
312d49a5dddSWarner Losh.endif
31347e9f42eSWarner Losh# OFW is only for powerpc, exclude others
31447e9f42eSWarner Losh.if ${__T:Mpowerpc*} == ""
315f86dd996SWarner LoshBROKEN_OPTIONS+=LOADER_OFW
316f86dd996SWarner Losh.endif
3171a7ed7feSWarner Losh# KBOOT is only for powerpc64 (powerpc64le broken)
3181a7ed7feSWarner Losh.if ${__T} != "powerpc64"
3191a7ed7feSWarner LoshBROKEN_OPTIONS+=LOADER_KBOOT
3201a7ed7feSWarner Losh.endif
3219dc70af8SWarner Losh# UBOOT is only for arm, and big-endian powerpc
3229dc70af8SWarner Losh.if (${__T:Marm*} == "" && ${__T:Mpowerpc*} == "") || ${__T} == "powerpc64le"
323f86dd996SWarner LoshBROKEN_OPTIONS+=LOADER_UBOOT
324f86dd996SWarner Losh.endif
32547e9f42eSWarner Losh# GELI and Lua in loader currently cause boot failures on powerpc.
32649f1151fSNathan Whitehorn# Further debugging is required -- probably they are just broken on big
32749f1151fSNathan Whitehorn# endian systems generically (they jump to null pointers or try to read
32849f1151fSNathan Whitehorn# crazy high addresses, which is typical of endianness problems).
32947e9f42eSWarner Losh.if ${__T:Mpowerpc*}
330f54d801aSKurt LidlBROKEN_OPTIONS+=LOADER_GELI LOADER_LUA
331f54d801aSKurt Lidl.endif
332f86dd996SWarner Losh
333e6b7809cSAllan Jude# Kernel TLS is enabled by default on amd64 and aarch64
334e6b7809cSAllan Jude.if ${__T} == "aarch64" || ${__T} == "amd64"
335aa906e2aSJohn Baldwin__DEFAULT_YES_OPTIONS+=OPENSSL_KTLS
336aa906e2aSJohn Baldwin.else
337aa906e2aSJohn Baldwin__DEFAULT_NO_OPTIONS+=OPENSSL_KTLS
338aa906e2aSJohn Baldwin.endif
339aa906e2aSJohn Baldwin
3402427dc7dSEd Maste.if ${__T:Mmips64*}
3412427dc7dSEd Maste# profiling won't work on MIPS64 because there is only assembly for o32
3422427dc7dSEd MasteBROKEN_OPTIONS+=PROFILE
3432427dc7dSEd Maste.endif
344983a395dSWarner Losh.if ${__T} != "aarch64" && ${__T} != "amd64" && ${__T} != "i386" && \
34547e9f42eSWarner Losh    ${__T} != "powerpc64"
346983a395dSWarner LoshBROKEN_OPTIONS+=CXGBETOOL
347983a395dSWarner LoshBROKEN_OPTIONS+=MLX5TOOL
34854912308SNavdeep Parhar.endif
34954912308SNavdeep Parhar
3505b87c94aSBrooks Davis# HyperV is currently x86-only
351983a395dSWarner Losh.if ${__T} != "amd64" && ${__T} != "i386"
352983a395dSWarner LoshBROKEN_OPTIONS+=HYPERV
3535b87c94aSBrooks Davis.endif
3545b87c94aSBrooks Davis
355b75abea4SBrandon Bergren# NVME is only aarch64, x86 and powerpc64*
3566b3555c3SDimitry Andric.if ${__T} != "aarch64" && ${__T} != "amd64" && ${__T} != "i386" && \
357b75abea4SBrandon Bergren    ${__T:Mpowerpc64*} == ""
358983a395dSWarner LoshBROKEN_OPTIONS+=NVME
359f0f8a1afSWarner Losh.endif
360f0f8a1afSWarner Losh
3612a5220e1SDimitry Andric.if ${__T} == "aarch64" || ${__T} == "amd64" || ${__T} == "i386" || \
362aa033e0bSPiotr Kubaj    ${__T:Mpowerpc64*} != "" || ${__T:Mriscv64*} != ""
363b0840a28SDimitry Andric__DEFAULT_YES_OPTIONS+=OPENMP
364b0840a28SDimitry Andric.else
365b0840a28SDimitry Andric__DEFAULT_NO_OPTIONS+=OPENMP
366b0840a28SDimitry Andric.endif
367b0840a28SDimitry Andric
3685e84b765SWarner Losh.include <bsd.mkopt.mk>
3695e84b765SWarner Losh
3705e84b765SWarner Losh#
3715e84b765SWarner Losh# Force some options off if their dependencies are off.
3725e84b765SWarner Losh# Order is somewhat important.
3735e84b765SWarner Losh#
37458551dc6SBaptiste Daroussin.if ${MK_CAPSICUM} == "no"
37558551dc6SBaptiste DaroussinMK_CASPER:=	no
37658551dc6SBaptiste Daroussin.endif
37758551dc6SBaptiste Daroussin
3785e84b765SWarner Losh.if ${MK_SOURCELESS} == "no"
3795e84b765SWarner LoshMK_SOURCELESS_HOST:=	no
3805e84b765SWarner LoshMK_SOURCELESS_UCODE:= no
3815e84b765SWarner Losh.endif
3825e84b765SWarner Losh
3835e84b765SWarner Losh.if ${MK_CDDL} == "no"
3845e84b765SWarner LoshMK_ZFS:=	no
385fbeb31a2SMatt MacyMK_LOADER_ZFS:=	no
3865e84b765SWarner LoshMK_CTF:=	no
3875e84b765SWarner Losh.endif
3885e84b765SWarner Losh
3895e84b765SWarner Losh.if ${MK_CRYPT} == "no"
3905e84b765SWarner LoshMK_OPENSSL:=	no
3915e84b765SWarner LoshMK_OPENSSH:=	no
3925e84b765SWarner LoshMK_KERBEROS:=	no
3930ce9d0afSEd MasteMK_KERBEROS_SUPPORT:=	no
3945e84b765SWarner Losh.endif
3955e84b765SWarner Losh
3965e84b765SWarner Losh.if ${MK_CXX} == "no"
3975e84b765SWarner LoshMK_CLANG:=	no
3989ed13baaSEd MasteMK_GOOGLETEST:=	no
3990e1c8648SEd MasteMK_OFED:=	no
4000e1c8648SEd MasteMK_OPENMP:=	no
4010e1c8648SEd MasteMK_PMC:=	no
4028a9745b5SEd MasteMK_TESTS:=	no
4035e84b765SWarner Losh.endif
4045e84b765SWarner Losh
405f987297fSEd Maste.if ${MK_DIALOG} == "no"
406f987297fSEd MasteMK_BSDINSTALL:=	no
407f987297fSEd Maste.endif
408f987297fSEd Maste
4095e84b765SWarner Losh.if ${MK_MAIL} == "no"
4105e84b765SWarner LoshMK_MAILWRAPPER:= no
4115e84b765SWarner LoshMK_SENDMAIL:=	no
4125e84b765SWarner LoshMK_DMAGENT:=	no
4135e84b765SWarner Losh.endif
4145e84b765SWarner Losh
4155e84b765SWarner Losh.if ${MK_NETGRAPH} == "no"
4165e84b765SWarner LoshMK_ATM:=	no
4175e84b765SWarner LoshMK_BLUETOOTH:=	no
4185e84b765SWarner Losh.endif
4195e84b765SWarner Losh
420edb58145SEnji Cooper.if ${MK_NLS} == "no"
421edb58145SEnji CooperMK_NLS_CATALOGS:= no
422edb58145SEnji Cooper.endif
423edb58145SEnji Cooper
4245e84b765SWarner Losh.if ${MK_OPENSSL} == "no"
425df502accSEd MasteMK_DMAGENT:=	no
4265e84b765SWarner LoshMK_OPENSSH:=	no
4276940d0e4SEd MasteMK_OPENSSL_KTLS:=	no
4285e84b765SWarner LoshMK_KERBEROS:=	no
4290ce9d0afSEd MasteMK_KERBEROS_SUPPORT:=	no
43037516d3bSEd MasteMK_LDNS:=	no
4315ffef74bSEd MasteMK_PKGBOOTSTRAP:=	no
432e5cc1c47SMitchell HorneMK_ZFS:=	no
43337516d3bSEd Maste.endif
43437516d3bSEd Maste
43537516d3bSEd Maste.if ${MK_LDNS} == "no"
43637516d3bSEd MasteMK_LDNS_UTILS:=	no
43737516d3bSEd MasteMK_UNBOUND:= no
4385e84b765SWarner Losh.endif
4395e84b765SWarner Losh
4405e84b765SWarner Losh.if ${MK_PF} == "no"
4415e84b765SWarner LoshMK_AUTHPF:=	no
4425e84b765SWarner Losh.endif
4435e84b765SWarner Losh
444abbe7d5aSKonstantin Belousov.if ${MK_OFED} == "no"
445abbe7d5aSKonstantin BelousovMK_OFED_EXTRA:=	no
446abbe7d5aSKonstantin Belousov.endif
447abbe7d5aSKonstantin Belousov
448d912066cSMark Johnston.if ${MK_TESTS} == "no"
449d912066cSMark JohnstonMK_DTRACE_TESTS:= no
45006beea0eSEnji Cooper.endif
45106beea0eSEnji Cooper
45206beea0eSEnji Cooper.if ${MK_TESTS_SUPPORT} == "no"
45343e25f47SEnji CooperMK_GOOGLETEST:=	no
454d912066cSMark Johnston.endif
455d912066cSMark Johnston
456c5cba060SEnji Cooper.if ${MK_ZONEINFO} == "no"
457c5cba060SEnji CooperMK_ZONEINFO_LEAPSECONDS_SUPPORT:= no
458c5cba060SEnji Cooper.endif
459c5cba060SEnji Cooper
4605e84b765SWarner Losh.if ${MK_CROSS_COMPILER} == "no"
4615e84b765SWarner LoshMK_CLANG_BOOTSTRAP:= no
46208474898SEd MasteMK_ELFTOOLCHAIN_BOOTSTRAP:= no
46389257265SEd MasteMK_LLD_BOOTSTRAP:= no
4645e84b765SWarner Losh.endif
4655e84b765SWarner Losh
4665e84b765SWarner Losh.if ${MK_TOOLCHAIN} == "no"
4675e84b765SWarner LoshMK_CLANG:=	no
468590461a4SWarner LoshMK_INCLUDES:=	no
469e5928414SEd MasteMK_LLD:=	no
47011e49977SBryan DreweryMK_LLDB:=	no
471021385abSAlex RichardsonMK_LLVM_BINUTILS:=	no
4725e84b765SWarner Losh.endif
4735e84b765SWarner Losh
4745e84b765SWarner Losh.if ${MK_CLANG} == "no"
4755e84b765SWarner LoshMK_CLANG_EXTRAS:= no
4760a9ab9f5SConrad MeyerMK_CLANG_FORMAT:= no
4775e84b765SWarner LoshMK_CLANG_FULL:= no
4781b49115aSEd MasteMK_LLVM_COV:= no
4795e84b765SWarner Losh.endif
4805e84b765SWarner Losh
48124f58618SAlex Richardson.if ${MK_ASAN} == "yes"
48224f58618SAlex Richardson# In order to get sensible backtraces from ASAN we have to install
48324f58618SAlex Richardson# llvm-symbolizer as /usr/bin/addr2line instead of the elftoolchain version.
48424f58618SAlex RichardsonMK_LLVM_BINUTILS:=	yes
48524f58618SAlex Richardson.endif
48624f58618SAlex Richardson
487021385abSAlex Richardson.if ${MK_LLVM_BINUTILS} == "yes"
488021385abSAlex Richardson# MK_LLVM_CXXFILT is a subset of MK_LLVM_BINUTILS and should therefore be
489021385abSAlex Richardson# enabled if MK_LLVM_BINUTILS is set.
490021385abSAlex RichardsonMK_LLVM_CXXFILT:=	yes
491021385abSAlex Richardson.endif
492021385abSAlex Richardson
493b0fefb25SMarcin Wojtas.if ${MK_LOADER_VERIEXEC} == "no"
494b0fefb25SMarcin WojtasMK_LOADER_VERIEXEC_PASS_MANIFEST := no
495b0fefb25SMarcin Wojtas.endif
496b0fefb25SMarcin Wojtas
4975e84b765SWarner Losh#
4984301886dSEnji Cooper# MK_* options whose default value depends on another option.
4994301886dSEnji Cooper#
5004301886dSEnji Cooper.for vv in \
5014301886dSEnji Cooper    GSSAPI/KERBEROS \
5024301886dSEnji Cooper    MAN_UTILS/MAN
5034301886dSEnji Cooper.if defined(WITH_${vv:H})
5044301886dSEnji CooperMK_${vv:H}:=	yes
5054301886dSEnji Cooper.elif defined(WITHOUT_${vv:H})
5064301886dSEnji CooperMK_${vv:H}:=	no
5074301886dSEnji Cooper.else
5084301886dSEnji CooperMK_${vv:H}:=	${MK_${vv:T}}
5094301886dSEnji Cooper.endif
5104301886dSEnji Cooper.endfor
5114301886dSEnji Cooper
5124301886dSEnji Cooper#
5135e84b765SWarner Losh# Set defaults for the MK_*_SUPPORT variables.
5145e84b765SWarner Losh#
5155e84b765SWarner Losh
516ff2cf368SBaptiste Daroussin.endif #  !target(__<src.opts.mk>__)
517