pkgsrc/mk/krb5.buildlink3.mk
jlam 7db11b582a Fix serious bug where BUILDLINK_PACKAGES wasn't being ordered properly
by moving the inclusion of buildlink3.mk files outside of the protected
region.  This bug would be seen by users that have set PREFER_PKGSRC
or PREFER_NATIVE to non-default values.

BUILDLINK_PACKAGES should be ordered so that for any package in the
list, that package doesn't depend on any packages to the left of it
in the list.  This ordering property is used to check for builtin
packages in the correct order.  The problem was that including a
buildlink3.mk file for <pkg> correctly ensured that <pkg> was removed
from BUILDLINK_PACKAGES and appended to the end.  However, since the
inclusion of any other buildlink3.mk files within that buildlink3.mk
was in a region that was protected against multiple inclusion, those
dependencies weren't also moved to the end of BUILDLINK_PACKAGES.
2004-03-18 09:12:08 +00:00

100 lines
2.7 KiB
Makefile

# $NetBSD: krb5.buildlink3.mk,v 1.6 2004/03/18 09:12:13 jlam Exp $
#
# This Makefile fragment is meant to be included by packages that
# require a Kerberos 5 implementation. krb5.buildlink3.mk will:
#
# * set KRB5BASE to the base directory of the Kerberos 5 files;
# * set KRB5_TYPE to the Kerberos 5 implementation used.
#
# There are two variables that can be used to tweak the selection of
# the Kerberos 5 implementation:
#
# KRB5_DEFAULT is a user-settable variable whose value is the default
# Kerberos 5 implementation to use.
#
# KRB5_ACCEPTED is a package-settable list of Kerberos 5 implementations
# that may be used by the package.
KRB5_BUILDLINK3_MK:= ${KRB5_BUILDLINK3_MK}+
.include "../../mk/bsd.prefs.mk"
.if !empty(KRB5_BUILDLINK3_MK:M+)
KRB5_DEFAULT?= # empty
KRB5_ACCEPTED?= ${_KRB5_PKGS}
# This is an exhaustive list of all of the Kerberos 5 implementations
# that may be used with krb5.buildlink3.mk, in order of precedence.
#
_KRB5_PKGS?= heimdal #mit-krb5
_KRB5_DEFAULT= ${KRB5_DEFAULT}
_KRB5_ACCEPTED= ${KRB5_ACCEPTED}
# Mark the acceptable Kerberos 5 packages and check which, if any, are
# already installed.
#
. for _krb5_ in ${_KRB5_ACCEPTED}
_KRB5_OK.${_krb5_}= yes
. if !defined(_KRB5_INSTALLED.${_krb5_})
_KRB5_INSTALLED.${_krb5_}!= \
if ${PKG_INFO} -qe ${_krb5_}; then \
${ECHO} "yes"; \
else \
${ECHO} "no"; \
fi
MAKEFLAGS+= _KRB5_INSTALLED.${_krb5_}=${_KRB5_INSTALLED.${_krb5_}}
. endif
. endfor
. if !defined(_KRB5_TYPE)
#
# Prefer the default one if it's accepted,...
#
. if !empty(_KRB5_DEFAULT) && \
defined(_KRB5_OK.${_KRB5_DEFAULT}) && \
!empty(_KRB5_OK.${_KRB5_DEFAULT}:M[yY][eE][sS])
_KRB5_TYPE= ${_KRB5_DEFAULT}
. endif
#
# ...otherwise, use one of the installed Kerberos 5 packages,...
#
. for _krb5_ in ${_KRB5_ACCEPTED}
. if !empty(_KRB5_INSTALLED.${_krb5_}:M[yY][eE][sS])
_KRB5_TYPE?= ${_krb5_}
. else
_KRB5_FIRSTACCEPTED?= ${_krb5_}
. endif
. endfor
#
# ...otherwise, just use the first accepted Kerberos 5 package.
#
. if defined(_KRB5_FIRSTACCEPTED)
_KRB5_TYPE?= ${_KRB5_FIRSTACCEPTED}
. endif
_KRB5_TYPE?= none
MAKEFLAGS+= _KRB5_TYPE=${_KRB5_TYPE}
. endif
KRB5_TYPE= ${_KRB5_TYPE}
BUILD_DEFS+= KRB5_TYPE
.endif # KRB5_BUILDLINK3_MK
.if ${KRB5_TYPE} == "none"
PKG_FAIL_REASON= "No acceptable Kerberos 5 implementation found."
.else
#
# Packages that use Kerberos are automatically categorized as restricted
# packages.
#
CRYPTO+= uses Kerberos encryption code
. if ${KRB5_TYPE} == "heimdal"
KRB5BASE= ${BUILDLINK_PREFIX.heimdal}
. include "../../security/heimdal/buildlink3.mk"
. elif ${KRB5_TYPE} == "mit-krb5"
KRB5BASE= ${BUILDLINK_PREFIX.mit-krb5}
. include "../../security/mit-krb5/buildlink3.mk"
. endif
.endif
BUILD_DEFS+= KRB5BASE