# $NetBSD: Makefile,v 1.106 2005/12/05 20:50:31 rillig Exp $
#
# ATTENTION:
# The Kerberos support in this software is known to be problematic. If you
# upgrade this package you *must* test it on a system with Kerberos libraries
# but not running Kerberos before committing the changes.

DISTNAME=       imap-2004e
PKGREVISION=	2
PKGNAME=        ${DISTNAME:S/-/-uw-/}
CATEGORIES=     mail
MASTER_SITES=	ftp://ftp.cac.washington.edu/imap/
EXTRACT_SUFX=	.tar.Z

MAINTAINER=	tech-pkg@NetBSD.org
HOMEPAGE=	http://www.washington.edu/imap/
COMMENT=	University of Washington's IMAP, POP2, and POP3 servers

USE_LIBTOOL=	yes

INST_PROG=	${LIBTOOL} --mode=install ${INSTALL_PROGRAM}
INST_LIB=	${LIBTOOL} --mode=install ${INSTALL_LIB}
INC_DIR=	${PREFIX}/include/c-client
LIB_DIR=	${PREFIX}/lib
DOC_DIR=	${PREFIX}/share/doc/imap-uw

.include "../../mk/bsd.prefs.mk"

.if ${OPSYS} == "SunOS"
BUILD_TARGET=	gso
.elif ${OPSYS} == "Linux"
BUILD_TARGET=	slx
.elif ${OPSYS} == "Darwin"
BUILD_TARGET=	osx
.elif ${OPSYS} == "IRIX"
.  if ${OS_VERSION} >= 6.5
BUILD_TARGET=	sg6
.  else
BUILD_TARGET=	sgi
.  endif
.elif ${OPSYS} == "OSF1"
BUILD_TARGET=	osf
.else
BUILD_TARGET=	neb
.endif

.include "options.mk"

BUILD_DEFS+=	IMAP_UW_CCLIENT_MBOX_FMT IMAP_UW_MAILSPOOLHOME
CCLIENT_INCS=	c-client.h env.h env_unix.h flocksim.h flstring.h	\
		fs.h ftl.h imap4r1.h linkage.c linkage.h mail.h misc.h	\
		netmsg.h newsrc.h nl.h nntp.h osdep.h rfc822.h		\
		smtp.h tcp.h utf8.h
CCLIENT_LIB=	libc-client.la
CCLIENT_PICLIB=	libc-client_pic.a
CCLIENT_MAJOR=	4
CCLIENT_MINOR=	2
CCLIENT_MFILES=	src/imapd/Makefile					\
		src/ipopd/Makefile					\
		src/mtest/Makefile					\
		src/osdep/unix/Makefile

MESSAGE_SUBST+=	SSLCERTS=${SSLCERTS:Q}
MESSAGE_SUBST+=	SSLKEYS=${SSLKEYS:Q}
PLIST_SUBST+=	CCLIENT_MAJOR=${CCLIENT_MAJOR:Q}
PLIST_SUBST+=	CCLIENT_MINOR=${CCLIENT_MINOR:Q}

MANFILES=	src/imapd/imapd.8 src/ipopd/ipopd.8

MAKE_ENV+=	SSLDIR=${SSLBASE:Q}
MAKE_ENV+=	SSLCERTS=${SSLCERTS:Q}
MAKE_ENV+=	SSLKEYS=${SSLKEYS:Q}
MAKE_ENV+=	CCLIENT_MAJOR=${CCLIENT_MAJOR:Q}
MAKE_ENV+=	CCLIENT_MINOR=${CCLIENT_MINOR:Q}
MAKE_ENV+=	CREATEPROTO=${IMAP_UW_CCLIENT_MBOX_FMT:Q}proto

BUILD_TARGET+=	CC="${LIBTOOL} ${CC}"
BUILD_TARGET+=	EXTRALDFLAGS="${LDFLAGS}"
BUILD_TARGET+=	EXTRACFLAGS="${CFLAGS}"

# reduce optimization level on alpha to avoid compiler bugs
.if ${OPSYS} == "NetBSD"
.  if ${MACHINE_ARCH} == "alpha"
CPPFLAGS:=      ${CPPFLAGS:C/-O[0-9]*/-O/g}
CFLAGS:=        ${CFLAGS:C/-O[0-9]*/-O/g}
CONFIGURE_ENV+= CPPFLAGS=${CPPFLAGS:M*:Q}
CONFIGURE_ENV+= CFLAGS=${CFLAGS:M*:Q}
.  endif
.endif

post-extract:
	#
	# Change references to the built library to ${CCLIENT_LIB}.
	#
	cd ${WRKSRC}; for file in ${CCLIENT_MFILES}; do			\
		${MV} -f $${file} $${file}.orig;			\
		${SED}	-e "s|c-client.a|${CCLIENT_LIB}|g"		\
			$${file}.orig > $${file};			\
		${RM} -f $${file}.orig;					\
	done
	#
	# Correct hardcoded paths in man pages.
	#
	cd ${WRKSRC}; for FILE in ${MANFILES}; do			\
		${CP} $${FILE} $${FILE}.broken;				\
		${SED}	-e "s|/usr/etc/imapd|${PREFIX}/libexec/imapd|g"	\
			-e "s|/etc/rimapd|${PREFIX}/sbin/rimapd|g"	\
			-e "s|/usr/etc/ipop2d|${PREFIX}/libexec/ipop2d|g" \
			-e "s|/usr/etc/ipop3d|${PREFIX}/libexec/ipop3d|g" \
			$${FILE}.broken > $${FILE};			\
	done

post-patch:
.if defined(IMAP_UW_MAILSPOOLHOME)
	cd ${WRKSRC}/src/osdep/unix &&					\
	${SED}	-e 's|@SPOOLDIR@|myhomedir ()|'				\
		-e 's|@MAILBOX@|"${IMAP_UW_MAILSPOOLHOME}"|'		\
		env_unix.c > env_unix.c.new &&				\
	${MV} -f env_unix.c.new env_unix.c
.else
	cd ${WRKSRC}/src/osdep/unix &&					\
	${SED}	-e 's|@SPOOLDIR@|MAILSPOOL|'				\
		-e 's|@MAILBOX@|myusername ()|'				\
		env_unix.c > env_unix.c.new &&				\
	${MV} -f env_unix.c.new env_unix.c
.endif

# Generate _pic.a library from shared objects.
#
post-build:
	cd ${WRKSRC}/c-client;						\
	${LIBTOOL} --mode=link ${CC} -o ${CCLIENT_PICLIB:.a=.la} *.lo

do-install:
	${INSTALL_DATA_DIR} ${INC_DIR}
	cd ${WRKSRC}/c-client; ${INSTALL_DATA} ${CCLIENT_INCS} ${INC_DIR}
	${INSTALL_LIB_DIR} ${LIB_DIR}
	${INST_LIB} ${WRKSRC}/c-client/${CCLIENT_LIB} ${LIB_DIR}
	${INSTALL_LIB} ${WRKSRC}/c-client/.libs/${CCLIENT_PICLIB} ${LIB_DIR}
	${RANLIB} ${LIB_DIR}/${CCLIENT_PICLIB}
	cd ${LIB_DIR}; for file in libc-client.*; do			\
		case $$file in						\
		*.la)	;;						\
		*)							\
			f=`${ECHO} $${file} | ${SED} "s|libc-client|libimapuw|g"`; \
			${TEST} -f $${file} && ${LN} -f $${file} $${f};	\
			;;						\
		esac;							\
	done
	${INSTALL_PROGRAM_DIR} ${PREFIX}/libexec
	${INST_PROG} ${WRKSRC}/imapd/imapd ${PREFIX}/libexec
	${INST_PROG} ${WRKSRC}/ipopd/ipop2d ${PREFIX}/libexec
	${INST_PROG} ${WRKSRC}/ipopd/ipop3d ${PREFIX}/libexec
	${INSTALL_PROGRAM_DIR} ${PREFIX}/sbin
	${INST_PROG} ${WRKSRC}/mtest/mtest ${PREFIX}/sbin
	${LN} -sf ../libexec/imapd ${PREFIX}/sbin/rimapd
	${INSTALL_MAN_DIR} ${PREFIX}/man/man8
	${INSTALL_MAN} ${WRKSRC}/src/imapd/imapd.8 ${PREFIX}/man/man8
	${INSTALL_MAN} ${WRKSRC}/src/ipopd/ipopd.8 ${PREFIX}/man/man8
	${LN} -sf ipopd.8 ${PREFIX}/man/man8/ipop2d.8
	${LN} -sf ipopd.8 ${PREFIX}/man/man8/ipop3d.8
	${INSTALL_DATA_DIR} ${DOC_DIR}
	${CP} -R ${WRKSRC}/docs/* ${DOC_DIR}
	${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${DOC_DIR}
	${FIND} ${DOC_DIR} -type d -print | ${XARGS} ${CHMOD} ${PKGDIRMODE}
	${FIND} ${DOC_DIR} -type f -print | ${XARGS} ${CHMOD} ${SHAREMODE}

	${INSTALL_PROGRAM_DIR} ${PREFIX}/bin
	${INST_PROG} ${WRKSRC}/mailutil/mailutil ${PREFIX}/bin
	${INSTALL_MAN_DIR} ${PREFIX}/man/man1
	${INSTALL_MAN} ${WRKSRC}/src/mailutil/mailutil.1 ${PREFIX}/man/man1
	${INST_PROG} ${WRKSRC}/dmail/dmail ${PREFIX}/bin
	${INSTALL_MAN} ${WRKSRC}/src/dmail/dmail.1 ${PREFIX}/man/man1
	${INST_PROG} ${WRKSRC}/mlock/mlock ${PREFIX}/bin
	${INST_PROG} ${WRKSRC}/tmail/tmail ${PREFIX}/bin
	${INSTALL_MAN} ${WRKSRC}/src/tmail/tmail.1 ${PREFIX}/man/man1

.include "../../mk/bsd.pkg.mk"
