| 1 |
# $FreeBSD$ |
| 2 |
# |
| 3 |
# handle dependency on Kerberos port |
| 4 |
# |
| 5 |
# Feature: gssapi |
| 6 |
# Usage: USES=gssapi or USES=gssapi:ARGS |
| 7 |
# Valid ARGS: base (default, implicit), heimdal, mit. |
| 8 |
# "bootstrap" is a special prefix only for krb5 or heimdal ports. |
| 9 |
# ("bootstrap,mit") |
| 10 |
# flags is a special suffix to define CFLAGS, LDFLAGS, and LDADD. |
| 11 |
# ("base,flags") |
| 12 |
# |
| 13 |
# MAINTAINER: hrs@FreeBSD.org |
| 14 |
# |
| 15 |
# User defined variables: |
| 16 |
# HEIMDAL_HOME (default: ${LOCALBASE}) |
| 17 |
# KRB5_HOME (default: ${LOCALBASE}) |
| 18 |
# |
| 19 |
# Exported variables: |
| 20 |
# GSSAPIBASEDIR |
| 21 |
# GSSAPICPPFLAGS |
| 22 |
# GSSAPIINCDIR |
| 23 |
# GSSAPILDFLAGS |
| 24 |
# GSSAPILIBDIR |
| 25 |
# GSSAPILIBS |
| 26 |
# GSSAPI_CONFIGURE_ARGS |
| 27 |
# KRB5CONFIG |
| 28 |
# |
| 29 |
# Affected variables: |
| 30 |
# PREFIX (bootstrap) |
| 31 |
# CPPFLAGS (flags) |
| 32 |
# LDADD (flags) |
| 33 |
# LDCFLAGS |
| 34 |
# |
| 35 |
# Notes: |
| 36 |
# - GSSAPILIBDIR is prepended to "-Wl,-rpath," in LDFLAGS. |
| 37 |
# - bootstrap sets PREFIX based on KRB5_HOME or HEIMDAL_HOME. |
| 38 |
# |
| 39 |
# Usage: |
| 40 |
# |
| 41 |
# A typical example: |
| 42 |
# |
| 43 |
# OPTIONS_SINGLE= GSSAPI |
| 44 |
# OPTIONS_SINGLE_GSSAPI= GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE |
| 45 |
# |
| 46 |
# GSSAPI_BASE_USES= gssapi |
| 47 |
# GSSAPI_BASE_CONFIGURE_ON= \ |
| 48 |
# --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS} |
| 49 |
# |
| 50 |
# GSSAPI_HEIMDAL_USES=gssapi:heimdal |
| 51 |
# GSSAPI_HEIMDAL_CONFIGURE_ON= \ |
| 52 |
# --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS} |
| 53 |
# |
| 54 |
# GSSAPI_MIT_USES= gssapi:mit |
| 55 |
# GSSAPI_MIT_CONFIGURE_ON= \ |
| 56 |
# --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS} |
| 57 |
# |
| 58 |
# GSSAPI_NONE_CONFIGURE_ON= --without-gssapi |
| 59 |
# |
| 60 |
# If pathname is required for Kerberos implementation, use ${GSSAPIBASEDIR}. |
| 61 |
# |
| 62 |
# CPPFLAGS, LDFLAGS, and LDADD can automatically be set by using "flags" |
| 63 |
# modifier. It is useful if the port does not use a configure script. |
| 64 |
# |
| 65 |
# How To Debug: |
| 66 |
# |
| 67 |
# A port maintainer can try "make debug-krb" to confirm if building |
| 68 |
# a GSSAPI library works fine. It will perform a library link test and |
| 69 |
# show which library and what parameters will be used. |
| 70 |
# If it works but your port does not build, some parameters are missing in |
| 71 |
# the building phase of the port. If it does not work, the problem is in |
| 72 |
# the GSSAPI library, not your port. Please contact MAINTAINER of this file |
| 73 |
# in that case. |
| 74 |
# |
| 75 |
.if !defined(_INCLUDE_USES_GSSAPI_MK) |
| 76 |
_INCLUDE_USES_GSSAPI_MK= yes |
| 77 |
|
| 78 |
_HEIMDAL_DEPENDS=${GSSAPILIBDIR}/libgssapi.so:security/heimdal |
| 79 |
_MITKRB5_DEPENDS=${GSSAPILIBDIR}/libkrb5support.so:security/krb5 |
| 80 |
_HEADERS= sys/types.h sys/stat.h stdint.h |
| 81 |
|
| 82 |
.if empty(gssapi_ARGS) |
| 83 |
gssapi_ARGS= base |
| 84 |
.endif |
| 85 |
.for _A in ${gssapi_ARGS} |
| 86 |
_local:= ${_A} |
| 87 |
.if ${_local} == "base" |
| 88 |
. if ${SSL_DEFAULT} != base |
| 89 |
IGNORE= You are using OpenSSL from ports and have selected GSSAPI from base, please select another GSSAPI value |
| 90 |
. endif |
| 91 |
HEIMDAL_HOME= /usr |
| 92 |
GSSAPIBASEDIR= ${HEIMDAL_HOME} |
| 93 |
GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib |
| 94 |
GSSAPIINCDIR= ${GSSAPIBASEDIR}/include |
| 95 |
_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h |
| 96 |
GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}" |
| 97 |
GSSAPILIBS= -lkrb5 -lgssapi -lgssapi_krb5 |
| 98 |
GSSAPILDFLAGS= |
| 99 |
.elif ${_local} == "heimdal" |
| 100 |
HEIMDAL_HOME?= ${LOCALBASE} |
| 101 |
GSSAPIBASEDIR= ${HEIMDAL_HOME} |
| 102 |
GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib/heimdal |
| 103 |
GSSAPIINCDIR= ${GSSAPIBASEDIR}/include/heimdal |
| 104 |
_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h |
| 105 |
.if !defined(_KRB_BOOTSTRAP) |
| 106 |
BUILD_DEPENDS+= ${_HEIMDAL_DEPENDS} |
| 107 |
RUN_DEPENDS+= ${_HEIMDAL_DEPENDS} |
| 108 |
.else |
| 109 |
PREFIX= ${HEIMDAL_HOME} |
| 110 |
.endif |
| 111 |
GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}" |
| 112 |
GSSAPILIBS= -lkrb5 -lgssapi |
| 113 |
GSSAPILDFLAGS= -L"${GSSAPILIBDIR}" |
| 114 |
_RPATH= ${GSSAPILIBDIR} |
| 115 |
.elif ${_local} == "mit" |
| 116 |
KRB5_HOME?= ${LOCALBASE} |
| 117 |
GSSAPIBASEDIR= ${KRB5_HOME} |
| 118 |
GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib |
| 119 |
GSSAPIINCDIR= ${GSSAPIBASEDIR}/include |
| 120 |
_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h |
| 121 |
.if !defined(_KRB_BOOTSTRAP) |
| 122 |
BUILD_DEPENDS+= ${_MITKRB5_DEPENDS} |
| 123 |
RUN_DEPENDS+= ${_MITKRB5_DEPENDS} |
| 124 |
.else |
| 125 |
PREFIX= ${KRB5_HOME} |
| 126 |
.endif |
| 127 |
GSSAPILIBS= -lkrb5 -lgssapi_krb5 |
| 128 |
GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}" |
| 129 |
GSSAPILDFLAGS= -L"${GSSAPILIBDIR}" |
| 130 |
_RPATH= ${GSSAPILIBDIR} |
| 131 |
.elif ${_local} == "bootstrap" |
| 132 |
_KRB_BOOTSTRAP= 1 |
| 133 |
.elif ${_local} == "flags" |
| 134 |
_KRB_USEFLAGS= 1 |
| 135 |
.else |
| 136 |
IGNORE= USES=gssapi - invalid args: [${_local}] specified |
| 137 |
.endif |
| 138 |
.endfor |
| 139 |
|
| 140 |
KRB5CONFIG=${GSSAPIBASEDIR}/bin/krb5-config |
| 141 |
|
| 142 |
# Fix up -Wl,-rpath in LDFLAGS |
| 143 |
.if defined(_RPATH) && !empty(_RPATH) |
| 144 |
.if !empty(LDFLAGS:M-Wl,-rpath,*) |
| 145 |
.for F in ${LDFLAGS:M-Wl,-rpath,*} |
| 146 |
LDFLAGS:= -Wl,-rpath,${_RPATH}:${F:S/-Wl,-rpath,//} \ |
| 147 |
${LDFLAGS:N-Wl,-rpath,*} |
| 148 |
.endfor |
| 149 |
.else |
| 150 |
LDFLAGS+= -Wl,-rpath,${_RPATH}:/usr/lib |
| 151 |
.endif |
| 152 |
_DEBUG_KRB_RPATH= -Wl,-rpath,${_RPATH} |
| 153 |
.endif |
| 154 |
.if defined(_KRB_USEFLAGS) && !empty(_KRB_USEFLAGS) |
| 155 |
CPPFLAGS+= ${GSSAPICPPFLAGS} |
| 156 |
LDFLAGS+= ${GSSAPILDFLAGS} |
| 157 |
LDADD+= ${GSSAPILIBS} |
| 158 |
.endif |
| 159 |
GSSAPI_CONFIGURE_ARGS= \ |
| 160 |
CFLAGS="${GSSAPICPPFLAGS} ${CFLAGS}" \ |
| 161 |
LDFLAGS="${GSSAPILDFLAGS} ${LDFLAGS}" \ |
| 162 |
LIBS="${GSSAPILIBS} ${LIBS}" \ |
| 163 |
KRB5CONFIG="${KRB5CONFIG}" |
| 164 |
|
| 165 |
debug-krb: |
| 166 |
@(for I in ${_HEADERS}; do echo "#include <$$I>"; done; \ |
| 167 |
echo "int main() { gss_acquire_cred(0, 0, 0, 0, 0, 0, 0, 0);" \ |
| 168 |
"krb5_init_context(0);" \ |
| 169 |
"gsskrb5_register_acceptor_identity(0); return 0;}" \ |
| 170 |
) > /tmp/${.TARGET}.c |
| 171 |
${CC} ${CFLAGS} -o /tmp/${.TARGET}.x ${GSSAPICPPFLAGS} \ |
| 172 |
${GSSAPILIBS} ${GSSAPILDFLAGS} ${_DEBUG_KRB_RPATH} \ |
| 173 |
/tmp/${.TARGET}.c && \ |
| 174 |
ldd /tmp/${.TARGET}.x; \ |
| 175 |
${RM} /tmp/${.TARGET}.x |
| 176 |
@echo "PREFIX: ${PREFIX}" |
| 177 |
@echo "GSSAPIBASEDIR: ${GSSAPIBASEDIR}" |
| 178 |
@echo "GSSAPIINCDIR: ${GSSAPIINCDIR}" |
| 179 |
@echo "GSSAPILIBDIR: ${GSSAPILIBDIR}" |
| 180 |
@echo "GSSAPILIBS: ${GSSAPILIBS}" |
| 181 |
@echo "GSSAPICPPFLAGS: ${GSSAPICPPFLAGS}" |
| 182 |
@echo "GSSAPILDFLAGS: ${GSSAPILDFLAGS}" |
| 183 |
@echo "GSSAPI_CONFIGURE_ARGS: ${GSSAPI_CONFIGURE_ARGS}" |
| 184 |
@echo "KRB5CONFIG: ${KRB5CONFIG}" |
| 185 |
@echo "CFLAGS: ${CFLAGS}" |
| 186 |
@echo "LDFLAGS: ${LDFLAGS}" |
| 187 |
@echo "LDADD: ${LDADD}" |
| 188 |
.endif |