mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-13 03:03:15 +00:00
d99d9cfff0
Spotted by: ume
181 lines
5.3 KiB
Makefile
181 lines
5.3 KiB
Makefile
# $FreeBSD$
|
|
#
|
|
# handle dependency on Kerberos port
|
|
#
|
|
# Feature: gssapi
|
|
# Usage: USES=gssapi or USES=gssapi:ARGS
|
|
# Valid ARGS: base (default, implicit), heimdal, mit.
|
|
# "bootstrap" is a special prefix only for krb5 or heimdal ports.
|
|
# ("bootstrap,mit")
|
|
# flags is a special suffix to define CFLAGS, LDFLAGS, and LDADD.
|
|
# ("base,flags")
|
|
#
|
|
# MAINTAINER: hrs@FreeBSD.org
|
|
#
|
|
# User defined variables:
|
|
# HEIMDAL_HOME (default: ${LOCALBASE})
|
|
# KRB5_HOME (default: ${LOCALBASE})
|
|
#
|
|
# Exported variables:
|
|
# GSSAPIBASEDIR
|
|
# GSSAPICPPFLAGS
|
|
# GSSAPIINCDIR
|
|
# GSSAPILDFLAGS
|
|
# GSSAPILIBDIR
|
|
# GSSAPILIBS
|
|
# GSSAPI_CONFIGURE_ARGS
|
|
#
|
|
# Affected variables:
|
|
# PREFIX (bootstrap)
|
|
# CPPFLAGS (flags)
|
|
# LDADD (flags)
|
|
# LDCFLAGS
|
|
#
|
|
# Notes:
|
|
# - GSSAPILIBDIR is prepended to "-Wl,-rpath," in LDFLAGS.
|
|
# - bootstrap sets PREFIX based on KRB5_HOME or HEIMDAL_HOME.
|
|
#
|
|
# Usage:
|
|
#
|
|
# A typical example:
|
|
#
|
|
# OPTIONS_SINGLE= GSSAPI
|
|
# OPTIONS_SINGLE_GSSAPI= GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE
|
|
#
|
|
# GSSAPI_BASE_USES= gssapi
|
|
# GSSAPI_BASE_CONFIGURE_ON= \
|
|
# --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
|
|
#
|
|
# GSSAPI_HEIMDAL_USES=gssapi:heimdal
|
|
# GSSAPI_HEIMDAL_CONFIGURE_ON= \
|
|
# --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
|
|
#
|
|
# GSSAPI_MIT_USES= gssapi:mit
|
|
# GSSAPI_MIT_CONFIGURE_ON= \
|
|
# --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
|
|
#
|
|
# GSSAPI_NONE_CONFIGURE_ON= --without-gssapi
|
|
#
|
|
# If pathname is required for Kerberos implementation, use ${GSSAPIBASEDIR}.
|
|
#
|
|
# CPPFLAGS, LDFLAGS, and LDADD can automatically be set by using "flags"
|
|
# modifier. It is useful if the port does not use a configure script.
|
|
#
|
|
# How To Debug:
|
|
#
|
|
# A port maintainer can try "make debug-krb" to confirm if building
|
|
# a GSSAPI library works fine. It will perform a library link test and
|
|
# show which library and what parameters will be used.
|
|
# If it works but your port does not build, some parameters are missing in
|
|
# the building phase of the port. If it does not work, the problem is in
|
|
# the GSSAPI library, not your port. Please contact MAINTAINER of this file
|
|
# in that case.
|
|
#
|
|
.if !defined(_INCLUDE_USES_GSSAPI_MK)
|
|
_INCLUDE_USES_GSSAPI_MK= yes
|
|
|
|
_HEIMDAL_DEPENDS=${GSSAPILIBDIR}/libgssapi.so:${PORTSDIR}/security/heimdal
|
|
_MITKRB5_DEPENDS=${GSSAPILIBDIR}/libkrb5support.so:${PORTSDIR}/security/krb5
|
|
_HEADERS= sys/types.h sys/stat.h stdint.h
|
|
|
|
.if empty(gssapi_ARGS)
|
|
gssapi_ARGS= base
|
|
.endif
|
|
.for _A in ${gssapi_ARGS}
|
|
_local:= ${_A}
|
|
.if ${_local} == "base"
|
|
HEIMDAL_HOME= /usr
|
|
GSSAPIBASEDIR= ${HEIMDAL_HOME}
|
|
GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib
|
|
GSSAPIINCDIR= ${GSSAPIBASEDIR}/include
|
|
_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h
|
|
GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}"
|
|
GSSAPILIBS= -lkrb5 -lgssapi -lgssapi_krb5
|
|
GSSAPILDFLAGS= -L"${GSSAPILIBDIR}"
|
|
.elif ${_local} == "heimdal"
|
|
HEIMDAL_HOME?= ${LOCALBASE}
|
|
GSSAPIBASEDIR= ${HEIMDAL_HOME}
|
|
GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib/heimdal
|
|
GSSAPIINCDIR= ${GSSAPIBASEDIR}/include/heimdal
|
|
_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h
|
|
.if !defined(_KRB_BOOTSTRAP)
|
|
BUILD_DEPENDS+= ${_HEIMDAL_DEPENDS}
|
|
RUN_DEPENDS+= ${_HEIMDAL_DEPENDS}
|
|
.else
|
|
PREFIX= ${HEIMDAL_HOME}
|
|
.endif
|
|
GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}"
|
|
GSSAPILIBS= -lkrb5 -lgssapi
|
|
GSSAPILDFLAGS= -L"${GSSAPILIBDIR}"
|
|
_RPATH= ${GSSAPILIBDIR}
|
|
.elif ${_local} == "mit"
|
|
KRB5_HOME?= ${LOCALBASE}
|
|
GSSAPIBASEDIR= ${KRB5_HOME}
|
|
GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib
|
|
GSSAPIINCDIR= ${GSSAPIBASEDIR}/include
|
|
_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h
|
|
.if !defined(_KRB_BOOTSTRAP)
|
|
BUILD_DEPENDS+= ${_MITKRB5_DEPENDS}
|
|
RUN_DEPENDS+= ${_MITKRB5_DEPENDS}
|
|
.else
|
|
PREFIX= ${KRB5_HOME}
|
|
.endif
|
|
GSSAPILIBS= -lkrb5 -lgssapi_krb5
|
|
GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}"
|
|
GSSAPILDFLAGS= -L"${GSSAPILIBDIR}"
|
|
_RPATH= ${GSSAPILIBDIR}
|
|
.elif ${_local} == "bootstrap"
|
|
_KRB_BOOTSTRAP= 1
|
|
.elif ${_local} == "flags"
|
|
_KRB_USEFLAGS= 1
|
|
.else
|
|
IGNORE= USES=gssapi - invalid args: [${_local}] specified
|
|
.endif
|
|
.endfor
|
|
|
|
# Fix up -Wl,-rpath in LDFLAGS
|
|
.if defined(_RPATH) && !empty(_RPATH)
|
|
.if !empty(LDFLAGS:M-Wl,-rpath,*)
|
|
.for F in ${LDFLAGS:M-Wl,-rpath,*}
|
|
LDFLAGS:= -Wl,-rpath,${_RPATH}:${F:S/-Wl,-rpath,//} \
|
|
${LDFLAGS:N-Wl,-rpath,*}
|
|
.endfor
|
|
.else
|
|
LDFLAGS+= -Wl,-rpath,${_RPATH}:/usr/lib
|
|
.endif
|
|
_DEBUG_KRB_RPATH= -Wl,-rpath,${_RPATH}
|
|
.endif
|
|
.if defined(_KRB_USEFLAGS) && !empty(_KRB_USEFLAGS)
|
|
CPPFLAGS+= ${GSSAPICPPFLAGS}
|
|
LDFLAGS+= ${GSSAPILDFLAGS}
|
|
LDADD+= ${GSSAPILIBS}
|
|
.endif
|
|
GSSAPI_CONFIGURE_ARGS= \
|
|
CFLAGS="${GSSAPICPPFLAGS} ${CFLAGS}" \
|
|
LDFLAGS="${GSSAPILDFLAGS} ${LDFLAGS}" \
|
|
LIBS="${GSSAPILIBS} ${LIBS}"
|
|
|
|
debug-krb:
|
|
@(for I in ${_HEADERS}; do echo "#include <$$I>"; done; \
|
|
echo "int main() { gss_acquire_cred(0, 0, 0, 0, 0, 0, 0, 0);" \
|
|
"krb5_init_context(0);" \
|
|
"gsskrb5_register_acceptor_identity(0); return 0;}" \
|
|
) > /tmp/${.TARGET}.c
|
|
${CC} ${CFLAGS} -o /tmp/${.TARGET}.x ${GSSAPICPPFLAGS} \
|
|
${GSSAPILIBS} ${GSSAPILDFLAGS} ${_DEBUG_KRB_RPATH} \
|
|
/tmp/${.TARGET}.c && \
|
|
ldd /tmp/${.TARGET}.x; \
|
|
rm -f /tmp/${.TARGET}.x
|
|
@echo "PREFIX: ${PREFIX}"
|
|
@echo "GSSAPIBASEDIR: ${GSSAPIBASEDIR}"
|
|
@echo "GSSAPIINCDIR: ${GSSAPIINCDIR}"
|
|
@echo "GSSAPILIBDIR: ${GSSAPILIBDIR}"
|
|
@echo "GSSAPILIBS: ${GSSAPILIBS}"
|
|
@echo "GSSAPICPPFLAGS: ${GSSAPICPPFLAGS}"
|
|
@echo "GSSAPILDFLAGS: ${GSSAPILDFLAGS}"
|
|
@echo "GSSAPI_CONFIGURE_ARGS: ${GSSAPI_CONFIGURE_ARGS}"
|
|
@echo "CFLAGS: ${CFLAGS}"
|
|
@echo "LDFLAGS: ${LDFLAGS}"
|
|
@echo "LDADD: ${LDADD}"
|
|
.endif
|