# Created by: Xin LI <delphij@FreeBSD.org>
# $FreeBSD$

PORTNAME=		openldap
DISTVERSION=		2.4.57
PORTREVISION=		${OPENLDAP_PORTREVISION}
CATEGORIES=		net databases
MASTER_SITES=		ftp://ftp.OpenLDAP.org/pub/OpenLDAP/%SUBDIR%/ \
			http://repository.linagora.org/OpenLDAP/openldap-release/ \
			ftp://gd.tuwien.ac.at/infosys/network/OpenLDAP/%SUBDIR%/ \
			ftp://ftp.ntua.gr/mirror/OpenLDAP/%SUBDIR%/ \
			ftp://ftp.u-aizu.ac.jp/pub/net/openldap/%SUBDIR%/ \
			ftp://ftp.nl.uu.net/pub/unix/db/openldap/%SUBDIR%/ \
			ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/%SUBDIR%/ \
			http://www.openldap.org/software/download/OpenLDAP/%SUBDIR%/
MASTER_SITE_SUBDIR=	openldap-release
.if defined(CLIENT_ONLY)
.if ${CLIENT_ONLY} == sasl
PKGNAMESUFFIX=		-sasl-client
.else
PKGNAMESUFFIX=		-client
.endif
.else
PKGNAMESUFFIX?=		-server
.endif

MAINTAINER=		delphij@FreeBSD.org
.if defined(CLIENT_ONLY)
.if ${CLIENT_ONLY} == sasl
COMMENT=		Open source LDAP client implementation with SASL2 support
.else
COMMENT=		Open source LDAP client implementation
.endif
.else
COMMENT=		Open source LDAP server implementation
.endif

LICENSE=		OPENLDAP
LICENSE_NAME=		OpenLDAP Public License
LICENSE_FILE=		${WRKSRC}/LICENSE
LICENSE_PERMS=		dist-mirror dist-sell pkg-mirror pkg-sell auto-accept

.if defined(CLIENT_ONLY)
.if ${CLIENT_ONLY} == sasl
CONFLICTS=		${PKGNAMEPREFIX}${PORTNAME}-client-2.* \
			${PKGNAMEPREFIX}${PORTNAME}-sasl-client-2.[0-3].*
.else
CONFLICTS=		${PKGNAMEPREFIX}${PORTNAME}-client-2.[0-3].* \
			${PKGNAMEPREFIX}${PORTNAME}-sasl-client-2.*
.endif
.endif

GNU_CONFIGURE=		yes
# :keepla because port uses lt_dlopen
USES=			cpe libtool:keepla ssl tar:tgz
.if !defined(CLIENT_ONLY)
USERS=			ldap
GROUPS=			ldap
LDAP_USER?=		ldap
LDAP_GROUP?=		ldap
.endif

WANT_OPENLDAP_VER?=	24
.if ${WANT_OPENLDAP_VER} != 24
BROKEN=			incompatible OpenLDAP version: ${WANT_OPENLDAP_VER}
.endif

PORTREVISION_CLIENT=	0
PORTREVISION_SERVER=	0
OPENLDAP_SHLIB_MAJOR=	2
OPENLDAP_SHLIB_MINOR=	11.5
OPENLDAP_MAJOR=		${DISTVERSION:R}

OPTIONS_DEFINE=		DEBUG FETCH GSSAPI

FETCH_DESC=		Enable fetch(3) support
GSSAPI_DESC=		With GSSAPI support (implies SASL support)

