# New ports collection makefile for: exim # Date created: 23 June 1996 # Whom: markm@FreeBSD.org # # $FreeBSD$ # PORTNAME= exim PORTVERSION= 4.30 PORTREVISION= 2 CATEGORIES= mail MASTER_SITES= ${MASTER_SITE_EXIM} MASTER_SITE_SUBDIR= exim4 DIST_SUBDIR= exim .if !defined(WITHOUT_EXISCAN) PATCH_SITES= http://duncanthrax.net/%SUBDIR%/ PATCH_SITE_SUBDIR= exiscan-acl PATCHFILES= exiscan-acl-${EXISCAN_VERSION}.patch.bz2 PATCH_DIST_STRIP= -p1 .endif MAINTAINER= eik@FreeBSD.org COMMENT= High performance MTA for Unix systems on the Internet .if defined(WITH_EXIMON) RUN_DEPENDS= ${LOCALBASE}/sbin/eximon:${PORTSDIR}/mail/exim-monitor .endif .if defined(PKGNAMESUFFIX) CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}-4* .endif .for suffix in -ldap2 -mysql -postgresql .if !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX} != ${suffix} CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}${suffix}* .endif .endfor USE_BZIP2= yes USE_ICONV= yes USE_PERL5= yes USE_REINPLACE= yes MAN8= exim.8 PORTDOC_FILES= ChangeLog Exim3.upgrade Exim4.upgrade NewStuff \ OptionLists.txt README README.SIEVE dbm.discuss.txt \ filter.txt pcrepattern.txt pcretest.txt spec.txt PORT_EXAMPLES= convert4r3 convert4r4 transport-filter.pl DAILY_SCRIPTS= 150.exim-tidydb 460.exim-mail-rejects EXISCAN_VERSION= ${PORTVERSION}-16 PKGINSTALL= ${WRKDIR}/pkg-install PLIST_SUB+= EXIM_VERSION="${PORTVERSION}-${PORTREVISION}" .if defined(NOPORTDOCS) PKGMESSAGE= ${WRKDIR}/POST-INSTALL-NOTES .else PKGMESSAGE= ${WRKDIR}/pkg-message .endif MAKE_ENV+= OSTYPE=${OPSYS} ARCHTYPE=${MACHINE_ARCH} LOCALBASE=${LOCALBASE} POSTGRESQL_PORT?= databases/postgresql7 EXIM_USER?= mailnull EXIM_GROUP?= mail # If WITH_EXIMON is defined, the eximon monitor, which requires X, # will be made a dependency. Note that using WITH_EXIMON will cause # XFree86 to be installed if it is not present. #WITH_EXIMON= yes # If WITHOUT_EXISCAN is defined, exim will be built without exiscan # email content scanner support. #WITHOUT_EXISCAN= yes # Define WITH_TCP_WRAPPERS, WITH_MYSQL, and WITH_PGSQL to link against # libwrap, libmysqlclient and libpq respectively. Define # WITH_SASLAUTHD to enable use of the Cyrus SASL authentication daemon. # Define WITH_MYSQL_VER to specify a particular version of MySQL to # use. Valid values are currently 323, 40 and 41. Defining WITH_MYSQL_VER # implies WITH_MYSQL. #WITH_TCP_WRAPPERS= yes #WITH_MYSQL= yes #WITH_MYSQL_VER= 40 #WITH_PGSQL= yes #WITH_SASLAUTHD= yes # As an alternative to WITH_SASLAUTHD, you can define WITH_PWCHECK to # link against libsasl for SMTP AUTH authentication via the Cyrus SASL # pwcheck daemon. ################################ # THIS MECHANISM IS DEPRECATED # ################################ #WITH_PWCHECK= yes # Define WITHOUT_IPV6 to exclude IPv6 support from the compiled exim # binary. Exim compiled with IPv6 support will still operate on # systems that do not have IPv6 kernel support, so this should not # be necessary. #WITHOUT_IPV6= yes # Define WITH_OPENLDAP or WITH_OPENLDAP_VER to link against libldap. # Define WITH_OPENLDAP_VER to specify a particular version of # OpenLDAP to use. Valid values are currently 12, 20, 21 and 22. # Defining WITH_OPENLDAP_VER implies WITH_OPENLDAP. # Exim also supports NETSCAPE and SOLARIS7 lookup types, but no # client libraries exist for these in the ports tree. #WITH_OPENLDAP= yes #WITH_OPENLDAP_VER= 21 # WITH_BDB_VER is the version of the Berkeley DB library to use, and # may be 1, which corresponds to version 1.85 in the base system, 4, # 41 or 42 which depends on the databases/db4[12] ports. WITH_BDB_VER?=1 # When Exim is decoding MIME "words" in header lines it converts any foreign # character sets to the one that is set in the headers_charset option. # The default setting is defined by this setting: WITH_DEFAULT_CHARSET?= ISO-8859-1 # The following options may be defined to turn off support for various # features that this port enables by default. # # Do not link against OpenSSL; disables STARTTLS. #WITHOUT_TLS= yes # # Disable the embedded Perl interpreter, which allows Perl subroutines to # be called during string expansion. #WITHOUT_PERL= yes # # Disable built-in Exim support for the PAM, RFC 2195, RFC 2595 and # Microsoft "Secure Password Authentication" authentication mechanisms, # used for SMTP AUTH. #WITHOUT_PAM= yes #WITHOUT_AUTH_CRAM_MD5= yes #WITHOUT_AUTH_PLAINTEXT= yes #WITHOUT_AUTH_SPA= yes # # Disable built-in Exim support for additional mailbox formats. #WITHOUT_MAILDIR= yes #WITHOUT_MAILSTORE= yes #WITHOUT_MBX= yes # # Define WITHOUT_CDB, WITHOUT_DNSDB, WITHOUT_DSEARCH, WILD_LSEARCH, # WITHOUT_NIS and WITHOUT_PASSWD to disable support for CDB-style, DNS-style, # directory-list, wildcarded-file, NIS and /etc/passwd lookups respectively. #WITHOUT_CDB= yes #WITHOUT_DNSDB= yes #WITHOUT_DSEARCH= yes #WITHOUT_WILDLSEARCH= yes #WITHOUT_NIS= yes #WITHOUT_PASSWD= yes # # Disable support for the LMTP (RFC 2033 "SMTP over command pipe") # transport. #WITHOUT_LMTP= yes # # Allow alternate configuration files not only in ${PREFIX}/etc/exim #WITHOUT_ALT_CONFIG_PREFIX= yes # # Include the unsupported patches in ${PATCHDIR}/wishlist-*.patch #WITH_WISHLIST= yes # You should not need to fiddle with anything below this point. .if defined(WITH_WISHLIST) EXTRA_PATCHES+= `${FIND} ${PATCHDIR} -name 'wishlist-*.patch'` .endif .if !defined(WITHOUT_EXISCAN) PORTDOC_FILES+= exiscan-acl-examples.txt exiscan-acl-spec.txt PLIST_SUB+= EXISCAN_ACL="" .else PLIST_SUB+= EXISCAN_ACL="@comment " .endif SEDLIST= -e 's,XX_PREFIX_XX,${PREFIX},' \ -e 's,XX_EXIM_USER_XX,${EXIM_USER},' \ -e 's,XX_EXIM_GROUP_XX,${EXIM_GROUP},' \ -e 's,XX_LOCALBASE_XX,${LOCALBASE},' \ -e 's,XX_DEFAULT_CHARSET_XX,${WITH_DEFAULT_CHARSET},' .if !defined(WITHOUT_TLS) SEDLIST+= -e 's,^\# SUPPORT_TLS=,SUPPORT_TLS=,' USE_OPENSSL= yes .else SEDLIST+= -e 's,^TLS_LIBS=,\#TLS_LIBS=,' .endif .if !defined(WITHOUT_PERL) SEDLIST+= -e 's,^\# EXIM_PERL=,EXIM_PERL=,' .endif .if defined(WITH_TCP_WRAPPERS) SEDLIST+= -e 's,XX_TCP_WRAPPERS_LIBS_XX,-lwrap,' \ -e 's,^\# USE_TCP_WRAPPERS=,USE_TCP_WRAPPERS=,' .else SEDLIST+= -e 's,XX_TCP_WRAPPERS_LIBS_XX,,' .endif .if defined(WITH_LDAP) || defined(LDAP_LIB_TYPE) \ || defined(WITH_OPENLDAP1) || defined(WITH_OPENLDAP2) \ || defined(WITH_OPENLDAP20) || defined(WITH_OPENLDAP21) BROKEN= deprecated LDAP option defined, use WITH_OPENLDAP or WITH_OPENLDAP_VER .endif .if defined(WITH_OPENLDAP_VER) WITH_OPENLDAP= yes WANT_OPENLDAP_VER= ${WITH_OPENLDAP_VER} .endif .if defined(WITH_OPENLDAP) USE_OPENLDAP= yes .if defined(WANT_OPENLDAP_VER) && ${WANT_OPENLDAP_VER} == 12 LDAP_LIB_TYPE= OPENLDAP1 .else LDAP_LIB_TYPE= OPENLDAP2 .endif SEDLIST+= -e 's,XX_LDAP_LIBS_XX,-L${LOCALBASE}/lib -llber -lldap,' \ -e 's,XX_LDAP_INCLUDE_XX,-I${LOCALBASE}/include,' \ -e 's,XX_LDAP_TYPE_XX,${LDAP_LIB_TYPE},' \ -e 's,^\# LOOKUP_LDAP=,LOOKUP_LDAP=,' .else SEDLIST+= -e 's,XX_LDAP_[^ ]*_XX,,' \ -e 's,^LDAP_LIB_TYPE=,\#LDAP_LIB_TYPE=,' .endif .if defined(DB_LIB_VERSION) BROKEN= deprecated option DB_LIB_VERSION used, use WITH_BDB_VER .endif .if ${WITH_BDB_VER} == 1 DB_LIBS= DB_INCLUDES= SEDLIST+= -e 's,^DBMLIB=,\#DBMLIB=,' .elif (${WITH_BDB_VER} == 4) DB_LIBS= -L${LOCALBASE}/lib -ldb4 DB_INCLUDES= -I${LOCALBASE}/include/db4 LIB_DEPENDS+= db4.0:${PORTSDIR}/databases/db4 .elif (${WITH_BDB_VER} == 41) DB_LIBS= -L${LOCALBASE}/lib -ldb41 DB_INCLUDES= -I${LOCALBASE}/include/db41 LIB_DEPENDS+= db41.1:${PORTSDIR}/databases/db41 .elif (${WITH_BDB_VER} == 42) DB_LIBS= -L${LOCALBASE}/lib -ldb-4.2 DB_INCLUDES= -I${LOCALBASE}/include/db42 LIB_DEPENDS+= db-4.2.2:${PORTSDIR}/databases/db42 .else BROKEN= WITH_BDB_VER must be either 1, 4, 41 or 42 .endif SEDLIST+= -e 's,XX_DB_LIBS_XX,${DB_LIBS},' \ -e 's,XX_DB_INCLUDES_XX,${DB_INCLUDES},' .if defined(WITH_MYSQL_VER) WITH_MYSQL= yes WANT_MYSQL_VER= ${WITH_MYSQL_VER} .endif .if defined(WITH_MYSQL) USE_MYSQL= yes SEDLIST+= -e 's,XX_MYSQL_LIBS_XX,-L${LOCALBASE}/lib/mysql -lmysqlclient,' \ -e 's,XX_MYSQL_INCLUDE_XX,-I${LOCALBASE}/include/mysql,' \ -e 's,^\# LOOKUP_MYSQL=,LOOKUP_MYSQL=,' .else SEDLIST+= -e 's,XX_MYSQL_[^ ]*_XX,,' .endif .if defined(WITH_SASLAUTHD) RUN_DEPENDS+= ${LOCALBASE}/sbin/saslauthd:${PORTSDIR}/security/cyrus-sasl2-saslauthd SEDLIST+= -e 's,^\# CYRUS_SASLAUTHD_SOCKET=,CYRUS_SASLAUTHD_SOCKET=,' .endif .if defined(WITH_PWCHECK) RUN_DEPENDS+= ${LOCALBASE}/sbin/pwcheck:${PORTSDIR}/security/cyrus-sasl SEDLIST+= -e 's,^\# SUPPORT_CYRUS_PWCHECK=,SUPPORT_CYRUS_PWCHECK=,' \ -e 's,^\# CYRUS_PWCHECK_SOCKET=,CYRUS_PWCHECK_SOCKET=,' .endif .if !defined(WITHOUT_PAM) SEDLIST+= -e 's,XX_PAM_LIBS_XX,-lpam,' \ -e 's,^\# SUPPORT_PAM=,SUPPORT_PAM=,' .else SEDLIST+= -e 's,XX_PAM_LIBS_XX,,' .endif .if !defined(WITHOUT_AUTH_CRAM_MD5) SEDLIST+= -e 's,^\# AUTH_CRAM_MD5=,AUTH_CRAM_MD5=,' .endif .if !defined(WITHOUT_AUTH_PLAINTEXT) SEDLIST+= -e 's,^\# AUTH_PLAINTEXT=,AUTH_PLAINTEXT=,' .endif .if !defined(WITHOUT_AUTH_SPA) SEDLIST+= -e 's,^\# AUTH_SPA=,AUTH_SPA=,' .endif .if defined(WITH_PGSQL) LIB_DEPENDS+= pq.3:${PORTSDIR}/${POSTGRESQL_PORT} SEDLIST+= -e 's,XX_PGSQL_LIBS_XX,-L${LOCALBASE}/lib -lpq,' \ -e 's,XX_PGSQL_INCLUDE_XX,-I${LOCALBASE}/include/pgsql,' \ -e 's,^\# LOOKUP_PGSQL=,LOOKUP_PGSQL=,' .else SEDLIST+= -e 's,XX_PGSQL_[^ ]*_XX,,' .endif .if !defined(WITH_PGSQL) && !defined(WITH_MYSQL) && !defined(LDAP_LIB_TYPE) && \ ${WITH_BDB_VER} == 1 SEDLIST+= -e 's,^LOOKUP_LIBS=,\#LOOKUP_LIBS=,' \ -e 's,^LOOKUP_INCLUDE=,\#LOOKUP_INCLUDE=,' .endif .if !defined(WITHOUT_DNSDB) SEDLIST+= -e 's,^\# LOOKUP_DNSDB=,LOOKUP_DNSDB=,' .endif .if !defined(WITHOUT_MAILDIR) SEDLIST+= -e 's,^\# SUPPORT_MAILDIR=,SUPPORT_MAILDIR=,' .endif .if !defined(WITHOUT_MAILSTORE) SEDLIST+= -e 's,^\# SUPPORT_MAILSTORE=,SUPPORT_MAILSTORE=,' .endif .if !defined(WITHOUT_MBX) SEDLIST+= -e 's,^\# SUPPORT_MBX=,SUPPORT_MBX=,' .endif .if !defined(WITHOUT_CDB) SEDLIST+= -e 's,^\# LOOKUP_CDB=,LOOKUP_CDB=,' .endif .if !defined(WITHOUT_DSEARCH) SEDLIST+= -e 's,^\# LOOKUP_DSEARCH=,LOOKUP_DSEARCH=,' .endif .if !defined(WITHOUT_WILDLSEARCH) SEDLIST+= -e 's,^\# LOOKUP_WILDLSEARCH=,LOOKUP_WILDLSEARCH=,' .endif .if !defined(WITHOUT_NIS) SEDLIST+= -e 's,^\# LOOKUP_NIS=,LOOKUP_NIS=,' .endif .if !defined(WITHOUT_PASSWD) SEDLIST+= -e 's,^\# LOOKUP_PASSWD=,LOOKUP_PASSWD=,' .endif .if !defined(WITHOUT_LMTP) SEDLIST+= -e 's,^\# TRANSPORT_LMTP=,TRANSPORT_LMTP=,' .endif .if defined(WITHOUT_ALT_CONFIG_PREFIX) SEDLIST+= -e 's,^ALT_CONFIG_PREFIX=,\# ALT_CONFIG_PREFIX=,' .endif .include .if ${OSVERSION} >= 500038 RC_SUBR?= ${DESTDIR}/etc/rc.subr RC_DIR= ${DESTDIR}/etc/rc.d RC_SUFX= .else USE_RC_SUBR= yes RC_DIR= ${PREFIX}/etc/rc.d RC_SUFX= .sh .endif SED_SCRIPT= -e 's,%%PREFIX%%,${PREFIX},g' \ -e 's,%%DOCSDIR%%,${DOCSDIR},g' \ -e 's,%%EXAMPLESDIR%%,${EXAMPLESDIR},g' \ -e 's,%%EXIM_USER%%,${EXIM_USER},g' \ -e 's,%%EXIM_GROUP%%,${EXIM_GROUP},g' \ -e 's,%%RC_SUBR%%,${RC_SUBR},g' \ -e 's,%%RC_DIR%%,${RC_DIR},g' \ -e 's,%%RC_SUFX%%,${RC_SUFX},g' PLIST_SUB+= RC_DIR=${RC_DIR} \ RC_SUFX=${RC_SUFX} \ EXIM_USER=${EXIM_USER} \ EXIM_GROUP=${EXIM_GROUP} .if ${OSVERSION} < 400014 WITHOUT_IPV6= yes .endif .if !defined(WITHOUT_IPV6) SEDLIST+= -e 's,^\# HAVE_IPV6=,HAVE_IPV6=,' .endif pre-everything:: .if empty(.MAKEFLAGS:M-s) && defined(WITH_WISHLIST) @${ECHO} '' @${ECHO} 'Included extra patches:' @${FIND} ${PATCHDIR} -name 'wishlist-*.patch' \ -exec ${SED} -ne 's,^# , ,p' {} \; @${ECHO} '' .endif do-configure: @${MKDIR} ${WRKSRC}/Local @${SED} ${SEDLIST} ${WRKSRC}/src/EDITME > ${WRKSRC}/Local/Makefile @${SED} ${SED_SCRIPT} ${MASTERDIR}/pkg-install > ${PKGINSTALL} @${REINPLACE_CMD} ${SEDLIST} ${WRKSRC}/src/configure.default @${REINPLACE_CMD} -e 's/"(Exim $$version_number)\\n\\t"/"(Exim $$version_number; ${OPSYS})\\n\\t"/' \ ${WRKSRC}/src/globals.c @${REINPLACE_CMD} -e 's/^#include "cnumber\.h"$$/${PORTREVISION}/' ${WRKSRC}/src/version.c post-build: .for script in exim ${DAILY_SCRIPTS} @${SED} ${SED_SCRIPT} ${FILESDIR}/${script}.sh > ${WRKDIR}/${script}.sh .endfor .if !defined(WITHOUT_EXISCAN) @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES.exiscan-acl \ ${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES.clamd > ${WRKDIR}/POST-INSTALL-NOTES.clamd .else @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES .endif @${SED} ${SED_SCRIPT} ${MASTERDIR}/pkg-message > ${WRKDIR}/pkg-message pre-install: @PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL post-install: @${INSTALL_SCRIPT} ${WRKDIR}/exim.sh ${RC_DIR}/exim${RC_SUFX} @${MKDIR} ${PREFIX}/etc/periodic/daily .for script in ${DAILY_SCRIPTS} @${INSTALL_SCRIPT} ${WRKDIR}/${script}.sh ${PREFIX}/etc/periodic/daily/${script} .endfor @[ -f ${PREFIX}/etc/exim/configure ] || \ ${CP} ${PREFIX}/etc/exim/configure.default ${PREFIX}/etc/exim/configure .for manfile in ${MAN8} @${INSTALL_MAN} ${WRKSRC}/doc/${manfile} ${MAN8PREFIX}/man/man8 .endfor .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} @${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES ${DOCSDIR} .if !defined(WITHOUT_EXISCAN) @${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES.clamd ${DOCSDIR} .endif .for docfile in ${PORTDOC_FILES} @${INSTALL_DATA} ${WRKSRC}/doc/${docfile} ${DOCSDIR} .endfor @${MKDIR} ${EXAMPLESDIR} .for example in ${PORT_EXAMPLES} @${INSTALL_SCRIPT} ${WRKSRC}/build-${OPSYS}-${MACHINE_ARCH}/${example} ${EXAMPLESDIR} .endfor .endif @${CAT} ${PKGMESSAGE} @PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL .include