1PORTNAME=	ejabberd
2PORTVERSION=	25.04
3CATEGORIES=	net-im
4
5MAINTAINER=	ports@MidnightBSD.org
6COMMENT=	Free and Open Source distributed fault-tolerant XMPP server
7WWW=		https://www.ejabberd.im/
8
9LICENSE=	gpl2
10LICENSE_FILE=	${WRKSRC}/COPYING
11
12BROKEN_riscv64=		fails to build: Hard-float 'd' ABI can't be used for a target that doesn't support the D instruction set extension
13
14BUILD_DEPENDS=	erlc:lang/erlang
15RUN_DEPENDS=	erl:lang/erlang
16LIB_DEPENDS=	libexpat.so:textproc/expat2 \
17		libyaml.so:textproc/libyaml \
18		libgd.so:graphics/gd \
19		libpng.so:graphics/png \
20		libwebp.so:graphics/webp
21
22USES=		compiler:c11 cpe gmake pkgconfig shebangfix ssl jpeg \
23		autoreconf:build
24
25USERS=		ejabberd
26GROUPS=		${USERS}
27
28GNU_CONFIGURE=	yes
29GNU_CONFIGURE_MANPREFIX=	${PREFIX}/share
30USE_RC_SUBR=	${PORTNAME}
31NOPRECIOUSMAKEVARS=	yes
32CPE_VENDOR=	process-one
33
34USE_GITHUB=	yes
35GH_ACCOUNT=	processone
36GH_TUPLE=	processone:p1_utils:${P1_UTILS_VER}:p1_utils/deps/p1_utils \
37		processone:cache_tab:${CACHE_TAB_VER}:cache_tab/deps/cache_tab \
38		processone:fast_tls:${FAST_TLS_VER}:fast_tls/deps/fast_tls \
39		processone:stringprep:${STRINGPREP_VER}:stringprep/deps/stringprep \
40		processone:fast_xml:${FAST_XML_VER}:fast_xml/deps/fast_xml \
41		processone:xmpp:${XMPP_VER}:xmpp/deps/xmpp \
42		processone:fast_yaml:${FAST_YAML_VER}:fast_yaml/deps/fast_yaml \
43		davisp:jiffy:${JIFFY_VER}:jiffy/deps/jiffy \
44		processone:p1_oauth2:${P1_OAUTH2_VER}:p1_oauth2/deps/p1_oauth2 \
45		potatosalad:erlang-jose:${JOSE_VER}:jose/deps/jose \
46		processone:eimp:${EIMP_VER}:eimp/deps/eimp \
47		dvv:base64url:${BASE64URL_VER}:base64url/deps/base64url \
48		processone:ezlib:${EZLIB_VER}:ezlib/deps/ezlib \
49		processone:pkix:${PKIX_VER}:pkix/deps/pkix \
50		processone:mqtree:${MQTREE_VER}:mqtree/deps/mqtree \
51		processone:yconf:${YCONF_VER}:yconf/deps/yconf \
52		processone:p1_acme:${P1_ACME_VER}:p1_acme/deps/p1_acme \
53		benoitc:erlang-idna:${IDNA_VER}:idna/deps/idna \
54		benoitc:unicode_util_compat:${UNICODE_UTIL_COMPAT_VER}:unicode_util_compat/deps/unicode_util_compat
55
56OPTIONS_DEFINE=	ODBC PAM DOCS LUA MYSQL PGSQL REDIS SIP SQLITE \
57		STUN FULLXML
58OPTIONS_DEFAULT=SQLITE STUN
59
60EJABBERD_LIBDIR=lib/erlang/lib
61MAKE_ENV=	PORTVERSION=${PORTVERSION}
62CONFIGURE_ARGS+=--localstatedir=/var --libdir=${PREFIX}/${EJABBERD_LIBDIR} --with-rebar=rebar
63MAKE_ARGS=	"CPPFLAGS=${CPPFLAGS}" "CFLAGS=${CFLAGS}" "LDFLAGS=${LDFLAGS}"
64CPPFLAGS+=	-I${LOCALBASE}/include
65CFLAGS+=	-I${LOCALBASE}/include
66LDFLAGS+=	-L${LOCALBASE}/lib
67SUBS=		PORTNAME=${PORTNAME} PORTVERSION=${PORTVERSION}		\
68		EJABBERD_LIBDIR=${EJABBERD_LIBDIR}			\
69		BASE64URL_VER=${BASE64URL_VER}				\
70		CACHE_TAB_VER=${CACHE_TAB_VER} EIMP_VER=${EIMP_VER}	\
71		EPAM_VER=${EPAM_VER} EREDIS_VER=${EREDIS_VER}		\
72		ESIP_VER=${ESIP_VER} EZLIB_VER=${EZLIB_VER}		\
73		FAST_TLS_VER=${FAST_TLS_VER}				\
74		FAST_XML_VER=${FAST_XML_VER}				\
75		FAST_YAML_VER=${FAST_YAML_VER}				\
76		IDNA_VER=${IDNA_VER}					\
77		JIFFY_VER=${JIFFY_VER} JOSE_VER=${JOSE_VER}		\
78		LUERL_VER=${LUERL_VER}					\
79		MQTREE_VER=${MQTREE_VER}				\
80		P1_ACME_VER=${P1_ACME_VER}				\
81		P1_MYSQL_VER=${P1_MYSQL_VER}				\
82		P1_OAUTH2_VER=${P1_OAUTH2_VER}				\
83		P1_PGSQL_VER=${P1_PGSQL_VER}				\
84		P1_UTILS_VER=${P1_UTILS_VER} PKIX_VER=${PKIX_VER}	\
85		SQLITE3_VER=${SQLITE3_VER}				\
86		STRINGPREP_VER=${STRINGPREP_VER} STUN_VER=${STUN_VER}	\
87		UNICODE_UTIL_COMPAT_VER=${UNICODE_UTIL_COMPAT_VER}	\
88		XMPP_VER=${XMPP_VER} YCONF_VER=${YCONF_VER}
89
90SUB_FILES=	pkg-message pkg-install
91PLIST_SUB=	${SUBS}
92SUB_LIST=	${SUBS} \
93		USERS=${USERS} GROUPS=${GROUPS} SHAREMODE=${SHAREMODE} \
94		SHAREOWN=${SHAREOWN} SHAREGRP=${SHAREGRP} \
95		EJABBERD_LIBDIR=${EJABBERD_LIBDIR}
96SHEBANG_FILES=	${WRKSRC}/ejabberdctl.template
97
98BASE64URL_VER=	1.0.1
99CACHE_TAB_VER=	1.0.31
100EIMP_VER=	1.0.24
101EPAM_VER=	1.0.14
102EREDIS_VER=	1.2.0
103ESIP_VER=	1.0.57
104EZLIB_VER=	1.0.13
105FAST_TLS_VER=	1.1.22
106FAST_XML_VER=	1.1.55
107FAST_YAML_VER=	1.0.37
108IDNA_VER=	6.0.0
109JIFFY_VER=	1.1.1
110JOSE_VER=	1.11.10
111LUERL_VER=	1.2
112MQTREE_VER=	1.0.17
113P1_ACME_VER=	1.0.25
114P1_MYSQL_VER=	1.0.26
115P1_OAUTH2_VER=	0.6.14
116P1_PGSQL_VER=	1.1.32
117P1_UTILS_VER=	1.0.27
118PKIX_VER=	1.0.10
119SQLITE3_VER=	1.1.15
120STRINGPREP_VER=	1.0.31
121STUN_VER=	1.2.17
122UNICODE_UTIL_COMPAT_VER=	0.4.1
123XMPP_VER=	1.10.0
124YCONF_VER=	1.0.18
125
126OPTIONS_SUB=		yes
127SIP_DESC=	SIP support
128STUN_DESC=	STUN/TURN support
129FULLXML_DESC=	Full XML support
130PAM_CONFIGURE_ENABLE=	pam
131PAM_GH_TUPLE=	processone:epam:${EPAM_VER}:epam/deps/epam
132ODBC_CONFIGURE_ENABLE=	odbc
133MYSQL_CONFIGURE_ENABLE=	mysql
134MYSQL_GH_TUPLE=	processone:p1_mysql:${P1_MYSQL_VER}:p1_mysql/deps/p1_mysql
135PGSQL_CONFIGURE_ENABLE=	pgsql
136PGSQL_GH_TUPLE=	processone:p1_pgsql:${P1_PGSQL_VER}:p1_pgsql/deps/p1_pgsql
137REDIS_CONFIGURE_ENABLE=	redis
138REDIS_GH_TUPLE=	wooga:eredis:v${EREDIS_VER}:eredis/deps/eredis
139REDIS_EXTRA_PATCHES=	${PATCHDIR}/extrapatch-deps_eredis_src_eredis.app.src
140SIP_CONFIGURE_ENABLE=	sip
141SIP_GH_TUPLE=	processone:esip:${ESIP_VER}:esip/deps/esip
142SIP_IMPLIES=	STUN
143STUN_CONFIGURE_ENABLE=	stun
144STUN_GH_TUPLE=	processone:stun:${STUN_VER}:stun/deps/stun
145SQLITE_CONFIGURE_ENABLE=sqlite
146SQLITE_GH_TUPLE=	processone:erlang-sqlite3:${SQLITE3_VER}:sqlite3/deps/sqlite3
147SQLITE_USES=		sqlite
148DOCS_MAKE_ARGS_OFF=	NOPORTDOCS=yes
149LUA_CONFIGURE_ENABLE=	lua
150LUA_GH_TUPLE=	rvirding:luerl:v${LUERL_VER}:luerl/deps/luerl
151
152.include <bsd.port.pre.mk>
153
154pre-everything::
155	@if ${PKG_BIN} query %n-%v net-im/ejabberd; then \
156		${ECHO_MSG} needs to be uninstalled, before this port build could proceed. ; \
157		${ECHO_MSG} For details: https://github.com/processone/ejabberd/issues/2194 ; \
158		${ECHO_MSG} Sorry for the inconvenience. ; \
159		exit 1; \
160	fi
161
162post-patch:
163	@${REINPLACE_CMD} -e 's,^convert,${LOCALBASE}/bin/convert,' ${WRKSRC}/tools/captcha.sh
164	@${REINPLACE_CMD} -e '/^AC_INIT(ejabberd,/s,m4_esyscmd([^)]*),${PORTVERSION},' \
165			${WRKSRC}/configure.ac
166
167pre-configure:
168	cd ${WRKSRC} && ${SH} autogen.sh
169	@${REINPLACE_CMD} -e 's,/usr/local,${LOCALBASE},g' ${WRKSRC}/configure
170
171pre-install:
172	@${MKDIR} ${PREFIX}/${EJABBERD_LIBDIR}
173
174post-install-PAM-on:
175	${INSTALL} -m 444 ${FILESDIR}/pam_ejabberd \
176		${FAKE_DESTDIR}${PREFIX}/etc/pam.d/ejabberd
177	${INSTALL} -m 0750 ${FAKE_DESTDIR}${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/lib/epam-${EPAM_VER}/priv/bin/epam \
178		${FAKE_DESTDIR}${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/priv/bin/epam
179	@${STRIP_CMD} ${FAKE_DESTDIR}${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/lib/epam-${EPAM_VER}/priv/bin/epam \
180		${FAKE_DESTDIR}${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/priv/bin/epam
181
182post-install:
183	@${FIND} ${PREFIX}/${EJABBERD_LIBDIR} -type f \
184		-name '*.so' -exec ${STRIP_CMD} {} \;
185	@${MKDIR} ${DATADIR}
186	${INSTALL_SCRIPT} ${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/priv/bin/captcha.sh \
187		${DATADIR}
188	@${CHMOD} +x ${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/lib/eimp-${EIMP_VER}/priv/bin/eimp
189	@${STRIP_CMD} ${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/lib/eimp-${EIMP_VER}/priv/bin/eimp
190	@cd ${WRKSRC}/sql && ${COPYTREE_SHARE} . ${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/priv/sql
191
192.include <bsd.port.post.mk>
193