1PORTNAME?=	proftpd
2.if !defined(DISTVERSION)
3PORTVERSION?=	${PROFTPD_VERSION}
4.endif
5PORTREVISION?=	0
6CATEGORIES?=	ftp
7MASTER_SITES=	ftp://ftp.proftpd.org/distrib/source/ \
8		https://github.com/downloads/proftpd/proftpd.github.com/ \
9		ftp://ftpmirror.uk/ftp.proftpd.org/distrib/source/ \
10		http://www.mirrorservice.org/sites/ftp.proftpd.org/distrib/source/
11.if defined(_BUILDING_PROFTPD_MODULE)
12DISTNAME=	proftpd-${PROFTPD_VERSION}
13.endif
14
15MAINTAINER?=	ports@MidnightBSD.org
16COMMENT?=	Highly configurable FTP daemon
17WWW?=		http://www.proftpd.org/
18
19LICENSE?=	gpl2
20LICENSE_FILE?=	${WRKSRC}/COPYING
21
22.if defined(_BUILDING_PROFTPD_MODULE)
23BUILD_DEPENDS+=	${LOCALBASE}/sbin/proftpd:ftp/proftpd
24RUN_DEPENDS+=	${LOCALBASE}/sbin/proftpd:ftp/proftpd
25.endif
26
27PROFTPD_VERSION=	1.3.8b
28
29CPE_VENDOR=	proftpd
30CPE_PRODUCT=	proftpd
31
32.if defined(_BUILDING_PROFTPD_MODULE)
33DISTFILES+=	${DISTNAME}${EXTRACT_SUFX}
34EXTRACT_ONLY+=	${DISTNAME}${EXTRACT_SUFX}
35WRKSRC=		${WRKDIR}/proftpd-${PROFTPD_VERSION}
36. if defined(_PROFTPD_MODULE_EXTRACT_ONLY)
37EXTRACT_ONLY+=	${_PROFTPD_MODULE_EXTRACT_ONLY}
38. endif
39. if defined(_PROFTPD_MODULE_DISTFILES)
40DISTFILES+=	${_PROFTPD_MODULE_DISTFILES}
41DISTINFO_FILE=	${.CURDIR}/distinfo
42. endif
43. if defined(_PROFTPD_MODULE_MASTER_SITES)
44MASTER_SITES+=	${_PROFTPD_MODULE_MASTER_SITES}
45. endif
46.endif
47
48.if !defined(_BUILDING_PROFTPD_MODULE)
49PORTDOCS=	*
50.endif
51
52MAKE_JOBS_UNSAFE=	yes
53USES+=		gmake libtool
54GNU_CONFIGURE=	yes
55
56.if !defined(_BUILDING_PROFTPD_MODULE)
57USES+=		cpe ssl
58USE_RC_SUBR=	proftpd
59.endif
60
61LOCALSTATEDIR?=	/var/run
62
63CONFIGURE_ARGS=--localstatedir=${LOCALSTATEDIR} \
64		--libexecdir=${PREFIX}/libexec/proftpd \
65		--with-pkgconfig=libdata/pkgconfig \
66		--sysconfdir=${PREFIX}/etc \
67		--enable-ctrls \
68		--enable-dso \
69		--disable-sendfile
70
71CONFIGURE_ENV+=	install_user=`${ID} -u` \
72		install_group=`${ID} -g`
73
74.if defined(_BUILDING_PROFTPD_MODULE)
75MODULES=		${_BUILDING_PROFTPD_MODULE}
76.for m in ${MODULES}
77__MODULES:=${__MODULES}:${m}
78.endfor
79CONFIGURE_ARGS+=	--with-shared=${__MODULES:C/^://g}
80INCLUDEDIRS:=${INCLUDEDIRS}:${LOCALBASE}/include/proftpd
81ALL_TARGET=	shared
82BUILD_WRKSRC=	${WRKSRC}/modules
83INSTALL_WRKSRC=	${WRKSRC}/modules
84PLIST=		${WRKDIR}/PLIST
85.for m in ${MODULES}
86PLIST_FILES+=	libexec/proftpd/${m}.a \
87		libexec/proftpd/${m}.so
88.endfor
89.else
90OPTIONS_DEFINE=	DOCS HTMLDOCS IPV6 NLS MEMCACHE REDIS
91OPTIONS_DEFAULT=	PCRE2
92
93OPTIONS_RADIO+=	PCREVER
94OPTIONS_RADIO_PCREVER=	PCRE1 PCRE2
95
96HTMLDOCS_DESC=		Include HTML documentation
97MEMCACHE_DESC=		Memcache support using libmemcached
98PCREVER_DESC=		PCRE library to use
99PCRE1_DESC=		${PCRE_DESC}
100PCRE2_DESC=		${PCRE_DESC} version 2
101REDIS_DESC=		Redis support using hiredis
102
103PLIST_SUB+=	LOCALSTATEDIR="${LOCALSTATEDIR}"
104OPTIONS_SUB=	yes
105
106.endif #!defined(_BUILDING_PROFTPD_MODULE)
107
108.if !defined(_BUILDING_PROFTPD_MODULE)
109CPPFLAGS+=	-DHAVE_OPENSSL -I${OPENSSLINC}
110LIBS+=		-lssl -lcrypto -L${OPENSSLLIB}
111LDFLAGS+=	-lpthread
112.endif
113
114.if !defined(_BUILDING_PROFTPD_MODULE)
115LIBDIRS?=	${LOCALBASE}/lib
116INCLUDEDIRS?=	${LOCALBASE}/include
117
118# Always built modules
119MODULES+=	mod_ban \
120		mod_copy \
121		mod_ctrls_admin \
122		mod_deflate \
123		mod_dnsbl \
124		mod_dynmasq \
125		mod_exec \
126		mod_ifsession \
127		mod_ifversion \
128		mod_qos \
129		mod_quotatab \
130		mod_quotatab_file \
131		mod_quotatab_radius \
132		mod_quotatab_sql \
133		mod_radius \
134		mod_ratio \
135		mod_readme \
136		mod_rewrite \
137		mod_sftp \
138		mod_sftp_pam \
139		mod_sftp_sql \
140		mod_shaper \
141		mod_site_misc \
142		mod_snmp \
143		mod_sql \
144		mod_sql_passwd \
145		mod_tls \
146		mod_tls_shmcache \
147		mod_unique_id \
148		mod_wrap2 \
149		mod_wrap2_file \
150		mod_wrap2_sql
151
152IPV6_CONFIGURE_ENABLE=ipv6
153
154NLS_CONFIGURE_ON=	--enable-nls
155NLS_USES=		gettext iconv
156
157PCRE1_CONFIGURE_ENABLE=	pcre
158PCRE1_CONFIGURE_ON=	--disable-pcre2
159PCRE1_LIB_DEPENDS=	libpcre.so:devel/pcre
160
161PCRE2_CONFIGURE_ENABLE=	pcre2
162PCRE2_CONFIGURE_ON=	--disable-pcre
163PCRE2_LIB_DEPENDS=	libpcre2-8.so:devel/pcre2
164
165MEMCACHE_LIB_DEPENDS=	libmemcached.so:databases/libmemcached
166MEMCACHE_CONFIGURE_ENABLE=	memcache
167MEMCACHE_VARS=		MODULES+="mod_memcache mod_tls_memcache" \
168			LIBS+="-L${LOCALBASE}/lib -lmemcached -lmemcachedutil"
169
170REDIS_LIB_DEPENDS=	libhiredis.so:databases/hiredis
171REDIS_CONFIGURE_ENABLE=		redis
172REDIS_VARS=		MODULES+="mod_redis mod_tls_redis mod_wrap2_redis" \
173			LIBS+="-L${LOCALBASE}/lib -lhiredis"
174
175.include <bsd.mport.options.mk>
176
177# Generate modules configuration string
178.for m in ${MODULES}
179_MODULES:=${_MODULES}:${m}
180.endfor
181
182# Keep this here below, in case similar constructs need to be made
183CONFIGURE_ARGS+=	--with-shared=${_MODULES:C/^://g}
184
185.endif #!defined(_BUILDING_PROFTPD_MODULE)
186
187CONFIGURE_ARGS+=	--with-includes=${INCLUDEDIRS}
188CONFIGURE_ARGS+=	--with-libraries=${LIBDIRS}
189
190.include <bsd.port.pre.mk>
191
192.if !defined(_BUILDING_PROFTPD_MODULE)
193
194.if empty(ICONV_PREFIX)
195CONFIGURE_ARGS+=	ac_cv_lib_iconv_iconv_open=no \
196			ac_cv_lib_iconv_libiconv_open=no
197.endif
198
199post-patch:
200	@${REINPLACE_CMD} -e 's|proftpd\.conf |proftpd.conf.sample |g' ${WRKSRC}/Makefile.in
201
202pre-configure:
203	@${ECHO_MSG} "==> Configuring with following modules:"
204	@${ECHO_MSG} "${MODULES:C/^://g}"
205
206post-configure:
207	${REINPLACE_CMD} -e 's: -lnsl::' ${WRKSRC}/Make.rules
208	${REINPLACE_CMD} -e 's:/usr/sbin:${PREFIX}/sbin:' \
209		-e 's:/usr/bin:${PREFIX}/bin:' \
210		${WRKSRC}/src/proftpd.8 ${WRKSRC}/utils/ftpshut.8 \
211		${WRKSRC}/utils/ftpcount.1
212
213.endif #!defined(_BUILDING_PROFTPD_MODULE)
214
215.if defined(_BUILDING_PROFTPD_MODULE)
216pre-build:
217	@cd ${WRKSRC} && ${MAKE_CMD} include/buildstamp.h
218
219pre-install:
220	@${MKDIR} ${PREFIX}/libexec/proftpd
221
222.else
223post-install:
224	@${MKDIR} /var/run/proftpd
225.if ${PORT_OPTIONS:MDOCS}
226	@${INSTALL} -d ${DOCSDIR}
227	@cd ${WRKSRC} && ${CP} README* RELEASE_NOTES ${DOCSDIR}
228	@cd ${WRKSRC}/doc/ && ${INSTALL_DATA} license.txt ${DOCSDIR}
229. if ${PORT_OPTIONS:MHTMLDOCS}
230	@${INSTALL} -d ${DOCSDIR}/html
231	@cd ${WRKSRC}/doc/ && ${INSTALL_DATA} faq.html ${DOCSDIR}/html
232	@${CP} -RP ${WRKSRC}/doc/contrib ${DOCSDIR}/html/contrib
233	@${CP} -RP ${WRKSRC}/doc/modules ${DOCSDIR}/html/modules
234	@${CP} -RP ${WRKSRC}/doc/howto ${DOCSDIR}/html/howto
235. endif
236.endif
237	@${INSTALL_MAN} ${WRKSRC}/src/ftpdctl.8 ${PREFIX}/share/man/man8/
238.endif #!defined(_BUILDING_PROFTPD_MODULE)
239
240.include <bsd.port.post.mk>
241