.if defined(CLIENT_ONLY)
OPTIONS_DEFINE+=	DOCS
.else
OPTIONS_DEFINE+=	DYNACL ACI BDB MDB DNSSRV PASSWD PERL RELAY SHELL
OPTIONS_DEFINE+=	SOCK ODBC RLOOKUPS SLP SLAPI TCP_WRAPPERS
OPTIONS_DEFINE+=	ACCESSLOG AUDITLOG COLLECT CONSTRAINT DDS
OPTIONS_DEFINE+=	DEREF DYNGROUP DYNLIST MEMBEROF PPOLICY PROXYCACHE
OPTIONS_DEFINE+=	REFINT RETCODE RWM SEQMOD SSSVLV SYNCPROV TRANSLUCENT
OPTIONS_DEFINE+=	UNIQUE VALSORT SMBPWD SHA2 DYNAMIC_BACKENDS SASL
OPTIONS_DEFINE+=	LMPASSWD
OPTIONS_DEFINE+=	PBKDF2
OPTIONS_DEFINE+=	OUTLOOK
OPTIONS_DEFINE+=	LASTBIND
OPTIONS_DEFINE+=	KQUEUE

OPTIONS_DEFAULT=	MDB SYNCPROV DYNAMIC_BACKENDS

DYNACL_DESC=		Run-time loadable ACL (experimental)
ACI_DESC=		Per-object ACI (experimental)
BDB_DESC=		With BerkeleyDB backend (DEPRECATED)
MDB_DESC=		With Memory-Mapped DB backend
DNSSRV_DESC=		With Dnssrv backend
PASSWD_DESC=		With Passwd backend
PERL_DESC=		With Perl backend
RELAY_DESC=		With Relay backend
SHELL_DESC=		With Shell backend (disables threading)
SOCK_DESC=		With Sock backend
ODBC_DESC=		With SQL backend
RLOOKUPS_DESC=		With reverse lookups of client hostnames
SLP_DESC=		With SLPv2 (RFC 2608) support
SLAPI_DESC=		With Netscape SLAPI plugin API (experimental)
TCP_WRAPPERS_DESC=	With tcp wrapper support
ACCESSLOG_DESC=		With In-Directory Access Logging overlay
AUDITLOG_DESC=		With Audit Logging overlay
COLLECT_DESC=		With Collect overy Services overlay
CONSTRAINT_DESC=	With Attribute Constraint overlay
DDS_DESC=		With Dynamic Directory Services overlay
DEREF_DESC=		With Dereference overlay
DYNGROUP_DESC=		With Dynamic Group overlay
DYNLIST_DESC=		With Dynamic List overlay
MEMBEROF_DESC=		With Reverse Group Membership overlay
PPOLICY_DESC=		With Password Policy overlay
PROXYCACHE_DESC=	With Proxy Cache overlay
REFINT_DESC=		With Referential Integrity overlay
RETCODE_DESC=		With Return Code testing overlay
RWM_DESC=		With Rewrite/Remap overlay
SASL_DESC=		With (Cyrus) SASL2 support
SEQMOD_DESC=		With Sequential Modify overlay
SSSVLV_DESC=		With ServerSideSort/VLV overlay
SYNCPROV_DESC=		With Syncrepl Provider overlay
TRANSLUCENT_DESC=	With Translucent Proxy overlay
UNIQUE_DESC=		With attribute Uniqueness overlay
VALSORT_DESC=		With Value Sorting overlay
SMBPWD_DESC=		With Samba Password hashes overlay
SHA2_DESC=		With SHA2 Password hashes overlay
LMPASSWD_DESC=		With LM hash password support (DEPRECATED)
PBKDF2_DESC=		With PBKDF2 hash password support
DYNAMIC_BACKENDS_DESC=	Build dynamic backends
OUTLOOK_DESC=		Force caseIgnoreOrderingMatch on name attribute (experimental)
LASTBIND_DESC=		With lastbind overlay
KQUEUE_DESC=		With kqueue support (experimental)
.endif

.if defined(CLIENT_ONLY)
OPENLDAP_PORTREVISION=	${PORTREVISION_CLIENT}
OPENLDAP_PKGFILESUFX=	.client
.else
OPENLDAP_PORTREVISION=	${PORTREVISION_SERVER}
OPENLDAP_PKGFILESUFX=
.endif

CONFIGURE_SED=		-e 's,uuid/uuid.h,xxuuid/uuid.h,g'

.include <bsd.port.options.mk>

.if defined(CLIENT_ONLY)
PORTDOCS=		CHANGES drafts rfc

