diff options
author | jlam <jlam> | 2004-07-30 20:59:08 +0000 |
---|---|---|
committer | jlam <jlam> | 2004-07-30 20:59:08 +0000 |
commit | 8a043543cf52e0083d9fc3a38961d8b67f639a04 (patch) | |
tree | 9f061491cb620a6c00daf6b2371800ffeb349343 /mk | |
parent | 7c73d14c894f7daae1a089b42e95e94c329b3f19 (diff) | |
download | pkgsrc-8a043543cf52e0083d9fc3a38961d8b67f639a04.tar.gz |
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 (limited to 'mk')
-rw-r--r-- | mk/bsd.options.mk | 164 | ||||
-rw-r--r-- | mk/bsd.prefs.mk | 7 |
2 files changed, 170 insertions, 1 deletions
diff --git a/mk/bsd.options.mk b/mk/bsd.options.mk new file mode 100644 index 00000000000..3ddc67f6272 --- /dev/null +++ b/mk/bsd.options.mk @@ -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 --git a/mk/bsd.prefs.mk b/mk/bsd.prefs.mk index 8f78a5a39a7..2adc58540cb 100644 --- a/mk/bsd.prefs.mk +++ b/mk/bsd.prefs.mk @@ -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 @@ PKG_INSTALLATION_TYPE?= none . 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 @@ WRKDIR?= ${BUILD_DIR}/${WRKDIR_BASENAME} # WRKLOG?= ${WRKDIR}/.work.log +PKG_DEFAULT_OPTIONS?= # empty +PKG_OPTIONS?= # empty + .endif # BSD_PKG_MK |