1PORTNAME=		krb5
2PORTVERSION=		1.21.3
3CATEGORIES=		security
4MASTER_SITES=		http://web.mit.edu/kerberos/dist/${PORTNAME}/${PORTVERSION:C/^[0-9]*\.[0-9]*/&X/:C/X\.[0-9]*$//:C/X//}/
5.if !defined(MASTERDIR)
6PKGNAME_X=		-${FLAVOR:S/default//}-121
7.else
8PKGNAME_X=		-${FLAVOR:S/default//}
9.endif
10PKGNAMESUFFIX=		${PKGNAME_X:S/--/-/:C/-$//}
11
12PATCH_SITES=		http://web.mit.edu/kerberos/advisories/
13PATCH_DIST_STRIP=	-p2
14
15MAINTAINER=		ports@MidnightBSD.org
16COMMENT=		MIT implementation of RFC 4120 network authentication service
17WWW=			https://web.mit.edu/kerberos/
18
19LICENSE=		mit
20
21CONFLICTS=		heimdal krb5 krb5-11* krb5-120
22CONFLICTS_BUILD=	boringssl
23
24KERBEROSV_URL=		http://web.mit.edu/kerberos/
25USES=			autoreconf:2.69 compiler:c++11-lang cpe gmake gettext-runtime \
26			gssapi:bootstrap,mit libtool:build localbase \
27			perl5 pkgconfig ssl
28USE_CSTD=		gnu99
29USE_LDCONFIG=		yes
30USE_PERL5=		build
31GNU_CONFIGURE=		yes
32CONFIGURE_ARGS?=	--enable-shared --without-system-verto \
33			--disable-rpath
34GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
35CONFIGURE_ENV=		INSTALL="${INSTALL}" INSTALL_LIB="${INSTALL_LIB}" YACC="${YACC}"
36CONFIGURE_TARGET=	${ARCH}-portbld-freebsd11.4
37MAKE_ARGS=		INSTALL="${INSTALL}" INSTALL_LIB="${INSTALL_LIB}"
38
39CPE_VENDOR=		mit
40CPE_VERSION=		5-${PORTVERSION}
41CPE_PRODUCT=		kerberos
42
43FLAVORS=		default ldap
44
45OPTIONS_DEFINE=		EXAMPLES NLS KRB5_PDF KRB5_HTML DNS_FOR_REALM LDAP LMDB
46OPTIONS_DEFAULT=	KRB5_PDF KRB5_HTML READLINE
47OPTIONS_RADIO=		CMD_LINE_EDITING
48OPTIONS_RADIO_CMD_LINE_EDITING=	READLINE LIBEDIT LIBEDIT_BASE
49CMD_LINE_EDITING_DESC=	Command line editing for kadmin and ktutil
50KRB5_PDF_DESC=		Install krb5 PDF documentation
51KRB5_HTML_DESC=		Install krb5 HTML documentation
52DNS_FOR_REALM_DESC=	Enable DNS lookups for Kerberos realm names
53DNS_FOR_REALM_CONFIGURE_ENABLE=	dns-for-realm
54LDAP=			Enable LDAP support
55LDAP_USE=		OPENLDAP=yes LDAP=yes
56LDAP_CONFIGURE_WITH=	ldap
57LMDB_DESC=		OpenLDAP Lightning Memory-Mapped Database support
58LMDB_CONFIGURE_WITH=	lmdb
59LMDB_LIB_DEPENDS=	liblmdb.so:databases/lmdb
60LMDB_IMPLIES=		LDAP
61NLS_USES=		gettext
62NLS_CONFIGURE_OFF=	--disable-nls
63READLINE_USES=		readline
64READLINE_CONFIGURE_WITH=readline
65LIBEDIT_USES=		libedit
66LIBEDIT_CONFIGURE_WITH=	libedit
67LIBEDIT_BASE_CONFIGURE_WITH=	libedit
68LIBEDIT_BASE_DESC=	Use libedit in BSD base
69
70.if ${FLAVOR:U} == ldap
71OPTIONS_DEFAULT+=	LDAP LMDB
72USE_OPENLDAP=	yes
73LDAP=YES
74.endif
75
76.if defined(KRB5_HOME)
77PREFIX=			${KRB5_HOME}
78.endif
79.if !defined(KRB5_LOCALSTATEDIR)
80KRB5_LOCALSTATEDIR=	"${PREFIX}/var"
81.endif
82.if !defined(KRB5_RUNSTATEDIR)
83KRB5_RUNSTATEDIR=	"${PREFIX}/var/run"
84.endif
85# krb5 1.21 derives runstatedir from localstatedir but does not accept
86# --runstatedir as a configure option.
87CONFIGURE_ARGS+=	--localstatedir="${KRB5_LOCALSTATEDIR}"
88PLIST_SUB+=		KRB5_LOCALSTATEDIR=${KRB5_LOCALSTATEDIR}
89PLIST_SUB+=		KRB5_RUNSTATEDIR=${KRB5_RUNSTATEDIR}
90CPPFLAGS+=		-I${OPENSSLINC}
91LDFLAGS+=		-L${OPENSSLLIB}
92
93USE_RC_SUBR=		kpropd
94OPTIONS_SUB=		yes
95WRKSRC_SUBDIR=		src
96PORTEXAMPLES=		kdc.conf krb5.conf services.append
97
98.include <bsd.mport.options.mk>
99
100# Fix up -Wl,-rpath in LDFLAGS
101.if !empty(KRB5_HOME)
102_RPATH=	${KRB5_HOME}/lib:
103.else
104_RPATH=	${LOCALBASE}/lib:
105.endif
106.if !empty(LDFLAGS:M-Wl,-rpath,*)
107.for F in ${LDFLAGS:M-Wl,-rpath,*}
108LDFLAGS:=	-Wl,-rpath,${_RPATH}${F:S/-Wl,-rpath,//} \
109		${LDFLAGS:N-Wl,-rpath,*}
110.endfor
111.endif
112
113.if defined(KRB5_HOME) && ${KRB5_HOME} != ${LOCALBASE}
114BROKEN=			LIB_DEPENDS when using KRB5_HOME is broken
115.endif
116
117.if defined(PROGRAM_TRANSFORM_NAME) && ${PROGRAM_TRANSFORM_NAME} != ""
118CONFIGURE_ARGS+=	--program-transform-name="${PROGRAM_TRANSFORM_NAME}"
119.endif
120
121HTML_DOC_DIR=		${WRKDIR}/${PORTNAME}-${PORTVERSION}/doc/html
122PDF_DOC_DIR=		${WRKDIR}/${PORTNAME}-${PORTVERSION}/doc/pdf
123
124.include <bsd.port.pre.mk>
125
126post-install:
127	@${MKDIR} ${PREFIX}/share/doc/krb5
128	@${SED} "s|%%PREFIX%%|${TRUE_PREFIX}|" ${FILESDIR}/kdc.in > ${PREFIX}/sbin/kdc; \
129	${CHMOD} +x ${PREFIX}/sbin/kdc
130# html documentation
131.if ${PORT_OPTIONS:MKRB5_PDF}
132	pdf_files=`${FIND} ${PDF_DOC_DIR} ! -type d`
133	pdf_dirs=`${FIND} ${PDF_DOC_DIR} -type d`
134	for i in $${pdf_dirs}; do \
135		${MKDIR} ${PREFIX}/share/doc/krb5/$${i}; \
136	done; \
137	for i in $${pdf_files}; do \
138		${INSTALL_DATA} $${pdf} ${PREFIX}/share/doc/krb5/$${i}; \
139		${ECHO_CMD} share/doc/krb5/$${i} >> ${TMPPLIST}; \
140	done
141.endif
142.if ${PORT_OPTIONS:MKRB5_HTML}
143	html_files=`${FIND} ${HTML_DOC_DIR} ! -type d | ${GREP} -v /_sources`
144	html_dirs=`${FIND} ${HTML_DOC_DIR} -type d | ${GREP} -v /_sources`
145	for i in $${html_dirs}; do \
146		${MKDIR} ${PREFIX}/share/doc/krb5/$${i}; \
147	done; \
148	for i in $${html_files}; do \
149		${INSTALL_DATA} $${i} ${PREFIX}/share/doc/krb5/$${i}; \
150		${ECHO_CMD} share/doc/krb5/$${i} >> ${TMPPLIST}; \
151	done
152.endif
153.if ${PORT_OPTIONS:MKRB5_PDF}
154	for i in $${pdf_dirs}; do \
155		${ECHO_CMD} @dir share/doc/krb5/$${i} >> ${TMPPLIST}; \
156	done | ${TAIL} -r >> ${TMPPLIST}
157.endif
158.if ${PORT_OPTIONS:MKRB5_HTML}
159	for i in $${html_dirs}; do \
160		${ECHO_CMD} @dir share/doc/krb5/$${i} >> ${TMPPLIST}; \
161	done | ${TAIL} -r >> ${TMPPLIST}
162.endif
163	${ECHO_CMD} @dir share/doc/krb5 >> ${TMPPLIST}
164
165post-install-LDAP-on:
166	${MKDIR} ${FAKE_DESTDIR}${DATADIR}
167	${INSTALL_DATA} ${WRKSRC}/plugins/kdb/ldap/libkdb_ldap/kerberos.schema \
168		${FAKE_DESTDIR}${DATADIR}
169	${INSTALL_DATA} ${WRKSRC}/plugins/kdb/ldap/libkdb_ldap/kerberos.ldif \
170		${FAKE_DESTDIR}${DATADIR}
171
172.include <bsd.port.post.mk>
173