.if ${CLIENT_ONLY} == sasl
PORT_OPTIONS+=	SASL
.endif
.if defined(USE_OPENLDAP)
BROKEN=			you have USE_OPENLDAP variable defined either in environment or in make(1) arguments; please undefine and try again
.endif
.else
USE_OPENLDAP=		yes
WANT_OPENLDAP_VER=	24

LIB_DEPENDS+=		libicudata.so:devel/icu

.if ${PORT_OPTIONS:MGSSAPI} && empty(PORT_OPTIONS:MSASL)
PORT_OPTIONS+=	SASL
.endif

.if ${PORT_OPTIONS:MSASL}
WANT_OPENLDAP_SASL=	yes
CONFLICTS=		${PKGNAMEPREFIX}${PORTNAME}-client-2.*
PKGNAMESUFFIX=		-sasl-server
.if ${PORT_OPTIONS:MGSSAPI}
RUN_DEPENDS+=		cyrus-sasl-gssapi>0:security/cyrus-sasl2-gssapi
.endif
.else
CONFLICTS=		${PKGNAMEPREFIX}${PORTNAME}-sasl-client-2.*
.endif

.endif

DESCR=			${PKGDIR}/pkg-descr${OPENLDAP_PKGFILESUFX}
PLIST=			${PKGDIR}/pkg-plist${OPENLDAP_PKGFILESUFX}

SCHEMATA=		collective corba core cosine duaconf dyngroup \
			inetorgperson java misc \
			nis openldap pmi ppolicy

LDAP_RUN_DIR?=		/var/run/openldap
LOCALSTATEDIR?=		/var/db
DATABASEDIR?=		${LOCALSTATEDIR}/openldap-data

SUB_LIST+=		LDAP_RUN_DIR=${LDAP_RUN_DIR} \
			LDAP_USER=${LDAP_USER} \
			LDAP_GROUP=${LDAP_GROUP} \
			DATABASEDIR=${DATABASEDIR} \
			PKGNAME=${PKGNAME}

CONFIGURE_ARGS=		--with-threads=posix \
			--with-tls=openssl \
			--disable-dependency-tracking \
			--enable-dynamic

.if ${PORT_OPTIONS:MSASL}
LIB_DEPENDS+=		libsasl2.so:security/cyrus-sasl2
CONFIGURE_ARGS+=	--with-cyrus-sasl
.else
CONFIGURE_ARGS+=	--without-cyrus-sasl
.endif

.if defined(CLIENT_ONLY)
# client specific configuration

CONFIGURE_ARGS+=	--disable-slapd \
			--disable-monitor \
			--disable-bdb \
			--disable-relay \
			--disable-syncprov
SUB_FILES+=		pkg-message.client
PKGMESSAGE=		${WRKSRC}/pkg-message.client

USE_LDCONFIG=		yes

.else
# server specific configuration

USE_LDCONFIG=		${PREFIX}/libexec/openldap
SUB_FILES+=		pkg-message pkg-deinstall
USE_RC_SUBR=		slapd

EXTRA_PATCHES+=		${FILESDIR}/extrapatch-Makefile.in

.if ${PORT_OPTIONS:MDYNAMIC_BACKENDS} || ${PORT_OPTIONS:MSLAPI}
LIB_DEPENDS+=		libltdl.so:devel/libltdl
CONFIGURE_ARGS+=	--enable-modules
PLIST_SUB+=		MODULES=""
.else
PLIST_SUB+=		MODULES="@comment "
.endif

SED_MODULES=		-e 's/\(moduleload[ 	]*back_[a-z]*\)\.la/\1/'

.if ${PORT_OPTIONS:MDYNAMIC_BACKENDS}
BACKEND_ENABLE=		"mod"
BACKEND_PLIST=		""
SED_MODULES+=		-e 's/\# *\(modulepath\)/\1/' \
			-e 's/\# *\(moduleload[ 	]*back_bdb\)/\1/'
.else
BACKEND_ENABLE=		"yes"
BACKEND_PLIST=		"@comment "
.endif

OVERLAY_ENABLE=		yes

