The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/conf/kern.opts.mk

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 # $FreeBSD$
    2 
    3 # Options set in the build system which affect the building of kernel
    4 # modules. These select which parts to compile in or out (eg INET) or which
    5 # parts to omit (eg CDDL or SOURCELESS_HOST). Some of these will cause
    6 # config.mk to define symbols in various opt_*.h files.
    7 
    8 #
    9 # Define MK_* variables (which are either "yes" or "no") for users
   10 # to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the
   11 # make(1) environment.
   12 # These should be tested with `== "no"' or `!= "no"' in makefiles.
   13 # The NO_* variables should only be set by makefiles for variables
   14 # that haven't been converted over.
   15 #
   16 
   17 # Note: bsd.own.mk must be included before the rest of kern.opts.mk to make
   18 # building on 10.x and earlier work. This should be removed when that's no
   19 # longer supported since it confounds the defaults (since it uses the host's
   20 # notion of defaults rather than what's default in current when building
   21 # within sys/modules).
   22 .include <bsd.own.mk>
   23 
   24 # These options are used by the kernel build process (kern.mk and kmod.mk)
   25 # They have to be listed here so we can build modules outside of the
   26 # src tree.
   27 
   28 KLDXREF_CMD?=   kldxref
   29 
   30 __DEFAULT_YES_OPTIONS = \
   31     AUTOFS \
   32     BHYVE \
   33     BLUETOOTH \
   34     CCD \
   35     CDDL \
   36     CRYPT \
   37     CUSE \
   38     DTRACE \
   39     EFI \
   40     FORMAT_EXTENSIONS \
   41     INET \
   42     INET6 \
   43     IPFILTER \
   44     IPSEC_SUPPORT \
   45     ISCSI \
   46     KERNEL_SYMBOLS \
   47     NETGRAPH \
   48     OFED \
   49     PF \
   50     SCTP_SUPPORT \
   51     SOURCELESS_HOST \
   52     SOURCELESS_UCODE \
   53     SPLIT_KERNEL_DEBUG \
   54     TESTS \
   55     USB_GADGET_EXAMPLES \
   56     ZFS
   57 
   58 __DEFAULT_NO_OPTIONS = \
   59     BHYVE_SNAPSHOT \
   60     EXTRA_TCP_STACKS \
   61     INIT_ALL_PATTERN \
   62     INIT_ALL_ZERO \
   63     KERNEL_RETPOLINE \
   64     RATELIMIT \
   65     REPRODUCIBLE_BUILD
   66 
   67 # Some options are totally broken on some architectures. We disable
   68 # them. If you need to enable them on an experimental basis, you
   69 # must change this code.
   70 # Note: These only apply to the list of modules we build by default
   71 # and sometimes what is in the opt_*.h files by default.
   72 # Kernel config files are unaffected, though some targets can be
   73 # affected by KERNEL_SYMBOLS, FORMAT_EXTENSIONS, CTF and SSP.
   74 
   75 # Things that don't work based on the CPU
   76 .if ${MACHINE} == "amd64"
   77 # PR251083 conflict between INIT_ALL_ZERO and ifunc memset
   78 BROKEN_OPTIONS+= INIT_ALL_ZERO
   79 .endif
   80 
   81 .if ${MACHINE_CPUARCH} == "arm"
   82 . if ${MACHINE_ARCH:Marmv[67]*} == ""
   83 BROKEN_OPTIONS+= CDDL ZFS
   84 . endif
   85 .endif
   86 
   87 .if ${MACHINE_CPUARCH} == "powerpc" && ${MACHINE_ARCH} == "powerpc"
   88 BROKEN_OPTIONS+= ZFS
   89 .endif
   90 
   91 # Things that don't work because the kernel doesn't have the support
   92 # for them.
   93 .if ${MACHINE} != "i386" && ${MACHINE} != "amd64"
   94 BROKEN_OPTIONS+= OFED
   95 .endif
   96 
   97 # Things that don't work based on toolchain support.
   98 .if ${MACHINE} != "i386" && ${MACHINE} != "amd64"
   99 BROKEN_OPTIONS+= KERNEL_RETPOLINE
  100 .endif
  101 
  102 # EFI doesn't exist on powerpc, or riscv
  103 .if ${MACHINE:Mpowerpc} || ${MACHINE:Mriscv}
  104 BROKEN_OPTIONS+=EFI
  105 .endif
  106 
  107 .if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
  108 __DEFAULT_NO_OPTIONS += FDT
  109 .else
  110 __DEFAULT_YES_OPTIONS += FDT
  111 .endif
  112 
  113 # expanded inline from bsd.mkopt.mk to avoid share/mk dependency
  114 
  115 # Those that default to yes
  116 .for var in ${__DEFAULT_YES_OPTIONS}
  117 .if !defined(MK_${var})
  118 .if defined(WITHOUT_${var})                     # WITHOUT always wins
  119 MK_${var}:=     no
  120 .else
  121 MK_${var}:=     yes
  122 .endif
  123 .else
  124 .if ${MK_${var}} != "yes" && ${MK_${var}} != "no"
  125 .error "Illegal value for MK_${var}: ${MK_${var}}"
  126 .endif
  127 .endif # !defined(MK_${var})
  128 .endfor
  129 .undef __DEFAULT_YES_OPTIONS
  130 
  131 # Those that default to no
  132 .for var in ${__DEFAULT_NO_OPTIONS}
  133 .if !defined(MK_${var})
  134 .if defined(WITH_${var}) && !defined(WITHOUT_${var}) # WITHOUT always wins
  135 MK_${var}:=     yes
  136 .else
  137 MK_${var}:=     no
  138 .endif
  139 .else
  140 .if ${MK_${var}} != "yes" && ${MK_${var}} != "no"
  141 .error "Illegal value for MK_${var}: ${MK_${var}}"
  142 .endif
  143 .endif # !defined(MK_${var})
  144 .endfor
  145 .undef __DEFAULT_NO_OPTIONS
  146 
  147 #
  148 # MK_* options which are always no, usually because they are
  149 # unsupported/badly broken on this architecture.
  150 #
  151 .for var in ${BROKEN_OPTIONS}
  152 MK_${var}:=     no
  153 .endfor
  154 .undef BROKEN_OPTIONS
  155 #end of bsd.mkopt.mk expanded inline.
  156 
  157 #
  158 # MK_*_SUPPORT options which default to "yes" unless their corresponding
  159 # MK_* variable is set to "no".
  160 #
  161 .for var in \
  162     INET \
  163     INET6
  164 .if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
  165 MK_${var}_SUPPORT:= no
  166 .else
  167 .if defined(KERNBUILDDIR)       # See if there's an opt_foo.h
  168 .if !defined(OPT_${var})
  169 OPT_${var}!= cat ${KERNBUILDDIR}/opt_${var:tl}.h; echo
  170 .export OPT_${var}
  171 .endif
  172 .if ${OPT_${var}} == ""         # nothing -> no
  173 MK_${var}_SUPPORT:= no
  174 .else
  175 MK_${var}_SUPPORT:= yes
  176 .endif
  177 .else                           # otherwise, yes
  178 MK_${var}_SUPPORT:= yes
  179 .endif
  180 .endif
  181 .endfor
  182 
  183 .if ${MK_SPLIT_KERNEL_DEBUG} == "no"
  184 MK_KERNEL_SYMBOLS:=     no
  185 .endif
  186 
  187 .if ${MK_CDDL} == "no"
  188 MK_DTRACE:=     no
  189 .endif
  190 
  191 # Some modules only compile successfully if option FDT is set, due to #ifdef FDT
  192 # wrapped around declarations.  Module makefiles can optionally compile such
  193 # things using .if !empty(OPT_FDT)
  194 .if !defined(OPT_FDT) && defined(KERNBUILDDIR)
  195 OPT_FDT!= sed -n '/FDT/p' ${KERNBUILDDIR}/opt_platform.h
  196 .export OPT_FDT
  197 .if empty(OPT_FDT)
  198 MK_FDT:=no
  199 .else
  200 MK_FDT:=yes
  201 .endif
  202 .endif

Cache object: 94289470e40e6a700d5e53e6ca9c777f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.