xref: /freebsd/share/mk/src.opts.mk (revision 89edb881e6a45eccbf2940aa403c90a8560c46ac)
15e84b765SWarner Losh# $FreeBSD$
25e84b765SWarner Losh#
35e84b765SWarner Losh# Option file for FreeBSD /usr/src builds.
45e84b765SWarner Losh#
55e84b765SWarner Losh# Users define WITH_FOO and WITHOUT_FOO on the command line or in /etc/src.conf
65e84b765SWarner Losh# and /etc/make.conf files. These translate in the build system to MK_FOO={yes,no}
75e84b765SWarner Losh# with sensible (usually) defaults.
85e84b765SWarner Losh#
95e84b765SWarner Losh# Makefiles must include bsd.opts.mk after defining specific MK_FOO options that
105e84b765SWarner Losh# are applicable for that Makefile (typically there are none, but sometimes there
115e84b765SWarner Losh# are exceptions). Recursive makes usually add MK_FOO=no for options that they wish
125e84b765SWarner Losh# to omit from that make.
135e84b765SWarner Losh#
141fc86460SWarner Losh# Makefiles must include bsd.mkopt.mk before they test the value of any MK_FOO
155e84b765SWarner Losh# variable.
165e84b765SWarner Losh#
17c6063d0dSWarner Losh# Makefiles may also assume that this file is included by src.opts.mk should it
185e84b765SWarner Losh# need variables defined there prior to the end of the Makefile where
195e84b765SWarner Losh# bsd.{subdir,lib.bin}.mk is traditionally included.
205e84b765SWarner Losh#
215e84b765SWarner Losh# The old-style YES_FOO and NO_FOO are being phased out. No new instances of them
225e84b765SWarner Losh# should be added. Old instances should be removed since they were just to
235e84b765SWarner Losh# bridge the gap between FreeBSD 4 and FreeBSD 5.
245e84b765SWarner Losh#
255e84b765SWarner Losh# Makefiles should never test WITH_FOO or WITHOUT_FOO directly (although an
265e84b765SWarner Losh# exception is made for _WITHOUT_SRCONF which turns off this mechanism
2722cac754SWarner Losh# completely inside bsd.*.mk files).
285e84b765SWarner Losh#
295e84b765SWarner Losh
305e84b765SWarner Losh.if !target(__<src.opts.mk>__)
315e84b765SWarner Losh__<src.opts.mk>__:
325e84b765SWarner Losh
33f9798cc7SWarner Losh.include <bsd.own.mk>
34f9798cc7SWarner Losh
355e84b765SWarner Losh#
365e84b765SWarner Losh# Define MK_* variables (which are either "yes" or "no") for users
375e84b765SWarner Losh# to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the
385e84b765SWarner Losh# make(1) environment.
395e84b765SWarner Losh# These should be tested with `== "no"' or `!= "no"' in makefiles.
405e84b765SWarner Losh# The NO_* variables should only be set by makefiles for variables
415e84b765SWarner Losh# that haven't been converted over.
425e84b765SWarner Losh#
435e84b765SWarner Losh
44c1593b9eSWarner Losh# These options are used by the src builds. Those listed in
45c1593b9eSWarner Losh# __DEFAULT_YES_OPTIONS default to 'yes' and will build unless turned
46c1593b9eSWarner Losh# off.  __DEFAULT_NO_OPTIONS will default to 'no' and won't build
47c1593b9eSWarner Losh# unless turned on. Any options listed in 'BROKEN_OPTIONS' will be
48c1593b9eSWarner Losh# hard-wired to 'no'.  "Broken" here means not working or
49c1593b9eSWarner Losh# not-appropriate and/or not supported. It doesn't imply something is
50c1593b9eSWarner Losh# wrong with the code. There's not a single good word for this, so
51c1593b9eSWarner Losh# BROKEN was selected as the least imperfect one considered at the
52c1593b9eSWarner Losh# time. Options are added to BROKEN_OPTIONS list on a per-arch basis.
53c1593b9eSWarner Losh# At this time, there's no provision for mutually incompatible options.
545e84b765SWarner Losh
555e84b765SWarner Losh__DEFAULT_YES_OPTIONS = \
565e84b765SWarner Losh    ACCT \
575e84b765SWarner Losh    ACPI \
585e84b765SWarner Losh    AMD \
595e84b765SWarner Losh    APM \
605e84b765SWarner Losh    AT \
615e84b765SWarner Losh    ATM \
625e84b765SWarner Losh    AUDIT \
635e84b765SWarner Losh    AUTHPF \
64b3590423SEnji Cooper    AUTOFS \
6502629e46SEnji Cooper    BHYVE \
665e84b765SWarner Losh    BINUTILS \
675e84b765SWarner Losh    BINUTILS_BOOTSTRAP \
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 \
785e84b765SWarner Losh    CAPSICUM \
795e84b765SWarner Losh    CASPER \
8018cc3172SEnji Cooper    CCD \
815e84b765SWarner Losh    CDDL \
825e84b765SWarner Losh    CPP \
835e84b765SWarner Losh    CROSS_COMPILER \
845e84b765SWarner Losh    CRYPT \
855e84b765SWarner Losh    CTM \
8636716419SHans Petter Selasky    CUSE \
875e84b765SWarner Losh    CXX \
88f987297fSEd Maste    DIALOG \
895e84b765SWarner Losh    DICT \
905e84b765SWarner Losh    DMAGENT \
915e84b765SWarner Losh    DYNAMICROOT \
925e84b765SWarner Losh    ED_CRYPTO \
9379a86dafSEnji Cooper    EE \
94d49a5dddSWarner Losh    EFI \
9508474898SEd Maste    ELFTOOLCHAIN_BOOTSTRAP \
965e84b765SWarner Losh    EXAMPLES \
975e84b765SWarner Losh    FDT \
98c7b6816fSEnji Cooper    FILE \
9911981695SEnji Cooper    FINGER \
1005e84b765SWarner Losh    FLOPPY \
1015e84b765SWarner Losh    FMTREE \
1025e84b765SWarner Losh    FORTH \
1035e84b765SWarner Losh    FP_LIBC \
1045e84b765SWarner Losh    FREEBSD_UPDATE \
10511981695SEnji Cooper    FTP \
1065e84b765SWarner Losh    GAMES \
1075e84b765SWarner Losh    GCOV \
10873ad3fb5SJohn Baldwin    GDB \
10994ff3d03SEd Maste    GNU_DIFF \
11094ff3d03SEd Maste    GNU_GREP \
1115e84b765SWarner Losh    GPIO \
1124e395054SEnji Cooper    HAST \
1135e84b765SWarner Losh    HTML \
114f8080a99SWarner Losh    HYPERV \
1155e84b765SWarner Losh    ICONV \
1165e84b765SWarner Losh    INET \
1175e84b765SWarner Losh    INET6 \
11811981695SEnji Cooper    INETD \
1195e84b765SWarner Losh    IPFILTER \
1205e84b765SWarner Losh    IPFW \
121b29d6977SEnji Cooper    ISCSI \
1225e84b765SWarner Losh    JAIL \
1235e84b765SWarner Losh    KDUMP \
1245e84b765SWarner Losh    KVM \
1255e84b765SWarner Losh    LDNS \
1265e84b765SWarner Losh    LDNS_UTILS \
1275e84b765SWarner Losh    LEGACY_CONSOLE \
1285e84b765SWarner Losh    LIB32 \
1295e84b765SWarner Losh    LIBPTHREAD \
1305e84b765SWarner Losh    LIBTHR \
1311b49115aSEd Maste    LLVM_COV \
13254095bf4SKyle Evans    LOADER_GELI \
13354095bf4SKyle Evans    LOADER_OFW \
13454095bf4SKyle Evans    LOADER_UBOOT \
1355e84b765SWarner Losh    LOCALES \
1365e84b765SWarner Losh    LOCATE \
1375e84b765SWarner Losh    LPR \
1385e84b765SWarner Losh    LS_COLORS \
1395e84b765SWarner Losh    LZMA_SUPPORT \
1405e84b765SWarner Losh    MAIL \
1415e84b765SWarner Losh    MAILWRAPPER \
1425e84b765SWarner Losh    MAKE \
1435e84b765SWarner Losh    NDIS \
1445e84b765SWarner Losh    NETCAT \
1455e84b765SWarner Losh    NETGRAPH \
1465e84b765SWarner Losh    NLS_CATALOGS \
1475e84b765SWarner Losh    NS_CACHING \
1485e84b765SWarner Losh    NTP \
149be3bff32SKonstantin Belousov    OFED \
1505e84b765SWarner Losh    OPENSSL \
1515e84b765SWarner Losh    PAM \
1525e84b765SWarner Losh    PC_SYSINSTALL \
1535e84b765SWarner Losh    PF \
1545e84b765SWarner Losh    PKGBOOTSTRAP \
1555e84b765SWarner Losh    PMC \
1565e84b765SWarner Losh    PORTSNAP \
1575e84b765SWarner Losh    PPP \
1585e84b765SWarner Losh    QUOTAS \
15931a741f4SEnji Cooper    RADIUS_SUPPORT \
16011981695SEnji Cooper    RBOOTD \
1615e84b765SWarner Losh    RESCUE \
1625e84b765SWarner Losh    ROUTED \
1635e84b765SWarner Losh    SENDMAIL \
1646f077571SSean Bruno    SERVICESDB \
1655e84b765SWarner Losh    SETUID_LOGIN \
1665e84b765SWarner Losh    SHAREDOCS \
1675e84b765SWarner Losh    SOURCELESS \
1685e84b765SWarner Losh    SOURCELESS_HOST \
1695e84b765SWarner Losh    SOURCELESS_UCODE \
1705e84b765SWarner Losh    SVNLITE \
1715e84b765SWarner Losh    SYSCONS \
172bf16c2e9SBryan Drewery    SYSTEM_COMPILER \
173a7d84af8SBryan Drewery    SYSTEM_LINKER \
1743f802165SEnji Cooper    TALK \
17511981695SEnji Cooper    TCP_WRAPPERS \
1765e84b765SWarner Losh    TCSH \
1775e84b765SWarner Losh    TELNET \
1785e84b765SWarner Losh    TEXTPROC \
17911981695SEnji Cooper    TFTP \
18011981695SEnji Cooper    TIMED \
1815e84b765SWarner Losh    UNBOUND \
1825e84b765SWarner Losh    USB \
1835e84b765SWarner Losh    UTMPX \
1845e84b765SWarner Losh    VI \
185824a9093SEd Maste    VT \
1865e84b765SWarner Losh    WIRELESS \
1875e84b765SWarner Losh    WPA_SUPPLICANT_EAPOL \
1885e84b765SWarner Losh    ZFS \
1895e84b765SWarner Losh    ZONEINFO
1905e84b765SWarner Losh
1915e84b765SWarner Losh__DEFAULT_NO_OPTIONS = \
1925e84b765SWarner Losh    BSD_GREP \
1935e84b765SWarner Losh    CLANG_EXTRAS \
194d912066cSMark Johnston    DTRACE_TESTS \
195e9e768f7SEd Maste    GNU_GREP_COMPAT \
1965e84b765SWarner Losh    HESIOD \
197c42ade60SWarner Losh    LIBSOFT \
198a179cd91SWarner Losh    LOADER_FIREWIRE \
19976541eb0SWojciech Macek    LOADER_FORCE_LE \
2007cafeaa1SWarner Losh    LOADER_LUA \
2015e84b765SWarner Losh    NAND \
202abbe7d5aSKonstantin Belousov    OFED_EXTRA \
2035e84b765SWarner Losh    OPENLDAP \
204a97b7160SEd Maste    REPRODUCIBLE_BUILD \
205609b7b26SEnji Cooper    RPCBIND_WARMSTART_SUPPORT \
2065e84b765SWarner Losh    SHARED_TOOLCHAIN \
2075e84b765SWarner Losh    SORT_THREADS \
2086120aabdSBryan Drewery    SVN \
209c5cba060SEnji Cooper    ZONEINFO_LEAPSECONDS_SUPPORT \
210c5cba060SEnji Cooper    ZONEINFO_OLD_TIMEZONES_SUPPORT \
2116120aabdSBryan Drewery
212100fafebSBryan Drewery# LEFT/RIGHT. Left options which default to "yes" unless their corresponding
213100fafebSBryan Drewery# RIGHT option is disabled.
214100fafebSBryan Drewery__DEFAULT_DEPENDENT_OPTIONS= \
215100fafebSBryan Drewery	CLANG_FULL/CLANG \
216631e709fSBryan Drewery	LLVM_TARGET_ALL/CLANG \
217100fafebSBryan Drewery
218100fafebSBryan Drewery# MK_*_SUPPORT options which default to "yes" unless their corresponding
219100fafebSBryan Drewery# MK_* variable is set to "no".
220100fafebSBryan Drewery#
221100fafebSBryan Drewery.for var in \
222100fafebSBryan Drewery    BLACKLIST \
223100fafebSBryan Drewery    BZIP2 \
224100fafebSBryan Drewery    INET \
225100fafebSBryan Drewery    INET6 \
226100fafebSBryan Drewery    KERBEROS \
227100fafebSBryan Drewery    KVM \
228100fafebSBryan Drewery    NETGRAPH \
229100fafebSBryan Drewery    PAM \
230100fafebSBryan Drewery    TESTS \
231100fafebSBryan Drewery    WIRELESS
232100fafebSBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+= ${var}_SUPPORT/${var}
233100fafebSBryan Drewery.endfor
2345e84b765SWarner Losh
2355e84b765SWarner Losh#
2365e84b765SWarner Losh# Default behaviour of some options depends on the architecture.  Unfortunately
2375e84b765SWarner Losh# this means that we have to test TARGET_ARCH (the buildworld case) as well
2385e84b765SWarner Losh# as MACHINE_ARCH (the non-buildworld case).  Normally TARGET_ARCH is not
2395e84b765SWarner Losh# used at all in bsd.*.mk, but we have to make an exception here if we want
2405e84b765SWarner Losh# to allow defaults for some things like clang to vary by target architecture.
2415e84b765SWarner Losh# Additional, per-target behavior should be rarely added only after much
2425e84b765SWarner Losh# gnashing of teeth and grinding of gears.
2435e84b765SWarner Losh#
2445e84b765SWarner Losh.if defined(TARGET_ARCH)
2455e84b765SWarner Losh__T=${TARGET_ARCH}
2465e84b765SWarner Losh.else
2475e84b765SWarner Losh__T=${MACHINE_ARCH}
2485e84b765SWarner Losh.endif
2495e84b765SWarner Losh.if defined(TARGET)
2505e84b765SWarner Losh__TT=${TARGET}
2515e84b765SWarner Losh.else
2525e84b765SWarner Losh__TT=${MACHINE}
2535e84b765SWarner Losh.endif
2540104753bSDimitry Andric
255631e709fSBryan Drewery# All supported backends for LLVM_TARGET_XXX
256631e709fSBryan Drewery__LLVM_TARGETS= \
257631e709fSBryan Drewery		aarch64 \
258631e709fSBryan Drewery		arm \
259631e709fSBryan Drewery		mips \
260631e709fSBryan Drewery		powerpc \
261631e709fSBryan Drewery		sparc \
262631e709fSBryan Drewery		x86
263631e709fSBryan Drewery__LLVM_TARGET_FILT=	C/(amd64|i386)/x86/:S/sparc64/sparc/:S/arm64/aarch64/
2644e2a4490SBryan Drewery.for __llt in ${__LLVM_TARGETS}
2654e2a4490SBryan Drewery# Default the given TARGET's LLVM_TARGET support to the value of MK_CLANG.
2664e2a4490SBryan Drewery.if ${__TT:${__LLVM_TARGET_FILT}} == ${__llt}
2674e2a4490SBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+=	LLVM_TARGET_${__llt:${__LLVM_TARGET_FILT}:tu}/CLANG
2684e2a4490SBryan Drewery# aarch64 needs arm for -m32 support.
2694e2a4490SBryan Drewery.elif ${__TT} == "arm64" && ${__llt} == "arm"
2704e2a4490SBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+=	LLVM_TARGET_ARM/LLVM_TARGET_AARCH64
271631e709fSBryan Drewery# Default the rest of the LLVM_TARGETs to the value of MK_LLVM_TARGET_ALL
272631e709fSBryan Drewery# which is based on MK_CLANG.
273631e709fSBryan Drewery.else
2744e2a4490SBryan Drewery__DEFAULT_DEPENDENT_OPTIONS+=	LLVM_TARGET_${__llt:${__LLVM_TARGET_FILT}:tu}/LLVM_TARGET_ALL
275631e709fSBryan Drewery.endif
276631e709fSBryan Drewery.endfor
277631e709fSBryan Drewery
278*89edb881SDimitry Andric__DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF
279*89edb881SDimitry Andric
2800104753bSDimitry Andric.include <bsd.compiler.mk>
2818758abd5SBryan Drewery# If the compiler is not C++11 capable, disable Clang and use GCC instead.
2828758abd5SBryan Drewery# This means that architectures that have GCC 4.2 as default can not
2838758abd5SBryan Drewery# build Clang without using an external compiler.
2848758abd5SBryan Drewery
2858758abd5SBryan Drewery.if ${COMPILER_FEATURES:Mc++11} && (${__T} == "aarch64" || \
2868758abd5SBryan Drewery    ${__T} == "amd64" || ${__TT} == "arm" || ${__T} == "i386")
2878758abd5SBryan Drewery# Clang is enabled, and will be installed as the default /usr/bin/cc.
288100fafebSBryan Drewery__DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_IS_CC LLD
289a793c109SEd Maste__DEFAULT_NO_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX GPL_DTC
290993d3dedSEd Maste.elif ${COMPILER_FEATURES:Mc++11} && ${__T:Mriscv*} == "" && ${__T} != "sparc64"
29160af5546SEd Maste# If an external compiler that supports C++11 is used as ${CC} and Clang
29260af5546SEd Maste# supports the target, then Clang is enabled but GCC is installed as the
29360af5546SEd Maste# default /usr/bin/cc.
294100fafebSBryan Drewery__DEFAULT_YES_OPTIONS+=CLANG GCC GCC_BOOTSTRAP GNUCXX GPL_DTC LLD
2952dce6bfbSEd Maste__DEFAULT_NO_OPTIONS+=CLANG_BOOTSTRAP CLANG_IS_CC
2960104753bSDimitry Andric.else
2978758abd5SBryan Drewery# Everything else disables Clang, and uses GCC instead.
298a793c109SEd Maste__DEFAULT_YES_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX GPL_DTC
299100fafebSBryan Drewery__DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_IS_CC LLD
3005e84b765SWarner Losh.endif
3011cee64a8SEd Maste# In-tree binutils/gcc are older versions without modern architecture support.
3027804dd52SRuslan Bukin.if ${__T} == "aarch64" || ${__T:Mriscv*} != ""
303054f15acSEnji CooperBROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GCC GCC_BOOTSTRAP GDB
3048daa8167SAndrew Turner.endif
3057ddf05edSRuslan Bukin.if ${__T:Mriscv*} != ""
3067ddf05edSRuslan BukinBROKEN_OPTIONS+=OFED
3077ddf05edSRuslan Bukin.endif
30806b41817SEd Maste.if ${__T} == "aarch64" || ${__T} == "amd64" || ${__T} == "i386" || \
3091e18e7d2SJohn Baldwin    ${__T:Mriscv*} != "" || ${__TT} == "mips"
31006b41817SEd Maste__DEFAULT_YES_OPTIONS+=LLVM_LIBUNWIND
31106b41817SEd Maste.else
31206b41817SEd Maste__DEFAULT_NO_OPTIONS+=LLVM_LIBUNWIND
31306b41817SEd Maste.endif
3143f6cd86bSEd Maste.if ${__T} == "aarch64" || ${__T} == "amd64"
315ffe63c8bSEd Maste__DEFAULT_YES_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD
316800ab3e3SEd Maste.elif ${__T} == "armv7" || ${__T} == "i386"
3173f6cd86bSEd Maste__DEFAULT_YES_OPTIONS+=LLD_BOOTSTRAP
3183f6cd86bSEd Maste__DEFAULT_NO_OPTIONS+=LLD_IS_LD
3190aa5466eSEd Maste.else
320ffe63c8bSEd Maste__DEFAULT_NO_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD
3210aa5466eSEd Maste.endif
322056dd75bSEd Maste.if ${__T} == "aarch64" || ${__T} == "amd64" || ${__T} == "i386"
323dfccd92cSEd Maste__DEFAULT_YES_OPTIONS+=LLDB
324d0ba16f7SEd Maste.else
325dfccd92cSEd Maste__DEFAULT_NO_OPTIONS+=LLDB
326d0ba16f7SEd Maste.endif
327ac99c33fSEd Maste# LLVM lacks support for FreeBSD 64-bit atomic operations for ARMv4/ARMv5
32871cb2dfcSWarner Losh.if ${__T} == "arm"
329ac99c33fSEd MasteBROKEN_OPTIONS+=LLDB
330ac99c33fSEd Maste.endif
33199b8bccdSJohn Baldwin# GDB in base is generally less functional than GDB in ports.  Ports GDB
332513fdd50SJohn Baldwin# sparc64 kernel support has not been tested.
333513fdd50SJohn Baldwin.if ${__T} == "sparc64"
33473ad3fb5SJohn Baldwin__DEFAULT_NO_OPTIONS+=GDB_LIBEXEC
33599b8bccdSJohn Baldwin.else
33673ad3fb5SJohn Baldwin__DEFAULT_YES_OPTIONS+=GDB_LIBEXEC
33799b8bccdSJohn Baldwin.endif
3380c095a65SEnji Cooper# Only doing soft float API stuff on armv6 and armv7
3390b972ac9SWarner Losh.if ${__T} != "armv6" && ${__T} != "armv7"
340c42ade60SWarner LoshBROKEN_OPTIONS+=LIBSOFT
341c42ade60SWarner Losh.endif
3423d79fdacSWarner Losh.if ${__T:Mmips*}
3435bec6d55SRuslan BukinBROKEN_OPTIONS+=SSP
3445bec6d55SRuslan Bukin.endif
3459e74797fSWarner Losh# EFI doesn't exist on mips, powerpc, sparc or riscv.
346d49a5dddSWarner Losh.if ${__T:Mmips*} || ${__T:Mpowerpc*} || ${__T:Msparc64} || ${__T:Mriscv*}
347f86dd996SWarner LoshBROKEN_OPTIONS+=EFI
348d49a5dddSWarner Losh.endif
349f86dd996SWarner Losh# OFW is only for powerpc and sparc64, exclude others
350f86dd996SWarner Losh.if ${__T:Mpowerpc*} == "" && ${__T:Msparc64} == ""
351f86dd996SWarner LoshBROKEN_OPTIONS+=LOADER_OFW
352f86dd996SWarner Losh.endif
353f86dd996SWarner Losh# UBOOT is only for arm, mips and powerpc, exclude others
354f86dd996SWarner Losh.if ${__T:Marm*} == "" && ${__T:Mmips*} == "" && ${__T:Mpowerpc*} == ""
355f86dd996SWarner LoshBROKEN_OPTIONS+=LOADER_UBOOT
356f86dd996SWarner Losh.endif
357f86dd996SWarner Losh
3582427dc7dSEd Maste.if ${__T:Mmips64*}
3592427dc7dSEd Maste# profiling won't work on MIPS64 because there is only assembly for o32
3602427dc7dSEd MasteBROKEN_OPTIONS+=PROFILE
3612427dc7dSEd Maste.endif
36254912308SNavdeep Parhar.if ${__T} == "aarch64" || ${__T} == "amd64" || ${__T} == "i386" || \
36354912308SNavdeep Parhar    ${__T} == "powerpc64" || ${__T} == "sparc64"
36454912308SNavdeep Parhar__DEFAULT_YES_OPTIONS+=CXGBETOOL
365e808190aSHans Petter Selasky__DEFAULT_YES_OPTIONS+=MLX5TOOL
36654912308SNavdeep Parhar.else
36754912308SNavdeep Parhar__DEFAULT_NO_OPTIONS+=CXGBETOOL
368e808190aSHans Petter Selasky__DEFAULT_NO_OPTIONS+=MLX5TOOL
36954912308SNavdeep Parhar.endif
37054912308SNavdeep Parhar
371f0f8a1afSWarner Losh# NVME is only x86 and powerpc64
372f0f8a1afSWarner Losh.if ${__T} == "amd64" || ${__T} == "i386" || ${__T} == "powerpc64"
373f0f8a1afSWarner Losh__DEFAULT_YES_OPTIONS+=NVME
374f0f8a1afSWarner Losh.else
375f0f8a1afSWarner Losh__DEFAULT_NO_OPTIONS+=NVME
376f0f8a1afSWarner Losh.endif
377f0f8a1afSWarner Losh
3785e84b765SWarner Losh.include <bsd.mkopt.mk>
3795e84b765SWarner Losh
3805e84b765SWarner Losh#
3815e84b765SWarner Losh# MK_* options that default to "yes" if the compiler is a C++11 compiler.
3825e84b765SWarner Losh#
3835e84b765SWarner Losh.for var in \
3845e84b765SWarner Losh    LIBCPLUSPLUS
3855e84b765SWarner Losh.if !defined(MK_${var})
3865e84b765SWarner Losh.if ${COMPILER_FEATURES:Mc++11}
3875e84b765SWarner Losh.if defined(WITHOUT_${var})
3885e84b765SWarner LoshMK_${var}:=	no
3895e84b765SWarner Losh.else
3905e84b765SWarner LoshMK_${var}:=	yes
3915e84b765SWarner Losh.endif
3925e84b765SWarner Losh.else
3935e84b765SWarner Losh.if defined(WITH_${var})
3945e84b765SWarner LoshMK_${var}:=	yes
3955e84b765SWarner Losh.else
3965e84b765SWarner LoshMK_${var}:=	no
3975e84b765SWarner Losh.endif
3985e84b765SWarner Losh.endif
3995e84b765SWarner Losh.endif
4005e84b765SWarner Losh.endfor
4015e84b765SWarner Losh
4025e84b765SWarner Losh#
4035e84b765SWarner Losh# Force some options off if their dependencies are off.
4045e84b765SWarner Losh# Order is somewhat important.
4055e84b765SWarner Losh#
40693cdeb4aSEd Maste.if !${COMPILER_FEATURES:Mc++11}
40793cdeb4aSEd MasteMK_LLVM_LIBUNWIND:=	no
40893cdeb4aSEd Maste.endif
40993cdeb4aSEd Maste
410fa0b3585SEd Maste.if ${MK_BINUTILS} == "no"
411fa0b3585SEd MasteMK_GDB:=	no
412fa0b3585SEd Maste.endif
413fa0b3585SEd Maste
41458551dc6SBaptiste Daroussin.if ${MK_CAPSICUM} == "no"
41558551dc6SBaptiste DaroussinMK_CASPER:=	no
41658551dc6SBaptiste Daroussin.endif
41758551dc6SBaptiste Daroussin
4185e84b765SWarner Losh.if ${MK_LIBPTHREAD} == "no"
4195e84b765SWarner LoshMK_LIBTHR:=	no
4205e84b765SWarner Losh.endif
4215e84b765SWarner Losh
4225e84b765SWarner Losh.if ${MK_LDNS} == "no"
4235e84b765SWarner LoshMK_LDNS_UTILS:=	no
4245e84b765SWarner LoshMK_UNBOUND:= no
4255e84b765SWarner Losh.endif
4265e84b765SWarner Losh
4275e84b765SWarner Losh.if ${MK_SOURCELESS} == "no"
4285e84b765SWarner LoshMK_SOURCELESS_HOST:=	no
4295e84b765SWarner LoshMK_SOURCELESS_UCODE:= no
4305e84b765SWarner Losh.endif
4315e84b765SWarner Losh
4325e84b765SWarner Losh.if ${MK_CDDL} == "no"
4335e84b765SWarner LoshMK_ZFS:=	no
4345e84b765SWarner LoshMK_CTF:=	no
4355e84b765SWarner Losh.endif
4365e84b765SWarner Losh
4375e84b765SWarner Losh.if ${MK_CRYPT} == "no"
4385e84b765SWarner LoshMK_OPENSSL:=	no
4395e84b765SWarner LoshMK_OPENSSH:=	no
4405e84b765SWarner LoshMK_KERBEROS:=	no
4415e84b765SWarner Losh.endif
4425e84b765SWarner Losh
4435e84b765SWarner Losh.if ${MK_CXX} == "no"
4445e84b765SWarner LoshMK_CLANG:=	no
4459e88096eSWarner LoshMK_GNUCXX:=	no
4468a9745b5SEd MasteMK_TESTS:=	no
4475e84b765SWarner Losh.endif
4485e84b765SWarner Losh
449f987297fSEd Maste.if ${MK_DIALOG} == "no"
450f987297fSEd MasteMK_BSDINSTALL:=	no
451f987297fSEd Maste.endif
452f987297fSEd Maste
4535e84b765SWarner Losh.if ${MK_MAIL} == "no"
4545e84b765SWarner LoshMK_MAILWRAPPER:= no
4555e84b765SWarner LoshMK_SENDMAIL:=	no
4565e84b765SWarner LoshMK_DMAGENT:=	no
4575e84b765SWarner Losh.endif
4585e84b765SWarner Losh
4595e84b765SWarner Losh.if ${MK_NETGRAPH} == "no"
4605e84b765SWarner LoshMK_ATM:=	no
4615e84b765SWarner LoshMK_BLUETOOTH:=	no
4625e84b765SWarner Losh.endif
4635e84b765SWarner Losh
464edb58145SEnji Cooper.if ${MK_NLS} == "no"
465edb58145SEnji CooperMK_NLS_CATALOGS:= no
466edb58145SEnji Cooper.endif
467edb58145SEnji Cooper
4685e84b765SWarner Losh.if ${MK_OPENSSL} == "no"
4695e84b765SWarner LoshMK_OPENSSH:=	no
4705e84b765SWarner LoshMK_KERBEROS:=	no
4715e84b765SWarner Losh.endif
4725e84b765SWarner Losh
4735e84b765SWarner Losh.if ${MK_PF} == "no"
4745e84b765SWarner LoshMK_AUTHPF:=	no
4755e84b765SWarner Losh.endif
4765e84b765SWarner Losh
477abbe7d5aSKonstantin Belousov.if ${MK_OFED} == "no"
478abbe7d5aSKonstantin BelousovMK_OFED_EXTRA:=	no
479abbe7d5aSKonstantin Belousov.endif
480abbe7d5aSKonstantin Belousov
4811069f41bSEd Maste.if ${MK_PORTSNAP} == "no"
4821069f41bSEd Maste# freebsd-update depends on phttpget from portsnap
4831069f41bSEd MasteMK_FREEBSD_UPDATE:=	no
4841069f41bSEd Maste.endif
4851069f41bSEd Maste
486d912066cSMark Johnston.if ${MK_TESTS} == "no"
487d912066cSMark JohnstonMK_DTRACE_TESTS:= no
488d912066cSMark Johnston.endif
489d912066cSMark Johnston
490c5cba060SEnji Cooper.if ${MK_ZONEINFO} == "no"
491c5cba060SEnji CooperMK_ZONEINFO_LEAPSECONDS_SUPPORT:= no
492c5cba060SEnji CooperMK_ZONEINFO_OLD_TIMEZONES_SUPPORT:= no
493c5cba060SEnji Cooper.endif
494c5cba060SEnji Cooper
4955e84b765SWarner Losh.if ${MK_CROSS_COMPILER} == "no"
4965e84b765SWarner LoshMK_BINUTILS_BOOTSTRAP:= no
4975e84b765SWarner LoshMK_CLANG_BOOTSTRAP:= no
49808474898SEd MasteMK_ELFTOOLCHAIN_BOOTSTRAP:= no
4995e84b765SWarner LoshMK_GCC_BOOTSTRAP:= no
50089257265SEd MasteMK_LLD_BOOTSTRAP:= no
5015e84b765SWarner Losh.endif
5025e84b765SWarner Losh
5035e84b765SWarner Losh.if ${MK_TOOLCHAIN} == "no"
5045e84b765SWarner LoshMK_BINUTILS:=	no
5055e84b765SWarner LoshMK_CLANG:=	no
5065e84b765SWarner LoshMK_GCC:=	no
5075e84b765SWarner LoshMK_GDB:=	no
508590461a4SWarner LoshMK_INCLUDES:=	no
509e5928414SEd MasteMK_LLD:=	no
51011e49977SBryan DreweryMK_LLDB:=	no
5115e84b765SWarner Losh.endif
5125e84b765SWarner Losh
5135e84b765SWarner Losh.if ${MK_CLANG} == "no"
5145e84b765SWarner LoshMK_CLANG_EXTRAS:= no
5155e84b765SWarner LoshMK_CLANG_FULL:= no
5161b49115aSEd MasteMK_LLVM_COV:= no
5175e84b765SWarner Losh.endif
5185e84b765SWarner Losh
5195e84b765SWarner Losh#
5204301886dSEnji Cooper# MK_* options whose default value depends on another option.
5214301886dSEnji Cooper#
5224301886dSEnji Cooper.for vv in \
5234301886dSEnji Cooper    GSSAPI/KERBEROS \
5244301886dSEnji Cooper    MAN_UTILS/MAN
5254301886dSEnji Cooper.if defined(WITH_${vv:H})
5264301886dSEnji CooperMK_${vv:H}:=	yes
5274301886dSEnji Cooper.elif defined(WITHOUT_${vv:H})
5284301886dSEnji CooperMK_${vv:H}:=	no
5294301886dSEnji Cooper.else
5304301886dSEnji CooperMK_${vv:H}:=	${MK_${vv:T}}
5314301886dSEnji Cooper.endif
5324301886dSEnji Cooper.endfor
5334301886dSEnji Cooper
5344301886dSEnji Cooper#
5355e84b765SWarner Losh# Set defaults for the MK_*_SUPPORT variables.
5365e84b765SWarner Losh#
5375e84b765SWarner Losh
5385e84b765SWarner Losh.if !${COMPILER_FEATURES:Mc++11}
5395e84b765SWarner LoshMK_LLDB:=	no
5405e84b765SWarner Losh.endif
5415e84b765SWarner Losh
542ff2cf368SBaptiste Daroussin# gcc 4.8 and newer supports libc++, so suppress gnuc++ in that case.
543ff2cf368SBaptiste Daroussin# while in theory we could build it with that, we don't want to do
544ff2cf368SBaptiste Daroussin# that since it creates too much confusion for too little gain.
54507394091SBryan Drewery# XXX: This is incomplete and needs X_COMPILER_TYPE/VERSION checks too
54607394091SBryan Drewery#      to prevent Makefile.inc1 from bootstrapping unneeded dependencies
54707394091SBryan Drewery#      and to support 'make delete-old' when supplying an external toolchain.
548ff2cf368SBaptiste Daroussin.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40800
549ff2cf368SBaptiste DaroussinMK_GNUCXX:=no
550ff2cf368SBaptiste DaroussinMK_GCC:=no
5515e84b765SWarner Losh.endif
552ff2cf368SBaptiste Daroussin
553ff2cf368SBaptiste Daroussin.endif #  !target(__<src.opts.mk>__)
554