CONFIGURE_ARGS+=	--localstatedir=${LOCALSTATEDIR} \
			--enable-crypt \
			--enable-ldap=${BACKEND_ENABLE} \
			--enable-meta=${BACKEND_ENABLE} \
			--enable-rewrite \
			--enable-null=${BACKEND_ENABLE} \
			--enable-monitor=${BACKEND_ENABLE}

PLIST_SUB+=		BACKEND=${BACKEND_PLIST}

.if ${PORT_OPTIONS:MACCESSLOG}
CONFIGURE_ARGS+=	--enable-accesslog=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MAUDITLOG}
CONFIGURE_ARGS+=	--enable-auditlog=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MCOLLECT}
CONFIGURE_ARGS+=	--enable-collect=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MCONSTRAINT}
CONFIGURE_ARGS+=	--enable-constraint=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MDDS}
CONFIGURE_ARGS+=	--enable-dds=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MDEBUG}
CONFIGURE_ARGS+=	--enable-debug=yes
.endif

MAKE_ENV+=		STRIP=${STRIP}

.if ${PORT_OPTIONS:MDEREF}
CONFIGURE_ARGS+=	--enable-deref=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MDYNGROUP}
CONFIGURE_ARGS+=	--enable-dyngroup=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MDYNLIST}
CONFIGURE_ARGS+=	--enable-dynlist=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MLMPASSWD}
CONFIGURE_ARGS+=	--enable-lmpasswd
.endif

.if ${PORT_OPTIONS:MMEMBEROF}
CONFIGURE_ARGS+=	--enable-memberof=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MPPOLICY}
CONFIGURE_ARGS+=	--enable-ppolicy=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MPROXYCACHE}
CONFIGURE_ARGS+=	--enable-proxycache=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MREFINT}
CONFIGURE_ARGS+=	--enable-refint=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MRETCODE}
CONFIGURE_ARGS+=	--enable-retcode=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MRWM}
CONFIGURE_ARGS+=	--enable-rwm=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MSEQMOD}
CONFIGURE_ARGS+=	--enable-seqmod=${OVERLAY_ENABLE}
.else
CONFIGURE_ARGS+=	--disable-seqmod
.endif

.if ${PORT_OPTIONS:MSSSVLV}
CONFIGURE_ARGS+=	--enable-sssvlv=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MSYNCPROV}
CONFIGURE_ARGS+=	--enable-syncprov=${OVERLAY_ENABLE}
.else
CONFIGURE_ARGS+=	--disable-syncprov
.endif

.if ${PORT_OPTIONS:MTRANSLUCENT}
CONFIGURE_ARGS+=	--enable-translucent=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MUNIQUE}
CONFIGURE_ARGS+=	--enable-unique=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MVALSORT}
CONFIGURE_ARGS+=	--enable-valsort=${OVERLAY_ENABLE}
.endif

.if ${PORT_OPTIONS:MACI}
CONFIGURE_ARGS+=	--enable-aci
.endif

.if ${PORT_OPTIONS:MDYNACL}
CONFIGURE_ARGS+=	--enable-dynacl
.endif

.if ${PORT_OPTIONS:MLASTBIND}
CONFIGURE_ARGS+=	--enable-lastbind
.endif

.if !${PORT_OPTIONS:MBDB}
CONFIGURE_ARGS+=	--disable-bdb \
			--disable-hdb
PLIST_SUB+=		BACK_BDB="@comment " \
			BACK_HDB="@comment "
.else

USES+=			bdb
INVALID_BDB_VER=	6

CONFIGURE_ARGS+=	--enable-bdb=${BACKEND_ENABLE} \
			--enable-hdb=${BACKEND_ENABLE}
PLIST_SUB+=		BACK_BDB=${BACKEND_PLIST} \
			BACK_HDB=${BACKEND_PLIST}

CPPFLAGS+=		-I${BDB_INCLUDE_DIR}
LDFLAGS+=		-L${BDB_LIB_DIR}
CONFIGURE_SED+=		-e 's,ol_DB_LIB=$$,&-l${BDB_LIB_NAME:R},' \
			-e 's,(ol_cv_lib_db=)yes$$,\1-l${BDB_LIB_NAME:R},'
