xref: /freebsd/share/mk/src.opts.mk (revision 1cae7121c667d9caf205832cf45fd02af3157e6f)
15e84b765SWarner Losh#
2e0281204SWarner Losh# Option file for FreeBSD /usr/src builds, at least the userland and boot loader
3e0281204SWarner Losh# portions of the tree. These options generally chose what parts of the tree to
4e0281204SWarner Losh# include or omit and are FreeBSD source tree specific.
55e84b765SWarner Losh#
65e84b765SWarner Losh# Users define WITH_FOO and WITHOUT_FOO on the command line or in /etc/src.conf
75e84b765SWarner Losh# and /etc/make.conf files. These translate in the build system to MK_FOO={yes,no}
85e84b765SWarner Losh# with sensible (usually) defaults.
95e84b765SWarner Losh#
105e84b765SWarner Losh# Makefiles must include bsd.opts.mk after defining specific MK_FOO options that
115e84b765SWarner Losh# are applicable for that Makefile (typically there are none, but sometimes there
125e84b765SWarner Losh# are exceptions). Recursive makes usually add MK_FOO=no for options that they wish
135e84b765SWarner Losh# to omit from that make.
145e84b765SWarner Losh#
151fc86460SWarner Losh# Makefiles must include bsd.mkopt.mk before they test the value of any MK_FOO
165e84b765SWarner Losh# variable.
175e84b765SWarner Losh#
18c6063d0dSWarner Losh# Makefiles may also assume that this file is included by src.opts.mk should it
195e84b765SWarner Losh# need variables defined there prior to the end of the Makefile where
205e84b765SWarner Losh# bsd.{subdir,lib.bin}.mk is traditionally included.
215e84b765SWarner Losh#
225e84b765SWarner Losh# The old-style YES_FOO and NO_FOO are being phased out. No new instances of them
235e84b765SWarner Losh# should be added. Old instances should be removed since they were just to
245e84b765SWarner Losh# bridge the gap between FreeBSD 4 and FreeBSD 5.
255e84b765SWarner Losh#
265e84b765SWarner Losh# Makefiles should never test WITH_FOO or WITHOUT_FOO directly (although an
275e84b765SWarner Losh# exception is made for _WITHOUT_SRCONF which turns off this mechanism
2822cac754SWarner Losh# completely inside bsd.*.mk files).
295e84b765SWarner Losh#
305e84b765SWarner Losh
315e84b765SWarner Losh.if !target(__<src.opts.mk>__)
325e84b765SWarner Losh__<src.opts.mk>__:
335e84b765SWarner Losh
34f9798cc7SWarner Losh.include <bsd.own.mk>
35f9798cc7SWarner Losh
365e84b765SWarner Losh#
375e84b765SWarner Losh# Define MK_* variables (which are either "yes" or "no") for users
385e84b765SWarner Losh# to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the
395e84b765SWarner Losh# make(1) environment.
405e84b765SWarner Losh# These should be tested with `== "no"' or `!= "no"' in makefiles.
415e84b765SWarner Losh# The NO_* variables should only be set by makefiles for variables
425e84b765SWarner Losh# that haven't been converted over.
435e84b765SWarner Losh#
445e84b765SWarner Losh
45c1593b9eSWarner Losh# These options are used by the src builds. Those listed in
46c1593b9eSWarner Losh# __DEFAULT_YES_OPTIONS default to 'yes' and will build unless turned
47c1593b9eSWarner Losh# off.  __DEFAULT_NO_OPTIONS will default to 'no' and won't build
48c1593b9eSWarner Losh# unless turned on. Any options listed in 'BROKEN_OPTIONS' will be
49c1593b9eSWarner Losh# hard-wired to 'no'.  "Broken" here means not working or
50c1593b9eSWarner Losh# not-appropriate and/or not supported. It doesn't imply something is
51c1593b9eSWarner Losh# wrong with the code. There's not a single good word for this, so
52c1593b9eSWarner Losh# BROKEN was selected as the least imperfect one considered at the
53c1593b9eSWarner Losh# time. Options are added to BROKEN_OPTIONS list on a per-arch basis.
54c1593b9eSWarner Losh# At this time, there's no provision for mutually incompatible options.
55b908f6c4SColin Percival# Options listed in 'REQUIRED_OPTIONS' will be hard-wired to 'yes'; this
56b908f6c4SColin Percival# is intended as a transitional measure while options are in the process
57b908f6c4SColin Percival# of being removed.
585e84b765SWarner Losh
595e84b765SWarner Losh__DEFAULT_YES_OPTIONS = \
605e84b765SWarner Losh    ACCT \
615e84b765SWarner Losh    ACPI \
625e84b765SWarner Losh    APM \
635e84b765SWarner Losh    AT \
645e84b765SWarner Losh    AUDIT \
655e84b765SWarner Losh    AUTHPF \
66b3590423SEnji Cooper    AUTOFS \
6702629e46SEnji Cooper    BHYVE \
6895856e14SKurt Lidl    BLACKLIST \
695e84b765SWarner Losh    BLUETOOTH \
705e84b765SWarner Losh    BOOT \
7111981695SEnji Cooper    BOOTPARAMD \
7211981695SEnji Cooper    BOOTPD \
735e84b765SWarner Losh    BSD_CPIO \
74e45b569cSEnji Cooper    BSDINSTALL \
755e84b765SWarner Losh    BSNMP \
765e84b765SWarner Losh    BZIP2 \
775e84b765SWarner Losh    CALENDAR \
78f27f39dbSKyle Evans    CAROOT \
7918cc3172SEnji Cooper    CCD \
805e84b765SWarner Losh    CDDL \
8183a08b7cSEd Maste    CLANG \
824a4c9a0fSAlex Richardson    CLANG_BOOTSTRAP \
835e84b765SWarner Losh    CPP \
845e84b765SWarner Losh    CROSS_COMPILER \
855e84b765SWarner Losh    CRYPT \
8636716419SHans Petter Selasky    CUSE \
87983a395dSWarner Losh    CXGBETOOL \
885e84b765SWarner Losh    DICT \
895e84b765SWarner Losh    DMAGENT \
903bf66365SBrooks Davis    DTRACE \
915e84b765SWarner Losh    DYNAMICROOT \
9279a86dafSEnji Cooper    EE \
93d49a5dddSWarner Losh    EFI \
9408474898SEd Maste    ELFTOOLCHAIN_BOOTSTRAP \
955e84b765SWarner Losh    EXAMPLES \
96c7b6816fSEnji Cooper    FILE \
9711981695SEnji Cooper    FINGER \
985e84b765SWarner Losh    FLOPPY \
995e84b765SWarner Losh    FORTH \
1005e84b765SWarner Losh    FP_LIBC \
1015e84b765SWarner Losh    FREEBSD_UPDATE \
10211981695SEnji Cooper    FTP \
1035e84b765SWarner Losh    GAMES \
10494ff3d03SEd Maste    GNU_DIFF \
105d679c719SKyle Evans    GOOGLETEST \
1065e84b765SWarner Losh    GPIO \
1074e395054SEnji Cooper    HAST \
1085e84b765SWarner Losh    HTML \
109983a395dSWarner Losh    HYPERV \
1105e84b765SWarner Losh    ICONV \
1115e84b765SWarner Losh    INET \
1125e84b765SWarner Losh    INET6 \
11311981695SEnji Cooper    INETD \
1145e84b765SWarner Losh    IPFILTER \
1155e84b765SWarner Losh    IPFW \
116b29d6977SEnji Cooper    ISCSI \
1175e84b765SWarner Losh    JAIL \
118eade2001SKonstantin Belousov    JEMALLOC_LG_VADDR_WIDE \
1195e84b765SWarner Losh    KDUMP \
1205e84b765SWarner Losh    KVM \
1215e84b765SWarner Losh    LDNS \
1225e84b765SWarner Losh    LDNS_UTILS \
1235e84b765SWarner Losh    LEGACY_CONSOLE \
12483a08b7cSEd Maste    LLD \
125a04ec978SBrandon Bergren    LLD_BOOTSTRAP \
126147d7b56SKyle Evans    LLVM_ASSERTIONS \
127*1cae7121SEd Maste    LLVM_BINUTILS \
1281b49115aSEd Maste    LLVM_COV \
1299fa94e1cSDimitry Andric    LLVM_CXXFILT \
13023dee252SWarner Losh    LOADER_BIOS_TEXTONLY \
13154095bf4SKyle Evans    LOADER_GELI \
1321a7ed7feSWarner Losh    LOADER_KBOOT \
1339d45c24cSWarner Losh    LOADER_LUA \
13454095bf4SKyle Evans    LOADER_OFW \
13520d35d58SWarner Losh    LOADER_PXEBOOT \
13654095bf4SKyle Evans    LOADER_UBOOT \
137fe3f792fSAhmad Khalifa    LOADER_IA32 \
1385e84b765SWarner Losh    LOCALES \
1395e84b765SWarner Losh    LOCATE \
1405e84b765SWarner Losh    LPR \
1415e84b765SWarner Losh    LS_COLORS \
14220adba8bSGleb Popov    MACHDEP_OPTIMIZATIONS \
1435e84b765SWarner Losh    MAIL \
1445e84b765SWarner Losh    MAILWRAPPER \
1455e84b765SWarner Losh    MAKE \
146983a395dSWarner Losh    MLX5TOOL \
1475e84b765SWarner Losh    NETCAT \
1485e84b765SWarner Losh    NETGRAPH \
149cb1fc924SBaptiste Daroussin    NETLINK \
1504f6a5e1dSAlexander V. Chernikov    NETLINK_SUPPORT \
1515e84b765SWarner Losh    NLS_CATALOGS \
1525e84b765SWarner Losh    NS_CACHING \
1535e84b765SWarner Losh    NTP \
154a42d6f76SBaptiste Daroussin    NUAGEINIT \
155be3bff32SKonstantin Belousov    OFED \
1565e84b765SWarner Losh    OPENSSL \
1575e84b765SWarner Losh    PAM \
1585e84b765SWarner Losh    PF \
1595e84b765SWarner Losh    PKGBOOTSTRAP \
1605e84b765SWarner Losh    PMC \
1615e84b765SWarner Losh    PPP \
162642cd511SGreg Becker    PTHREADS_ASSERTIONS \
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 \
1715e84b765SWarner Losh    SHAREDOCS \
1725e84b765SWarner Losh    SOURCELESS \
1735e84b765SWarner Losh    SOURCELESS_HOST \
1745e84b765SWarner Losh    SOURCELESS_UCODE \
1751a13f2e6SEdward Tomasz Napierala    STATS \
1765e84b765SWarner Losh    SYSCONS \
177bf16c2e9SBryan Drewery    SYSTEM_COMPILER \
178a7d84af8SBryan Drewery    SYSTEM_LINKER \
1793f802165SEnji Cooper    TALK \
18011981695SEnji Cooper    TCP_WRAPPERS \
1815e84b765SWarner Losh    TCSH \
1825e84b765SWarner Losh    TELNET \
1835e84b765SWarner Losh    TEXTPROC \
18411981695SEnji Cooper    TFTP \
1855e84b765SWarner Losh    UNBOUND \
1865e84b765SWarner Losh    USB \
1875e84b765SWarner Losh    UTMPX \
1885e84b765SWarner Losh    VI \
189824a9093SEd Maste    VT \
1905e84b765SWarner Losh    WIRELESS \
1915e84b765SWarner Losh    WPA_SUPPLICANT_EAPOL \
1925e84b765SWarner Losh    ZFS \
19324affdedSMark Johnston    ZFS_TESTS \
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 \
202ba373fcaSEd Maste    CLEAN \
20338981026SBaptiste Daroussin    DIALOG \
204ddedf2a1SEdward Tomasz Napierala    DETECT_TZ_CHANGES \
2059e914c7aSJessica Clarke    DISK_IMAGE_TOOLS_BOOTSTRAP \
2066de02228SDomagoj Stolfa    DTRACE_ASAN \
207d912066cSMark Johnston    DTRACE_TESTS \
20843f75d57SBjoern A. Zeeb    EXPERIMENTAL \
2095e84b765SWarner Losh    HESIOD \
210f871c5d9SWarner Losh    LOADER_VERBOSE \
211b0fefb25SMarcin Wojtas    LOADER_VERIEXEC_PASS_MANIFEST \
21273ff7384SDimitry Andric    LLVM_FULL_DEBUGINFO \
2137d4374f6SDimitry Andric    MALLOC_PRODUCTION \
214abbe7d5aSKonstantin Belousov    OFED_EXTRA \
2155e84b765SWarner Losh    OPENLDAP \
216a58383d2SJohn Baldwin    REPRODUCIBLE_BUILD \
217609b7b26SEnji Cooper    RPCBIND_WARMSTART_SUPPORT \
2185e84b765SWarner Losh    SORT_THREADS \
219c5cba060SEnji Cooper    ZONEINFO_LEAPSECONDS_SUPPORT \
2206120aabdSBryan Drewery
221b908f6c4SColin Percival__REQUIRED_OPTIONS = \
222c24c117bSColin Percival    CASPER
223b908f6c4SColin Percival
224100fafebSBryan Drewery# LEFT/RIGHT. Left options which default to "yes" unless their corresponding
225100fafebSBryan Drewery# RIGHT option is disabled.
226100fafebSBryan Drewery__DEFAULT_DEPENDENT_OPTIONS= \
227100fafebSBryan Drewery	CLANG_FULL/CLANG \
228e7e22476SAlex Richardson	LLVM_TARGET_ALL/CLANG \
229a92958dfSSimon J. Gerraty	LOADER_VERIEXEC/BEARSSL \
23013ea0450SMarcin Wojtas	LOADER_EFI_SECUREBOOT/LOADER_VERIEXEC \
231afc571b1SSimon J. Gerraty	LOADER_VERIEXEC_VECTX/LOADER_VERIEXEC \
232a92958dfSSimon J. Gerraty	VERIEXEC/BEARSSL \
233100fafebSBryan Drewery
23409e32b2fSBrooks Davis__SINGLE_OPTIONS = \
23509e32b2fSBrooks Davis	LIBC_MALLOC
23609e32b2fSBrooks Davis
23709e32b2fSBrooks Davis__LIBC_MALLOC_OPTIONS=	jemalloc
23809e32b2fSBrooks Davis__LIBC_MALLOC_DEFAULT=	jemalloc
23909e32b2fSBrooks Davis
240100fafebSBryan Drewery# MK_*_SUPPORT options which default to "yes" unless their corresponding
241100fafebSBryan Drewery# MK_* variable is set to "no".
242100fafebSBryan Drewery#
243100fafebSBryan Drewery.for var in \
244100fafebSBryan Drewery    BLACKLIST \
245100fafebSBryan Drewery    BZIP2 \
246100fafebSBryan Drewery    INET \
247100fafebSBryan Drewery    INET6 \
248100fafebSBryan Drewery    KERBEROS \
249100fafebSBryan Drewery    KVM \
250100fafebSBryan Drewery    NETGRAPH \
251100fafebSBryan Drewery    PAM \
252100fafebSBryan Drewery    TESTS \
253100fafebSBryan Drewery    WIRELESS
254100fafebSBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+= ${var}_SUPPORT/${var}
255100fafebSBryan Drewery.endfor
2565e84b765SWarner Losh
2575e84b765SWarner Losh#
2585e84b765SWarner Losh# Default behaviour of some options depends on the architecture.  Unfortunately
2595e84b765SWarner Losh# this means that we have to test TARGET_ARCH (the buildworld case) as well
2605e84b765SWarner Losh# as MACHINE_ARCH (the non-buildworld case).  Normally TARGET_ARCH is not
2615e84b765SWarner Losh# used at all in bsd.*.mk, but we have to make an exception here if we want
2625e84b765SWarner Losh# to allow defaults for some things like clang to vary by target architecture.
2635e84b765SWarner Losh# Additional, per-target behavior should be rarely added only after much
2645e84b765SWarner Losh# gnashing of teeth and grinding of gears.
2655e84b765SWarner Losh#
2665e84b765SWarner Losh.if defined(TARGET_ARCH)
2675e84b765SWarner Losh__T=${TARGET_ARCH}
2685e84b765SWarner Losh.else
2695e84b765SWarner Losh__T=${MACHINE_ARCH}
2705e84b765SWarner Losh.endif
2710104753bSDimitry Andric
272631e709fSBryan Drewery# All supported backends for LLVM_TARGET_XXX
273631e709fSBryan Drewery__LLVM_TARGETS= \
274631e709fSBryan Drewery		aarch64 \
275631e709fSBryan Drewery		arm \
276631e709fSBryan Drewery		powerpc \
277de9950e8SJohn Baldwin		riscv \
278631e709fSBryan Drewery		x86
279eeedaefaSJohn Baldwin__LLVM_TARGET_FILT=	C/(amd64|i386)/x86/:C/powerpc.*/powerpc/:C/armv[67]/arm/:C/riscv.*/riscv/
2804e2a4490SBryan Drewery.for __llt in ${__LLVM_TARGETS}
28196aaefdfSBryan Drewery# Default enable the given TARGET's LLVM_TARGET support
282980bae69SWarner Losh.if ${__T:${__LLVM_TARGET_FILT}} == ${__llt}
28396aaefdfSBryan Drewery__DEFAULT_YES_OPTIONS+=	LLVM_TARGET_${__llt:${__LLVM_TARGET_FILT}:tu}
2844e2a4490SBryan Drewery# aarch64 needs arm for -m32 support.
285980bae69SWarner Losh.elif ${__T} == "aarch64" && ${__llt:Marm*} != ""
2864e2a4490SBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+=	LLVM_TARGET_ARM/LLVM_TARGET_AARCH64
28796aaefdfSBryan Drewery# Default the rest of the LLVM_TARGETs to the value of MK_LLVM_TARGET_ALL.
288631e709fSBryan Drewery.else
2894e2a4490SBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+=	LLVM_TARGET_${__llt:${__LLVM_TARGET_FILT}:tu}/LLVM_TARGET_ALL
290631e709fSBryan Drewery.endif
291631e709fSBryan Drewery.endfor
292631e709fSBryan Drewery
2934dbc7835SWarner Losh__DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF LLVM_TARGET_MIPS
29489edb881SDimitry Andric
2950104753bSDimitry Andric.include <bsd.compiler.mk>
2968758abd5SBryan Drewery
2977661a2abSEd Maste.if ${__T} == "i386" || ${__T} == "amd64"
2987661a2abSEd Maste__DEFAULT_NO_OPTIONS += FDT
2997661a2abSEd Maste.else
3007661a2abSEd Maste__DEFAULT_YES_OPTIONS += FDT
3017661a2abSEd Maste.endif
3027661a2abSEd Maste
3038dc42f98SEd Maste.if ${__T:Marm*} == "" && ${__T:Mriscv64*} == ""
304dfccd92cSEd Maste__DEFAULT_YES_OPTIONS+=LLDB
305d0ba16f7SEd Maste.else
306dfccd92cSEd Maste__DEFAULT_NO_OPTIONS+=LLDB
307d0ba16f7SEd Maste.endif
308a1b67573SMike Karels# LIB32 is not supported on all 64-bit architectures.
30916d8dfdeSBrooks Davis.if (${__T:Maarch64*} != "" && ((defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} != "gcc") || (!defined(X_COMPILER_TYPE) && ${COMPILER_TYPE} != "gcc"))) || ${__T} == "amd64" || ${__T} == "powerpc64"
310a4330302SBrooks Davis__DEFAULT_YES_OPTIONS+=LIB32
311a4330302SBrooks Davis.else
312a4330302SBrooks DavisBROKEN_OPTIONS+=LIB32
313a4330302SBrooks Davis.endif
314ad9d10a8SWarner Losh# EFI doesn't exist on powerpc (well, officially) and doesn't work on i386
315ad9d10a8SWarner Losh.if ${__T:Mpowerpc*} || ${__T} == "i386"
316f86dd996SWarner LoshBROKEN_OPTIONS+=EFI
317d49a5dddSWarner Losh.endif
318dcb621efSWarner Losh# Bad coupling for libsecure stuff with bearssl and efi, so broken on EFI
319dcb621efSWarner Losh.if ${__T:Mpowerpc*}
320dcb621efSWarner LoshBROKEN_OPTIONS+=BEARSSL		# bearssl brings in secure efi stuff xxx
3210da51f1fSWarner Losh.endif
32247e9f42eSWarner Losh# OFW is only for powerpc, exclude others
32347e9f42eSWarner Losh.if ${__T:Mpowerpc*} == ""
324f86dd996SWarner LoshBROKEN_OPTIONS+=LOADER_OFW
325f86dd996SWarner Losh.endif
32646010641SWarner Losh# KBOOT is only for powerpc64 (powerpc64le broken) amd64 and aarch64
32746010641SWarner Losh.if ${__T} != "powerpc64" && ${__T} != "amd64" && ${__T} != "aarch64"
3281a7ed7feSWarner LoshBROKEN_OPTIONS+=LOADER_KBOOT
3291a7ed7feSWarner Losh.endif
3309dc70af8SWarner Losh# UBOOT is only for arm, and big-endian powerpc
3319dc70af8SWarner Losh.if (${__T:Marm*} == "" && ${__T:Mpowerpc*} == "") || ${__T} == "powerpc64le"
332f86dd996SWarner LoshBROKEN_OPTIONS+=LOADER_UBOOT
333f86dd996SWarner Losh.endif
334fe3f792fSAhmad Khalifa# The 32-bit UEFI loader is only for amd64
335fe3f792fSAhmad Khalifa.if ${__T} != "amd64"
336fe3f792fSAhmad KhalifaBROKEN_OPTIONS+=LOADER_IA32
337fe3f792fSAhmad Khalifa.endif
33847e9f42eSWarner Losh# GELI and Lua in loader currently cause boot failures on powerpc.
33949f1151fSNathan Whitehorn# Further debugging is required -- probably they are just broken on big
34049f1151fSNathan Whitehorn# endian systems generically (they jump to null pointers or try to read
34149f1151fSNathan Whitehorn# crazy high addresses, which is typical of endianness problems).
34247e9f42eSWarner Losh.if ${__T:Mpowerpc*}
343f54d801aSKurt LidlBROKEN_OPTIONS+=LOADER_GELI LOADER_LUA
344f54d801aSKurt Lidl.endif
345f86dd996SWarner Losh
346e552cac3SPiotr Kubaj# Kernel TLS is enabled by default on amd64, aarch64 and powerpc64*
347e552cac3SPiotr Kubaj.if ${__T} == "aarch64" || ${__T} == "amd64" || ${__T:Mpowerpc64*} != ""
348aa906e2aSJohn Baldwin__DEFAULT_YES_OPTIONS+=OPENSSL_KTLS
349aa906e2aSJohn Baldwin.else
350aa906e2aSJohn Baldwin__DEFAULT_NO_OPTIONS+=OPENSSL_KTLS
351aa906e2aSJohn Baldwin.endif
352aa906e2aSJohn Baldwin
353983a395dSWarner Losh.if ${__T} != "aarch64" && ${__T} != "amd64" && ${__T} != "i386" && \
354d68224c2SPiotr Kubaj    ${__T:Mpowerpc64*} == ""
355983a395dSWarner LoshBROKEN_OPTIONS+=CXGBETOOL
356983a395dSWarner LoshBROKEN_OPTIONS+=MLX5TOOL
35754912308SNavdeep Parhar.endif
35854912308SNavdeep Parhar
3599729f076SSouradeep Chakrabarti.if ${__T} != "amd64" && ${__T} != "i386" && ${__T} != "aarch64"
360983a395dSWarner LoshBROKEN_OPTIONS+=HYPERV
3615b87c94aSBrooks Davis.endif
3625b87c94aSBrooks Davis
3632a5220e1SDimitry Andric.if ${__T} == "aarch64" || ${__T} == "amd64" || ${__T} == "i386" || \
364aa033e0bSPiotr Kubaj    ${__T:Mpowerpc64*} != "" || ${__T:Mriscv64*} != ""
365b0840a28SDimitry Andric__DEFAULT_YES_OPTIONS+=OPENMP
366b0840a28SDimitry Andric.else
367b0840a28SDimitry Andric__DEFAULT_NO_OPTIONS+=OPENMP
368b0840a28SDimitry Andric.endif
369b0840a28SDimitry Andric
37041cf798eSWarner Losh# Broken on 32-bit arm, kernel module compile errors
371fe0f6950SJohn Baldwin.if ${__T:Marm*} != ""
3727661a2abSEd MasteBROKEN_OPTIONS+= OFED
3737661a2abSEd Maste.endif
3747661a2abSEd Maste
375976ba7f0SSimon J. Gerraty# MK_host_egacy is set by local.sys.mk so is valid here
376f9df6097SSimon J. Gerraty.if ${MACHINE:Nhost*} == "" && ${MK_host_egacy} == "yes"
377976ba7f0SSimon J. Gerraty# we cannot expect tests to work
378976ba7f0SSimon J. GerratyBROKEN_OPTIONS+= TESTS
379976ba7f0SSimon J. Gerraty.endif
380976ba7f0SSimon J. Gerraty
381c4c981c1SSimon J. Gerraty.-include <site.src.opts.mk>
382c4c981c1SSimon J. Gerraty
3835e84b765SWarner Losh.include <bsd.mkopt.mk>
3845e84b765SWarner Losh
3855e84b765SWarner Losh#
3865e84b765SWarner Losh# Force some options off if their dependencies are off.
3875e84b765SWarner Losh# Order is somewhat important.
3885e84b765SWarner Losh#
3895e84b765SWarner Losh.if ${MK_SOURCELESS} == "no"
3905e84b765SWarner LoshMK_SOURCELESS_HOST:=	no
3915e84b765SWarner LoshMK_SOURCELESS_UCODE:= no
3925e84b765SWarner Losh.endif
3935e84b765SWarner Losh
3945e84b765SWarner Losh.if ${MK_CDDL} == "no"
3955e84b765SWarner LoshMK_CTF:=	no
3963bf66365SBrooks DavisMK_DTRACE:=	no
3973bf66365SBrooks DavisMK_LOADER_ZFS:=	no
3983bf66365SBrooks DavisMK_ZFS:=	no
3995e84b765SWarner Losh.endif
4005e84b765SWarner Losh
4015e84b765SWarner Losh.if ${MK_CRYPT} == "no"
4025e84b765SWarner LoshMK_OPENSSL:=	no
4035e84b765SWarner LoshMK_OPENSSH:=	no
4045e84b765SWarner LoshMK_KERBEROS:=	no
4050ce9d0afSEd MasteMK_KERBEROS_SUPPORT:=	no
4065e84b765SWarner Losh.endif
4075e84b765SWarner Losh
4083bf66365SBrooks Davis.if ${MK_DTRACE} == "no"
4093bf66365SBrooks DavisMK_CTF:=	no
4103bf66365SBrooks Davis.endif
4113bf66365SBrooks Davis
4125e84b765SWarner Losh.if ${MK_MAIL} == "no"
4135e84b765SWarner LoshMK_MAILWRAPPER:= no
4145e84b765SWarner LoshMK_SENDMAIL:=	no
4155e84b765SWarner LoshMK_DMAGENT:=	no
4165e84b765SWarner Losh.endif
4175e84b765SWarner Losh
4185e84b765SWarner Losh.if ${MK_NETGRAPH} == "no"
4195e84b765SWarner LoshMK_BLUETOOTH:=	no
4205e84b765SWarner Losh.endif
4215e84b765SWarner Losh
422edb58145SEnji Cooper.if ${MK_NLS} == "no"
423edb58145SEnji CooperMK_NLS_CATALOGS:= no
424edb58145SEnji Cooper.endif
425edb58145SEnji Cooper
4265e84b765SWarner Losh.if ${MK_OPENSSL} == "no"
427df502accSEd MasteMK_DMAGENT:=	no
4285e84b765SWarner LoshMK_OPENSSH:=	no
4296940d0e4SEd MasteMK_OPENSSL_KTLS:=	no
4305e84b765SWarner LoshMK_KERBEROS:=	no
4310ce9d0afSEd MasteMK_KERBEROS_SUPPORT:=	no
43237516d3bSEd MasteMK_LDNS:=	no
4335ffef74bSEd MasteMK_PKGBOOTSTRAP:=	no
4349503d270SWarner LoshMK_LOADER_ZFS:=	no
435e5cc1c47SMitchell HorneMK_ZFS:=	no
43637516d3bSEd Maste.endif
43737516d3bSEd Maste
43837516d3bSEd Maste.if ${MK_LDNS} == "no"
43937516d3bSEd MasteMK_LDNS_UTILS:=	no
44037516d3bSEd MasteMK_UNBOUND:= no
4415e84b765SWarner Losh.endif
4425e84b765SWarner Losh
4435e84b765SWarner Losh.if ${MK_PF} == "no"
4445e84b765SWarner LoshMK_AUTHPF:=	no
4455e84b765SWarner Losh.endif
4465e84b765SWarner Losh
447abbe7d5aSKonstantin Belousov.if ${MK_OFED} == "no"
448abbe7d5aSKonstantin BelousovMK_OFED_EXTRA:=	no
449abbe7d5aSKonstantin Belousov.endif
450abbe7d5aSKonstantin Belousov
451d912066cSMark Johnston.if ${MK_TESTS} == "no"
452d912066cSMark JohnstonMK_DTRACE_TESTS:= no
45324affdedSMark JohnstonMK_ZFS_TESTS:= no
45424affdedSMark Johnston.endif
45524affdedSMark Johnston
45624affdedSMark Johnston.if ${MK_ZFS} == "no"
45724affdedSMark JohnstonMK_ZFS_TESTS:=	no
45806beea0eSEnji Cooper.endif
45906beea0eSEnji Cooper
46006beea0eSEnji Cooper.if ${MK_TESTS_SUPPORT} == "no"
46143e25f47SEnji CooperMK_GOOGLETEST:=	no
462d912066cSMark Johnston.endif
463d912066cSMark Johnston
464c5cba060SEnji Cooper.if ${MK_ZONEINFO} == "no"
465c5cba060SEnji CooperMK_ZONEINFO_LEAPSECONDS_SUPPORT:= no
466c5cba060SEnji Cooper.endif
467c5cba060SEnji Cooper
4685e84b765SWarner Losh.if ${MK_CROSS_COMPILER} == "no"
4695e84b765SWarner LoshMK_CLANG_BOOTSTRAP:= no
47008474898SEd MasteMK_ELFTOOLCHAIN_BOOTSTRAP:= no
47189257265SEd MasteMK_LLD_BOOTSTRAP:= no
4725e84b765SWarner Losh.endif
4735e84b765SWarner Losh
4745e84b765SWarner Losh.if ${MK_TOOLCHAIN} == "no"
4755e84b765SWarner LoshMK_CLANG:=	no
476e5928414SEd MasteMK_LLD:=	no
47711e49977SBryan DreweryMK_LLDB:=	no
478021385abSAlex RichardsonMK_LLVM_BINUTILS:=	no
4795e84b765SWarner Losh.endif
4805e84b765SWarner Losh
4815e84b765SWarner Losh.if ${MK_CLANG} == "no"
4825e84b765SWarner LoshMK_CLANG_EXTRAS:= no
4830a9ab9f5SConrad MeyerMK_CLANG_FORMAT:= no
4845e84b765SWarner LoshMK_CLANG_FULL:= no
4851b49115aSEd MasteMK_LLVM_COV:= no
4865e84b765SWarner Losh.endif
4875e84b765SWarner Losh
48824f58618SAlex Richardson.if ${MK_ASAN} == "yes"
48924f58618SAlex Richardson# In order to get sensible backtraces from ASAN we have to install
49024f58618SAlex Richardson# llvm-symbolizer as /usr/bin/addr2line instead of the elftoolchain version.
49124f58618SAlex RichardsonMK_LLVM_BINUTILS:=	yes
49224f58618SAlex Richardson.endif
49324f58618SAlex Richardson
494021385abSAlex Richardson.if ${MK_LLVM_BINUTILS} == "yes"
495021385abSAlex Richardson# MK_LLVM_CXXFILT is a subset of MK_LLVM_BINUTILS and should therefore be
496021385abSAlex Richardson# enabled if MK_LLVM_BINUTILS is set.
497021385abSAlex RichardsonMK_LLVM_CXXFILT:=	yes
498021385abSAlex Richardson.endif
499021385abSAlex Richardson
500b0fefb25SMarcin Wojtas.if ${MK_LOADER_VERIEXEC} == "no"
501b0fefb25SMarcin WojtasMK_LOADER_VERIEXEC_PASS_MANIFEST := no
502b0fefb25SMarcin Wojtas.endif
503b0fefb25SMarcin Wojtas
5045e84b765SWarner Losh#
5054301886dSEnji Cooper# MK_* options whose default value depends on another option.
5064301886dSEnji Cooper#
5074301886dSEnji Cooper.for vv in \
5084301886dSEnji Cooper    GSSAPI/KERBEROS \
5094301886dSEnji Cooper    MAN_UTILS/MAN
5104301886dSEnji Cooper.if defined(WITH_${vv:H})
5114301886dSEnji CooperMK_${vv:H}:=	yes
5124301886dSEnji Cooper.elif defined(WITHOUT_${vv:H})
5134301886dSEnji CooperMK_${vv:H}:=	no
5144301886dSEnji Cooper.else
5154301886dSEnji CooperMK_${vv:H}:=	${MK_${vv:T}}
5164301886dSEnji Cooper.endif
5174301886dSEnji Cooper.endfor
5184301886dSEnji Cooper
5194301886dSEnji Cooper#
5205e84b765SWarner Losh# Set defaults for the MK_*_SUPPORT variables.
5215e84b765SWarner Losh#
5225e84b765SWarner Losh
523ff2cf368SBaptiste Daroussin.endif #  !target(__<src.opts.mk>__)
524