1# Copyright 1999-2020 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2
3
4EAPI=6
5
6inherit eutils flag-o-matic toolchain-funcs user
7
8IUSE="ipv6 mysql radius postgres jabber ssl odbc sctp rtpengine redis pua ims presence sqlite snmp json http ldap geoip2 erlang xml jansson lua evapi"
9
10DESCRIPTION="The Open Source SIP Server"
11HOMEPAGE="http://www.kamailio.org/"
12
13if [[ ${PV} == 9999 ]]; then
14	inherit git-r3
15	EGIT_REPO_URI="https://github.com/kamailio/kamailio.git"
16else
17	SRC_URI="http://www.${PN}.org/pub/${PN}/${PV}/src/${P}_src.tar.gz"
18fi
19
20SLOT="0"
21LICENSE="GPL-2+"
22KEYWORDS="~amd64 ~x86"
23
24RDEPEND=">=sys-devel/bison-1.35
25	>=sys-devel/flex-2.5.4a
26	app-text/dos2unix
27	dev-libs/libpcre
28	>=dev-libs/libical-3.0.5
29	ssl? ( dev-libs/openssl )
30	mysql? ( virtual/mysql )
31	radius? ( >=net-dialup/radiusclient-ng-0.5.0 )
32	postgres? ( dev-db/libpq )
33	jabber? ( dev-libs/expat )
34	odbc? ( dev-db/unixODBC )
35	sctp? ( net-misc/lksctp-tools )
36	redis? ( dev-db/redis )
37	rtpengine? ( net-misc/ngcp-rtpengine )
38	ldap? ( net-nds/openldap )
39	sqlite? ( dev-db/sqlite )
40	snmp? ( net-analyzer/net-snmp )
41	xml? ( dev-libs/libxml2 )
42	jansson? ( dev-libs/jansson )
43	json? ( dev-libs/json-c )
44	lua? ( dev-lang/lua )
45	geoip2? ( dev-libs/libmaxminddb )
46	evapi? ( >=dev-libs/libev-4.23 )"
47
48DEPEND="${RDEPEND}"
49
50src_prepare() {
51	eapply_user
52}
53
54src_configure() {
55	use ipv6 || \
56		sed -i -e "s/-DUSE_IPV6//g" Makefile.defs
57
58	use ssl && \
59		sed -i -e "s:^#\(TLS=1\).*:\1:" Makefile && \
60		KAMODULES="${KAMODULES} tls"
61
62	use mysql && KAMODULES="${KAMODULES} db_mysql"
63
64	use radius && KAMODULES="${KAMODULES} acc_radius auth_radius misc_radius"
65
66	use jabber && KAMODULES="${KAMODULES} xmpp"
67	use jabber && \
68		use pua && \
69		KAMODULES="${KAMODULES} pua_xmpp"
70
71	use postgres && KAMODULES="${KAMODULES} db_postgres"
72
73	use odbc && KAMODULES="${KAMODULES} db_unixodbc"
74
75	use sqlite && KAMODULES="${KAMODULES} db_sqlite"
76
77	use sctp && KAMODULES="${KAMODULES} sctp"
78
79	use redis && KAMODULES="${KAMODULES} db_redis ndb_redis topos_redis"
80
81	use json && KAMODULES="${KAMODULES} json acc_json jsonrpcc"
82	use json && \
83		use pua && \
84		KAMODULES="${KAMODULES} pua_json"
85
86	use pua && KAMODULES="${KAMODULES} pua pua_bla pua_dialoginfo pua_reginfo pua_rpc pua_usrloc"
87
88	use ims && KAMODULES="${KAMODULES} ims_auth ims_charging ims_dialog ims_diameter_server ims_icscf ims_ipsec_pcscf ims_isc ims_ocs ims_qos ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf ims_usrloc_scscf cdp cdp_avp"
89
90	use presence && KAMODULES="${KAMODULES} presence presence_conference presence_dialoginfo presence_mwi presence_profile presence_reginfo presence_xml"
91
92	use snmp && KAMODULES="${KAMODULES} snmpstats"
93
94	use http && KAMODULES="${KAMODULES} http_async_client http_client"
95
96	use ldap && KAMODULES="${KAMODULES} ldap"
97
98	use geoip2 && KAMODULES="${KAMODULES} geoip2"
99
100	use erlang && KAMODULES="${KAMODULES} erlang"
101
102	use evapi && KAMODULES="${KAMODULES} evapi"
103
104	use xml && KAMODULES="${KAMODULES} xmlops"
105
106	use lua && KAMODULES="${KAMODULES} app_lua"
107
108	use jansson && KAMODULES="${KAMODULES} jansson"
109
110	KAMODULES="${KAMODULES} dialplan lcr outbound utils regex uuid"
111}
112
113src_compile() {
114	use amd64 && append-flags "-fPIC"
115	use json && append-flags "-I/usr/include/json-c"
116
117	emake \
118		CC="$(tc-getCC)" \
119		CPU_TYPE="$(get-flag march)" \
120		mode="release" \
121		prefix="/usr" \
122		include_modules="${KAMODULES}" \
123		cfg_prefix="/etc" \
124		cfg_dir="${PN}/" \
125		cfg_target="/etc/${PN}/" \
126		doc_dir="share/doc/${PF}/" \
127		all || die
128}
129
130src_install () {
131	emake \
132		BASEDIR="${D}" \
133		mode="release" \
134		prefix="/usr" \
135		include_modules="${KAMODULES}" \
136		cfg_prefix="${D}/etc" \
137		cfg_dir="${PN}/" \
138		cfg_target="/etc/${PN}/" \
139		doc_dir="share/doc/${PF}/" \
140		share_prefix="${D}/usr/" \
141		share_dir="share/${PF}/" \
142		data_prefix="${D}/usr" \
143		data_dir="share/${PF}/" \
144		data_target="/usr/share/${PF}/" \
145		install || die
146
147	newinitd "${FILESDIR}/${PN}".initd ${PN}
148	newconfd "${FILESDIR}/${PN}".confd ${PN}
149
150	cd "${S}"
151	dodoc ChangeLog CODE_OF_CONDUCT.md COPYING INSTALL ISSUES README README.md
152}
153
154pkg_preinst() {
155	if [[ -z "$(egetent passwd ${PN})" ]]; then
156		einfo "Adding ${PN} user and group"
157		enewgroup ${PN}
158		enewuser  ${PN} -1 -1 /dev/null ${PN}
159	fi
160	chown -R root:${PN}  ${D}/etc/${PN}
161	chmod -R u=rwX,g=rX,o= ${D}/etc/${PN}
162}