.endif

.if ${PORT_OPTIONS:MDNSSRV}
CONFIGURE_ARGS+=	--enable-dnssrv=${BACKEND_ENABLE}
PLIST_SUB+=		BACK_DNSSRV=${BACKEND_PLIST}
.else
PLIST_SUB+=		BACK_DNSSRV="@comment "
.endif

.if ${PORT_OPTIONS:MMDB}
CONFIGURE_ARGS+=	--enable-mdb=${BACKEND_ENABLE}
PLIST_SUB+=		BACK_MDB=${BACKEND_PLIST}
.else
PLIST_SUB+=		BACK_MDB="@comment "
.endif

.if ${PORT_OPTIONS:MPASSWD}
CONFIGURE_ARGS+=	--enable-passwd=${BACKEND_ENABLE}
PLIST_SUB+=		BACK_PASSWD=${BACKEND_PLIST}
.else
PLIST_SUB+=		BACK_PASSWD="@comment "
.endif

.if ${PORT_OPTIONS:MRELAY}
CONFIGURE_ARGS+=	--enable-relay=${BACKEND_ENABLE}
PLIST_SUB+=		BACK_RELAY=${BACKEND_PLIST}
.else
PLIST_SUB+=		BACK_RELAY="@comment "
.endif

.if ${PORT_OPTIONS:MSHELL}
CONFIGURE_ARGS+=	--without-threads --enable-shell=${BACKEND_ENABLE}
PLIST_SUB+=		BACK_SHELL=${BACKEND_PLIST}
.else
PLIST_SUB+=		BACK_SHELL="@comment "
WANT_OPENLDAP_THREADS=	yes
.endif

.if ${PORT_OPTIONS:MSOCK}
CONFIGURE_ARGS+=	--enable-sock=${BACKEND_ENABLE}
PLIST_SUB+=		BACK_SOCK=${BACKEND_PLIST}
.else
PLIST_SUB+=		BACK_SOCK="@comment "
.endif

.if ${PORT_OPTIONS:MPERL}
USES+=			perl5
CONFIGURE_ARGS+=	--enable-perl=${BACKEND_ENABLE}
CONFIGURE_ENV+=		PERLBIN="${PERL}"
PLIST_SUB+=		BACK_PERL=${BACKEND_PLIST}
.else
PLIST_SUB+=		BACK_PERL="@comment "
.endif

.if ${PORT_OPTIONS:MSASL}
CONFIGURE_ARGS+=	--enable-spasswd
.endif

.if ${PORT_OPTIONS:MODBC}
CONFIGURE_ARGS+=	--enable-sql=${BACKEND_ENABLE}
PLIST_SUB+=		BACK_SQL=${BACKEND_PLIST}
LIB_DEPENDS+=		libodbc.so:databases/unixODBC
LDFLAGS+=		-L${LOCALBASE}/lib
.else
PLIST_SUB+=		BACK_SQL="@comment "
.endif

.if ${PORT_OPTIONS:MSMBPWD}
PLIST_SUB+=		SMBPWD=""
.else
PLIST_SUB+=		SMBPWD="@comment "
.endif

.if ${PORT_OPTIONS:MSHA2}
PLIST_SUB+=		SHA2=""
.else
PLIST_SUB+=		SHA2="@comment "
.endif

.if ${PORT_OPTIONS:MPBKDF2}
PLIST_SUB+=		PBKDF2=""
.else
PLIST_SUB+=		PBKDF2="@comment "
.endif

.if ${PORT_OPTIONS:MLASTBIND}
PLIST_SUB+=		LASTBIND=""
.else
PLIST_SUB+=		LASTBIND="@comment "
.endif

.if ${PORT_OPTIONS:MRLOOKUPS}
CONFIGURE_ARGS+=	--enable-rlookups
PLIST_SUB+=		RLOOKUPS=""
.else
PLIST_SUB+=		RLOOKUPS="@comment "
.endif

