Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F107374785
D41659.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D41659.diff
View Options
diff --git a/share/mk/bsd.mkopt.mk b/share/mk/bsd.mkopt.mk
--- a/share/mk/bsd.mkopt.mk
+++ b/share/mk/bsd.mkopt.mk
@@ -1,7 +1,7 @@
#
#
# Generic mechanism to deal with WITH and WITHOUT options and turn
-# them into MK_ options.
+# them into MK_ options. Also turn group options into OPT_ options.
#
# For each option FOO in __DEFAULT_YES_OPTIONS, MK_FOO is set to
# "yes", unless WITHOUT_FOO is defined, in which case it is set to
@@ -31,6 +31,15 @@
# system should use MK_FOO={yes,no} when it needs to override the
# user's desires or default behavior.
#
+# For each option in __SINGLE_OPTIONS, OPT_FOO is set to FOO if
+# defined and __FOO_DEFAULT if not. Valid values for FOO are specified
+# by __FOO_OPTIONS.
+#
+# Other parts of the build system will set BROKEN_SINGLE_OPTIONS to a
+# list of 3-tuples of the form: "OPTION broken_value replacment_value".
+# This will not be unset before returning. Clients are expected to
+# always += this variable.
+#
#
# MK_* options which default to "yes".
@@ -93,6 +102,33 @@
MK_${var}:= no
.endfor
+#
+# Group options set an OPT_FOO variable for each option.
+#
+.for opt in ${__SINGLE_OPTIONS}
+.if !defined(__${opt}_OPTIONS) || empty(__${opt}_OPTIONS)
+.error __${opt}_OPTIONS undefined or empty
+.endif
+.if !defined(__${opt}_DEFAULT) || empty(__${opt}_DEFAULT)
+.error __${opt}_DEFAULT undefined or empty
+.endif
+.if defined(${opt})
+OPT_${opt}:= ${${opt}}
+.else
+OPT_${opt}:= ${__${opt}_DEFAULT}
+.endif
+.if empty(OPT_${opt}) || ${__${opt}_OPTIONS:M${OPT_${opt}}} != ${OPT_${opt}}
+.error Invalid option OPT_${opt} (${OPT_${opt}}), must be one of: ${__${opt}_OPTIONS}
+.endif
+.endfor
+.undef __SINGLE_OPTIONS
+
+.for opt val rep in ${BROKEN_SINGLE_OPTIONS}
+.if ${OPT_${opt}} == ${val}
+OPT_${opt}:= ${rep}
+.endif
+.endfor
+
.for vv in ${__DEFAULT_DEPENDENT_OPTIONS}
.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H})
MK_${vv:H}?= no
diff --git a/sys/conf/kern.opts.mk b/sys/conf/kern.opts.mk
--- a/sys/conf/kern.opts.mk
+++ b/sys/conf/kern.opts.mk
@@ -141,6 +141,33 @@
MK_${var}:= no
.endfor
.undef BROKEN_OPTIONS
+
+#
+# Group options set an OPT_FOO variable for each option.
+#
+.for opt in ${__SINGLE_OPTIONS}
+.if !defined(__${opt}_OPTIONS) || empty(__${opt}_OPTIONS)
+.error __${opt}_OPTIONS not defined or empty
+.endif
+.if !defined(__${opt}_DEFAULT) || empty(__${opt}_DEFAULT)
+.error __${opt}_DEFAULT undefined or empty
+.endif
+.if defined(${opt})
+OPT_${opt}:= ${${opt}}
+.else
+OPT_${opt}:= ${__${opt}_DEFAULT}
+.endif
+.if empty(OPT_${opt}) || ${__${opt}_OPTIONS:M${OPT_${opt}}} != ${OPT_${opt}}
+.error Invalid option OPT_${opt} (${OPT_${opt}}), must be one of: ${__${opt}_OPTIONS}
+.endif
+.endfor
+.undef __SINGLE_OPTIONS
+
+.for opt val rep in ${BROKEN_SINGLE_OPTIONS}
+.if ${OPT_${opt}} == ${val}
+OPT_${opt}:= ${rep}
+.endif
+.endfor
#end of bsd.mkopt.mk expanded inline.
#
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Jan 14, 6:07 AM (21 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15791671
Default Alt Text
D41659.diff (2 KB)
Attached To
Mode
D41659: share/mk: basic support for group options
Attached
Detach File
Event Timeline
Log In to Comment