PORTROACH=		limitw:1,even

COMMENT=		Cyrus IMAP server

V=			3.13.4
DISTNAME=		cyrus-imapd-${V}

SHARED_LIBS +=  cyrus_min            0.0      # unknown
SHARED_LIBS +=  cyrus                0.0      # unknown
SHARED_LIBS +=  cyrus_imap           0.0      # unknown
SHARED_LIBS +=  cyrus_sieve          0.0      # unknown

CATEGORIES=		mail

HOMEPAGE=		https://www.cyrusimap.org/

MAINTAINER=		Antoine Jacoutot <ajacoutot@openbsd.org>

# CMU - see COPYING file in package
PERMIT_PACKAGE=		Yes

WANTLIB += ${COMPILER_LIBCXX} brotlicommon brotlienc c com_err
WANTLIB += crypto execinfo ical icalvcard iconv icudata icui18n
WANTLIB += icuuc jansson m nghttp2 pcre2-8 pcre2-posix perl sasl2
WANTLIB += shp sqlite3 srs2 ssl uuid wslay xapian xml2 z zstd

GH_ACCOUNT=		cyrusimap
GH_PROJECT=		cyrus-imapd
GH_TAGNAME=		cyrus-imapd-${V}
#SITES=			https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-${V}/

COMPILER=		base-clang ports-gcc base-gcc
USE_GMAKE=		Yes

YACC=			bison -y

BUILD_DEPENDS=		devel/bison \
			devel/p5-App-Cmd \
			devel/p5-Type-Tiny

# xapian support, needed to for compacting databases
BUILD_DEPENDS +=	net/rsync
RUN_DEPENDS +=		net/rsync

# xxd(1), needed for http/caldav support
BUILD_DEPENDS +=	vim-*|vim-classic-*:editors/vim

LIB_DEPENDS=		archivers/brotli \
			databases/sqlite3 \
			databases/xapian-core \
			devel/jansson \
			devel/pcre2 \
			devel/shapelib \
			mail/libsrs2 \
			security/cyrus-sasl2 \
			sysutils/e2fsprogs \
			textproc/icu4c \
			textproc/libical \
			textproc/libxml \
			www/nghttp2 \
			www/wslay

AUTOCONF_VERSION=	2.72
AUTOMAKE_VERSION=	1.18
CONFIGURE_STYLE=	autoreconf
CONFIGURE_ENV=		CPPFLAGS="-I${LOCALBASE}/include" \
			LDFLAGS="-L${LOCALBASE}/lib"
CONFIGURE_ARGS=		--bindir=${PREFIX}/cyrus/bin \
			--libexec=${PREFIX}/cyrus/libexec \
			--sbindir=${PREFIX}/cyrus/sbin \
			--with-sasl=${LOCALBASE} \
			--with-cyrus-user=_cyrus \
			--with-syslogfacility=MAIL \
			--without-chardet \
			--without-sphinx-build \
			--disable-gssapi \
			--enable-autocreate \
			--enable-calalarmd \
			--enable-http \
			--enable-idled \
			--enable-jmap \
			--enable-murder \
			--enable-replication \
			--enable-srs

# needed for jmap support
CONFIGURE_ARGS +=	--enable-xapian

# FLAVOR?
CONFIGURE_ARGS +=	--without-clamav

DEBUG_PACKAGES=		${BUILD_PACKAGES}

# --mandir is overriden by the ports infrastructure
FAKE_FLAGS=		mandir=${PREFIX}/cyrus/man

pre-configure:
# XXX cannot use a patch because ./tools/imapoptions.pl iterates over the file
# names and breaks with:
# foo.orig.port: name must match filename at ./tools/lib/Cyrus/IMAPOptions/Option.pm line 119.
	sed -i \
		-e "s,/usr/lib/sendmail,/usr/sbin/sendmail,g" \
		-e "s,/usr/sieve,/var/sieve,g" \
		${WRKSRC}/lib/imapoptions/{sendmail,sievedir}

post-install:
	${INSTALL_DATA_DIR} ${PREFIX}/share/{doc,examples}/cyrus-imapd
	cp -R ${WRKSRC}/doc/[!examples]* ${PREFIX}/share/doc/cyrus-imapd
	cp -R ${WRKSRC}/doc/examples/* ${PREFIX}/share/examples/cyrus-imapd
	${INSTALL_DATA} ${WRKSRC}/COPYING ${PREFIX}/share/doc/cyrus-imapd
	cp -R ${WRKSRC}/tools ${PREFIX}/share/examples/cyrus-imapd/
	${INSTALL_DATA} ${FILESDIR}/imapd.conf \
		${PREFIX}/share/examples/cyrus-imapd/
	rm -r ${PREFIX}/libdata/perl5/${MACHINE_ARCH}-openbsd

.include <bsd.port.mk>