.if ${PORT_OPTIONS:MSLAPI}
CONFIGURE_ARGS+=	--enable-slapi
PLIST_SUB+=		SLAPI=""
USE_LDCONFIG=		yes
.else
PLIST_SUB+=		SLAPI="@comment "
.endif

.if ${PORT_OPTIONS:MSLP}
CONFIGURE_ARGS+=	--enable-slp
LIB_DEPENDS+=		libslp.so:net/openslp
.endif

# Include tcp-wrapper support
.if ${PORT_OPTIONS:MTCP_WRAPPERS}
CONFIGURE_ARGS+=	--enable-wrappers
.endif

# Force using caseIgnoreOrderingMatch on 'name' attribute.
# This may be a violation of RFC 4519 2.18 definition.
# See http://www.openldap.org/lists/openldap-technical/201211/msg00175.html
.if ${PORT_OPTIONS:MOUTLOOK}
EXTRA_PATCHES+=		${FILESDIR}/extrapatch-outlook-servers__slapd__schema_prep.c
.endif

.if ${PORT_OPTIONS:MKQUEUE}
BUILD_DEPENDS+=		autoconf>0:devel/autoconf
EXTRA_PATCHES+=		${FILESDIR}/extrapatch-ITS6300
.endif

# end of client/server specific configuration
.endif

.if defined(WITH_CLDAP)
CPPFLAGS+=		-DLDAP_CONNECTIONLESS
.endif

CPPFLAGS+=		-I${LOCALBASE}/include
LIBS+=			-L${LOCALBASE}/lib

.if defined(CLIENT_ONLY)
.else
SUB_LIST+=		RC_DIR=${PREFIX} \
			LDAP_RUN_DIR=${LDAP_RUN_DIR} \
			DATABASEDIR=${DATABASEDIR}
.endif

PLIST_SUB+=		${SUB_LIST}
PLIST_SUB+=		SHLIB_MAJOR=${OPENLDAP_SHLIB_MAJOR}
PLIST_SUB+=		SHLIB_MINOR=${OPENLDAP_SHLIB_MINOR}
PLIST_SUB+=		OPENLDAP_MAJOR=${OPENLDAP_MAJOR}

.include <bsd.port.pre.mk>

.if !${PORT_OPTIONS:MFETCH}
CONFIGURE_ARGS+=	--without-fetch
.else
. if defined(OPENSSL_INSTALLED) && ${OPENSSL_INSTALLED} != "" || ${SSL_DEFAULT} != base
BROKEN=	using OpenSSL from ports and OPTION FETCH together is not supported
. endif
.endif

post-patch:
	@${REINPLACE_CMD} -e 's|%LOCALSTATEDIR%/run/|${LDAP_RUN_DIR}/|g' \
		${SED_MODULES} ${WRKSRC}/servers/slapd/slapd.conf
	@${REINPLACE_CMD} -e 's|^OPT =.*|OPT = ${CFLAGS}|g' \
		-e 's|^CC =.*|CC = ${CC}|g' \
		${SED_MODULES} ${WRKSRC}/contrib/slapd-modules/*/Makefile \
		${WRKSRC}/contrib/slapd-modules/*/*/Makefile
.if defined(CONFIGURE_SED)
	@${REINPLACE_CMD} -E ${CONFIGURE_SED} \
		${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT}
.endif

pre-configure:
	@if [ -n "`${PKG_INFO} -xI '^bind\(84\)\{0,1\}-base-8\.' 2>/dev/null`" ]; then \
		${ECHO_CMD} "${PKGNAME}: bind installed with PORT_REPLACES_BASE_BIND causes build problems."; \
		${FALSE}; \
	fi
.if ${PORT_OPTIONS:MKQUEUE}
	@(cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf)
.endif

.if !defined(CLIENT_ONLY)
test: build
	@(cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} \
		${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} test)

post-build:
	@${DO_NADA}
