pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/mk bsd.options.mk provides boilerplate code for standa...
details: https://anonhg.NetBSD.org/pkgsrc/rev/696728d3da1d
branches: trunk
changeset: 478824:696728d3da1d
user: jlam <jlam%pkgsrc.org@localhost>
date: Fri Jul 30 20:59:08 2004 +0000
description:
bsd.options.mk provides boilerplate code for standard naming conventions
for handling per-package build options.
Before including this file, the following variables should be defined:
PKG_OPTIONS_VAR
This is a list of the name of the make(1) variables that
contain the options the user wishes to select. This
variable should be set in a package Makefile. E.g.,
PKG_OPTIONS_VAR= WIBBLE_OPTIONS
or
PKG_OPTIONS_VAR= FOO_OPTIONS BAR_OPTIONS
PKG_SUPPORTED_OPTIONS
This is a list of build options supported by the package.
This variable should be set in a package Makefile. E.g.,
PKG_SUPPORTED_OPTIONS= kerberos ldap ssl
Optionally, the following variables may also be defined:
PKG_DEFAULT_OPTIONS
This is a list the options that should be built into
every package, if that option is supported. This
variable should be set in /etc/mk.conf.
${PKG_OPTIONS_VAR} (the variables named in PKG_OPTIONS_VAR)
These variables list the selected build options and
override any default options given in PKG_DEFAULT_OPTIONS.
If any of the options begin with a '-', then that option
is always removed from the selected build options, e.g.
PKG_DEFAULT_OPTIONS= kerberos ldap sasl
PKG_OPTIONS_VAR= WIBBLE_OPTIONS
WIBBLE_OPTIONS= ${PKG_DEFAULT_OPTIONS} -sasl
# implies PKG_OPTIONS == "kerberos ldap"
or
PKG_OPTIONS_VAR= WIBBLE_OPTIONS
WIBBLE_OPTIONS= kerberos -ldap ldap
# implies PKG_OPTIONS == "kerberos"
This variable should be set in /etc/mk.conf.
PKG_FAIL_UNSUPPORTED_OPTIONS
If this is set to "yes", then the presence of unsupported
options in PKG_OPTIONS.<pkg> (see below) causes the build
to fail. Set this to "no" to silently ignore unsupported
options. Default: "yes".
After including this file, the following variables are defined:
PKG_OPTIONS
This is the list of the selected build options, properly
filtered to remove unsupported and duplicate options.
Example usage:
-------------8<-------------8<-------------8<-------------8<-------------
# Global and legacy options
.if defined(USE_OPENLDAP) || defined(USE_SASL2)
. if !defined(PKG_OPTIONS.wibble)
. if defined(USE_OPENLDAP) && !empty(USE_OPENLDAP:M[yY][eE][sS])
PKG_OPTIONS.wibble+= ldap
. endif
. if defined(USE_SASL2) && !empty(USE_SASL2:M[yY][eE][sS])
PKG_OPTIONS.wibble+= sasl
. endif
. endif
.endif
PKG_OPTIONS_VAR= PKG_OPTIONS.wibble
PKG_SUPPORTED_OPTIONS= ldap sasl
.include "../../mk/bsd.options.mk"
# Package-specific option-handling
###
### LDAP support
###
.if !empty(PKG_OPTIONS:Mldap)
. include "../../databases/openldap/buildlink3.mk"
CONFIGURE_ARGS+= --enable-ldap=${BUILDLINK_PREFIX.openldap}
.endif
###
### SASL authentication
###
.if !empty(PKG_OPTIONS:Msasl)
. include "../../security/cyrus-sasl2/buildlink3.mk"
CONFIGURE_ARGS+= --enable-sasl=${BUILDLINK_PREFIX.sasl}
.endif
-------------8<-------------8<-------------8<-------------8<-------------
diffstat:
mk/bsd.options.mk | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
mk/bsd.prefs.mk | 7 +-
2 files changed, 170 insertions(+), 1 deletions(-)
diffs (197 lines):
diff -r 50b45c9f7113 -r 696728d3da1d mk/bsd.options.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mk/bsd.options.mk Fri Jul 30 20:59:08 2004 +0000
@@ -0,0 +1,164 @@
+# $NetBSD: bsd.options.mk,v 1.1 2004/07/30 20:59:08 jlam Exp $
+#
+# This Makefile fragment provides boilerplate code for standard naming
+# conventions for handling per-package build options.
+#
+# Before including this file, the following variables should be defined:
+#
+# PKG_OPTIONS_VAR
+# This is a list of the name of the make(1) variables that
+# contain the options the user wishes to select. This
+# variable should be set in a package Makefile. E.g.,
+#
+# PKG_OPTIONS_VAR= WIBBLE_OPTIONS
+# or
+# PKG_OPTIONS_VAR= FOO_OPTIONS BAR_OPTIONS
+#
+# PKG_SUPPORTED_OPTIONS
+# This is a list of build options supported by the package.
+# This variable should be set in a package Makefile. E.g.,
+#
+# PKG_SUPPORTED_OPTIONS= kerberos ldap ssl
+#
+# Optionally, the following variables may also be defined:
+#
+# PKG_DEFAULT_OPTIONS
+# This is a list the options that should be built into
+# every package, if that option is supported. This
+# variable should be set in /etc/mk.conf.
+#
+# ${PKG_OPTIONS_VAR} (the variables named in PKG_OPTIONS_VAR)
+# These variables list the selected build options and
+# override any default options given in PKG_DEFAULT_OPTIONS.
+# If any of the options begin with a '-', then that option
+# is always removed from the selected build options, e.g.
+#
+# PKG_DEFAULT_OPTIONS= kerberos ldap sasl
+# PKG_OPTIONS_VAR= WIBBLE_OPTIONS
+# WIBBLE_OPTIONS= ${PKG_DEFAULT_OPTIONS} -sasl
+# # implies PKG_OPTIONS == "kerberos ldap"
+# or
+# PKG_OPTIONS_VAR= WIBBLE_OPTIONS
+# WIBBLE_OPTIONS= kerberos -ldap ldap
+# # implies PKG_OPTIONS == "kerberos"
+#
+# This variable should be set in /etc/mk.conf.
+#
+# PKG_FAIL_UNSUPPORTED_OPTIONS
+# If this is set to "yes", then the presence of unsupported
+# options in PKG_OPTIONS.<pkg> (see below) causes the build
+# to fail. Set this to "no" to silently ignore unsupported
+# options. Default: "yes".
+#
+# After including this file, the following variables are defined:
+#
+# PKG_OPTIONS
+# This is the list of the selected build options, properly
+# filtered to remove unsupported and duplicate options.
+#
+# Example usage:
+#
+# -------------8<-------------8<-------------8<-------------8<-------------
+# # Global and legacy options
+# .if defined(USE_OPENLDAP) || defined(USE_SASL2)
+# . if !defined(PKG_OPTIONS.wibble)
+# . if defined(USE_OPENLDAP) && !empty(USE_OPENLDAP:M[yY][eE][sS])
+# PKG_OPTIONS.wibble+= ldap
+# . endif
+# . if defined(USE_SASL2) && !empty(USE_SASL2:M[yY][eE][sS])
+# PKG_OPTIONS.wibble+= sasl
+# . endif
+# . endif
+# .endif
+#
+# PKG_OPTIONS_VAR= PKG_OPTIONS.wibble
+# PKG_SUPPORTED_OPTIONS= ldap sasl
+# .include "../../mk/bsd.options.mk"
+#
+# # Package-specific option-handling
+#
+# ###
+# ### LDAP support
+# ###
+# .if !empty(PKG_OPTIONS:Mldap)
+# . include "../../databases/openldap/buildlink3.mk"
+# CONFIGURE_ARGS+= --enable-ldap=${BUILDLINK_PREFIX.openldap}
+# .endif
+#
+# ###
+# ### SASL authentication
+# ###
+# .if !empty(PKG_OPTIONS:Msasl)
+# . include "../../security/cyrus-sasl2/buildlink3.mk"
+# CONFIGURE_ARGS+= --enable-sasl=${BUILDLINK_PREFIX.sasl}
+# .endif
+# -------------8<-------------8<-------------8<-------------8<-------------
+
+.include "../../mk/bsd.prefs.mk"
+
+# Check for variable definitions required before including this file.
+.if !defined(PKG_SUPPORTED_OPTIONS)
+PKG_FAIL_REASON+= "bsd.options.mk: PKG_SUPPORTED_OPTIONS is not defined."
+.endif
+.if !defined(PKG_OPTIONS_VAR)
+PKG_FAIL_REASON+= "bsd.options.mk: PKG_OPTIONS_VAR is not defined."
+.endif
+
+# If none of the variables listed in PKG_OPTIONS_VAR is defined, then use
+# the global options provided in ${PKG_DEFAULT_OPTIONS}.
+#
+_PKG_DEFAULT_OPTIONS= # empty
+.for _opt_ in ${PKG_DEFAULT_OPTIONS}
+. if !empty(PKG_SUPPORTED_OPTIONS:M${_opt_})
+_PKG_DEFAULT_OPTIONS+= ${_opt_}
+. endif
+.endfor
+.undef _opt_
+_PKG_OPTIONS_VAR= # empty
+.for _var_ in ${PKG_OPTIONS_VAR}
+. if defined(${_var_})
+_PKG_OPTIONS_VAR+= ${_var_}
+. endif
+.endfor
+.undef _var_
+.if empty(_PKG_OPTIONS_VAR)
+_PKG_OPTIONS_VAR= _PKG_DEFAULT_OPTIONS
+.endif
+
+# If this is set to "yes", then the presence of unsupported options in
+# the variable named by ${PKG_OPTIONS_VAR} causes the build to fail. Set
+# this to "no" to silently ignore unsupported options.
+#
+PKG_FAIL_UNSUPPORTED_OPTIONS?= yes
+
+# Separate out the selected options into "positive" and "negative" lists.
+_PKG_YES_OPTIONS= # contains the "positive" options
+.for _var_ in ${_PKG_OPTIONS_VAR}
+_PKG_YES_OPTIONS+= ${${_var_}:N-*}
+.endfor
+_PKG_NO_OPTIONS= # contains the "negative" options
+.for _var_ in ${_PKG_OPTIONS_VAR}
+_PKG_NO_OPTIONS+= ${${_var_}:M-*:S/^-//}
+.endfor
+.undef _var_
+
+# Filter out unsupported and duplicate build options and store the result
+# in PKG_OPTIONS. We keep all of the "positive" options first, then remove
+# all of the "negative" options last, so "negative" options always have
+# the strongest effect.
+#
+PKG_OPTIONS= # empty
+.for _opt_ in ${_PKG_YES_OPTIONS}
+. if empty(_PKG_NO_OPTIONS:M${_opt_}) && empty(PKG_OPTIONS:M${_opt_})
+. if !empty(PKG_SUPPORTED_OPTIONS:M${_opt_})
+PKG_OPTIONS+= ${_opt_}
+. elif !empty(PKG_FAIL_UNSUPPORTED_OPTIONS:M[yY][eE][sS])
+PKG_FAIL_REASON+= "\"${_opt_}\" is not a supported build option."
+. endif
+. endif
+.endfor
+
+# Store the result in the +BUILD_INFO file so we can query for the build
+# options using "pkg_info -Q PKG_OPTIONS <pkg>".
+#
+BUILD_DEFS+= PKG_OPTIONS
diff -r 50b45c9f7113 -r 696728d3da1d mk/bsd.prefs.mk
--- a/mk/bsd.prefs.mk Fri Jul 30 20:54:00 2004 +0000
+++ b/mk/bsd.prefs.mk Fri Jul 30 20:59:08 2004 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.prefs.mk,v 1.163 2004/07/30 07:38:01 xtraeme Exp $
+# $NetBSD: bsd.prefs.mk,v 1.164 2004/07/30 20:59:08 jlam Exp $
#
# Make file, included to get the site preferences, if any. Should
# only be included by package Makefiles before any .if defined()
@@ -298,9 +298,11 @@
. if empty(USE_INET6:M[Yy][Ee][Ss]) || defined(USE_SOCKS)
USE_INET6= NO
. else
+PKG_DEFAULT_OPTIONS+= inet6
USE_INET6= YES
. endif
.elif empty(_OPSYS_HAS_INET6:M[nN][oO]) && !defined(USE_SOCKS)
+PKG_DEFAULT_OPTIONS+= inet6
USE_INET6= YES
.else
USE_INET6= NO
@@ -496,4 +498,7 @@
#
WRKLOG?= ${WRKDIR}/.work.log
+PKG_DEFAULT_OPTIONS?= # empty
+PKG_OPTIONS?= # empty
+
.endif # BSD_PKG_MK
Home |
Main Index |
Thread Index |
Old Index