Subject: CVS commit: pkgsrc/mk
To: None <pkgsrc-changes@NetBSD.org>
From: Johnny C. Lam <jlam@netbsd.org>
List: pkgsrc-changes
Date: 07/30/2004 20:59:08
Module Name:	pkgsrc
Committed By:	jlam
Date:		Fri Jul 30 20:59:08 UTC 2004

Modified Files:
	pkgsrc/mk: bsd.prefs.mk
Added Files:
	pkgsrc/mk: bsd.options.mk

Log Message:
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<-------------


To generate a diff of this commit:
cvs rdiff -r0 -r1.1 pkgsrc/mk/bsd.options.mk
cvs rdiff -r1.163 -r1.164 pkgsrc/mk/bsd.prefs.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.