.if ${PORT_OPTIONS:MSMBPWD}
	@(cd ${BUILD_WRKSRC}/contrib/slapd-modules/smbk5pwd && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \
		${MAKE_ARGS} DEFS="-DDO_SAMBA" prefix="${PREFIX}" all)
.endif
.if ${PORT_OPTIONS:MSHA2}
	@(cd ${BUILD_WRKSRC}/contrib/slapd-modules/passwd/sha2 && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \
		${MAKE_ARGS} prefix="${PREFIX}" all)
.endif
.if ${PORT_OPTIONS:MPBKDF2}
	@(cd ${BUILD_WRKSRC}/contrib/slapd-modules/passwd/pbkdf2 && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \
		${MAKE_ARGS} prefix="${PREFIX}" all)
.endif

.if ${PORT_OPTIONS:MLASTBIND}
	@(cd ${BUILD_WRKSRC}/contrib/slapd-modules/lastbind && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \
		${MAKE_ARGS} prefix="${PREFIX}" all)
.endif
.endif

pre-install:
.if !defined(CLIENT_ONLY)
	${MKDIR} ${STAGEDIR}${DATABASEDIR}
.endif

post-install:
.if defined(CLIENT_ONLY)
	${MKDIR} ${STAGEDIR}${DOCSDIR}
	${INSTALL_DATA} ${WRKSRC}/CHANGES ${STAGEDIR}${DOCSDIR}
	for dir in drafts rfc; do \
		${MKDIR} ${STAGEDIR}${DOCSDIR}/$${dir}; \
		${INSTALL_DATA} ${WRKSRC}/doc/$${dir}/* ${STAGEDIR}${DOCSDIR}/$${dir}; \
	done
	for prog in ldapcompare ldapdelete ldapexop ldapmodify ldapmodrdn ldappasswd ldapsearch ldapurl ldapwhoami; do\
		${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/$${prog}; \
	done

	for library in lber ldap ldap_r; do \
		${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib$${library}-${OPENLDAP_MAJOR}.so.${OPENLDAP_SHLIB_MAJOR}; \
	done
.else
	${MKDIR} ${STAGEDIR}${LDAP_RUN_DIR}
.if ${PORT_OPTIONS:MSMBPWD}
	(cd ${WRKSRC}/contrib/slapd-modules/smbk5pwd && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \
		${MAKE_ARGS} prefix="${PREFIX}" install)
	${RM} ${STAGEDIR}${PREFIX}/libexec/openldap/smbk5pwd.a
.endif
.if ${PORT_OPTIONS:MSHA2}
	(cd ${WRKSRC}/contrib/slapd-modules/passwd/sha2 && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \
		${MAKE_ARGS} prefix="${PREFIX}" install)
	${RM} ${STAGEDIR}${PREFIX}/libexec/openldap/pw-sha2.a
.endif
.if ${PORT_OPTIONS:MPBKDF2}
	(cd ${WRKSRC}/contrib/slapd-modules/passwd/pbkdf2 && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \
		${MAKE_ARGS} prefix="${PREFIX}" install)
	${RM} ${STAGEDIR}${PREFIX}/libexec/openldap/pw-pbkdf2.a
.endif

.if ${PORT_OPTIONS:MLASTBIND}
	(cd ${WRKSRC}/contrib/slapd-modules/lastbind && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} \
		${MAKE_ARGS} prefix="${PREFIX}" install)
	${RM} ${STAGEDIR}${PREFIX}/libexec/openldap/lastbind.a
.endif
.if ${PORT_OPTIONS:MDYNAMIC_BACKENDS} || ${PORT_OPTIONS:MSMBPWD} || ${PORT_OPTIONS:MSHA2} || ${PORT_OPTIONS:MPBKDF2}
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/openldap/*.so
.endif
.if ${PORT_OPTIONS:MDYNAMIC_BACKENDS} || ${PORT_OPTIONS:MSLAPI}
	${MKDIR} ${STAGEDIR}${PREFIX}/libexec/openldap
.endif
.endif # defined(CLIENT_ONLY)

.include <bsd.port.post.mk>
