From owner-svn-ports-head@FreeBSD.ORG Tue Jun 17 15:00:22 2014 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5E22E928; Tue, 17 Jun 2014 15:00:22 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3EAD22879; Tue, 17 Jun 2014 15:00:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s5HF0MPS025469; Tue, 17 Jun 2014 15:00:22 GMT (envelope-from mat@svn.freebsd.org) Received: (from mat@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s5HF0M5m025468; Tue, 17 Jun 2014 15:00:22 GMT (envelope-from mat@svn.freebsd.org) Message-Id: <201406171500.s5HF0M5m025468@svn.freebsd.org> From: Mathieu Arnold Date: Tue, 17 Jun 2014 15:00:22 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r358126 - head/Mk/Uses X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jun 2014 15:00:22 -0000 Author: mat Date: Tue Jun 17 15:00:21 2014 New Revision: 358126 URL: http://svnweb.freebsd.org/changeset/ports/358126 QAT: https://qat.redports.org/buildarchive/r358126/ Log: Introduce Uses/gssapi.mk to help handle dependencies on Kerberos in a consistent way. Submitted by: hrs With hat: portmgr Sponsored by: Absolight Added: head/Mk/Uses/gssapi.mk (contents, props changed) Added: head/Mk/Uses/gssapi.mk ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/Mk/Uses/gssapi.mk Tue Jun 17 15:00:21 2014 (r358126) @@ -0,0 +1,174 @@ +# $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) +# CFLAGS (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}. +# +# CFLAGS, 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 + +GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib +GSSAPIINCDIR= ${GSSAPIBASEDIR}/include + +_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 + +gssapi_ARGS?= base +.for _A in ${gssapi_ARGS:S/,/ /g} +.if ${_A} == "base" +HEIMDAL_HOME= /usr +GSSAPIBASEDIR= ${HEIMDAL_HOME} +_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h +GSSAPICPPFLAGS= -I${GSSAPIINCDIR} +GSSAPILIBS= -lkrb5 -lgssapi -lgssapi_krb5 +GSSAPILDFLAGS= -L"${GSSAPILIBDIR}" +.elif ${_A} == "heimdal" +HEIMDAL_HOME?= ${LOCALBASE} +GSSAPIBASEDIR= ${HEIMDAL_HOME} +.if !defined(_KRB_BOOTSTRAP) +BUILD_DEPENDS+= ${_HEIMDAL_DEPENDS} +RUN_DEPENDS+= ${_HEIMDAL_DEPENDS} +_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h +.else +PREFIX= ${HEIMDAL_HOME} +.endif +GSSAPICPPFLAGS= -I${GSSAPIINCDIR} +GSSAPILIBS= -lkrb5 -lgssapi +GSSAPILDFLAGS= -L"${GSSAPILIBDIR}" +_RPATH= ${GSSAPILIBDIR} +.elif ${_A} == "mit" +KRB5_HOME?= ${LOCALBASE} +GSSAPIBASEDIR= ${KRB5_HOME} +.if !defined(_KRB_BOOTSTRAP) +BUILD_DEPENDS+= ${_MITKRB5_DEPENDS} +RUN_DEPENDS+= ${_MITKRB5_DEPENDS} +_HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h +.else +PREFIX= ${KRB5_HOME} +.endif +GSSAPILIBS= -lkrb5 -lgssapi_krb5 +GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}" +GSSAPILDFLAGS= -L"${GSSAPILIBDIR}" +_RPATH= ${GSSAPILIBDIR} +.elif ${_A} == "bootstrap" +_KRB_BOOTSTRAP= 1 +.elif ${_A} == "flags" +_KRB_USEFLAGS= 1 +.else +IGNORE= USES=gssapi - invalid args: [${_A}] 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) +CFLAGS+= ${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