rtpengine: bump to 10.5.2.6
[feed/telephony.git] / net / rtpengine / Makefile
1 #
2 # Copyright (C) 2020 Sebastian Kemper <sebastian_ml@gmx.net>
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9 include $(INCLUDE_DIR)/kernel.mk
10
11 PKG_NAME:=rtpengine
12 PKG_VERSION:=10.5.2.6
13 PKG_RELEASE:=$(AUTORELEASE)
14
15 PKG_SOURCE:=$(PKG_NAME)-mr$(PKG_VERSION).tar.gz
16 PKG_SOURCE_URL:=https://codeload.github.com/sipwise/rtpengine/tar.gz/mr$(PKG_VERSION)?
17 PKG_HASH:=6f6d5cc2ebf27b6361ed2bd2f86a0ca74103503fd1a14af69ed423dba8340bc4
18
19 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-mr$(PKG_VERSION)
20
21 PKG_LICENSE:=GPL-3.0
22 PKG_LICENSE_FILES:=LICENSE
23
24 PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
25
26 # When building in parallel, some files (like streambuf.c or dtmflib.c)
27 # are generated multiple times by the rtpengine build system.
28 # Intermittently they then contain garbage, leading to redefinition
29 # errors.
30 PKG_BUILD_PARALLEL:=0
31
32 PKG_BUILD_DEPENDS:=gperf/host perl/host
33
34 # With below variable set, $(PKG_SYMVERS_DIR)/rtpengine.symvers gets generated
35 # from kernel-module/Module.symvers.
36 PKG_EXTMOD_SUBDIRS:=kernel-module
37
38 include $(INCLUDE_DIR)/package.mk
39 include $(INCLUDE_DIR)/nls.mk
40
41 ENGINE_DEPENDS := \
42 +glib2 \
43 +json-glib \
44 +libevent2 \
45 +libevent2-pthreads \
46 +libhiredis \
47 +libip4tc \
48 +libopenssl \
49 +libpcap \
50 +libpcre \
51 +libwebsockets \
52 +xmlrpc-c-client \
53 +zlib
54
55 ENGINE_DEPENDS_TRANSCODING := \
56 $(ENGINE_DEPENDS) \
57 +bcg729 \
58 +libffmpeg-full \
59 +libmariadb \
60 +libspandsp3
61
62 RECORDING_DEPENDS := \
63 +bcg729 \
64 +glib2 \
65 +libffmpeg-full \
66 +libmariadb \
67 +libopenssl
68
69 RTPENGINE_USERID:=378
70 RTPENGINE_GROUPID:=$(RTPENGINE_USERID)
71 RTPENGINE_USER:=$(PKG_NAME)=$(RTPENGINE_USERID):$(PKG_NAME)=$(RTPENGINE_GROUPID)
72
73 define Package/rtpengine/Default
74 URL:=https://github.com/sipwise/rtpengine
75 endef
76
77 define Package/rtpengine/Template
78 $(call Package/rtpengine/Default)
79 TITLE:=Sipwise RTP Engine
80 CATEGORY:=Network
81 SECTION:=net
82 SUBMENU:=Telephony
83 USERID:=$(RTPENGINE_USER)
84 endef
85
86 define Package/rtpengine/description/Template
87 The Sipwise NGCP rtpengine is a proxy for RTP traffic and other UDP
88 based media traffic. It's meant to be used with the Kamailio SIP proxy
89 and forms a drop-in replacement for any of the other available RTP and
90 media proxies.
91 endef
92
93 define Package/rtpengine
94 $(call Package/rtpengine/Template)
95 VARIANT:=transcode
96 DEPENDS := \
97 $(patsubst +%,+PACKAGE_rtpengine:%,$(ENGINE_DEPENDS_TRANSCODING)) \
98 +IPV6:libip6tc
99 endef
100
101 define Package/rtpengine/conffiles
102 /etc/config/rtpengine
103 /etc/init.d/rtpengine
104 /etc/rtpengine/rtpengine.conf
105 endef
106
107 define Package/rtpengine/description
108 $(call Package/rtpengine/description/Template)
109
110 Please consider installing kmod-ipt-rtpengine.
111
112 endef
113
114 define Package/rtpengine/install
115 $(INSTALL_DIR) $(1)/usr/bin
116 $(INSTALL_BIN) $(PKG_BUILD_DIR)/daemon/rtpengine $(1)/usr/bin
117
118 $(INSTALL_DIR) $(1)/etc/init.d
119 $(INSTALL_BIN) ./files/rtpengine.init $(1)/etc/init.d/rtpengine
120
121 $(INSTALL_DIR) $(1)/etc/config
122 $(INSTALL_CONF) ./files/rtpengine.conf $(1)/etc/config/rtpengine
123
124 $(INSTALL_DIR) $(1)/etc/rtpengine
125 $(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/rtpengine.conf \
126 $(1)/etc/rtpengine/rtpengine.conf
127
128 $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
129 $(INSTALL_BIN) ./files/rtpengine.hotplug \
130 $(1)/etc/hotplug.d/iface/90-rtpengine
131 endef
132
133 define Package/rtpengine-no-transcode
134 $(call Package/rtpengine/Template)
135 TITLE+= (no transcoding)
136 VARIANT:=no-transcode
137 CONFLICTS:=rtpengine
138 DEPENDS := \
139 $(patsubst +%,+PACKAGE_rtpengine-no-transcode:%,$(ENGINE_DEPENDS)) \
140 +IPV6:libip6tc
141 endef
142
143 Package/rtpengine-no-transcode/conffiles=$(Package/rtpengine/conffiles)
144
145 define Package/rtpengine-no-transcode/description
146 $(call Package/rtpengine/description/Template)
147
148 This package comes without transcoding support.
149
150 Please consider installing kmod-ipt-rtpengine.
151
152 endef
153
154 Package/rtpengine-no-transcode/install=$(Package/rtpengine/install)
155
156 define Package/rtpengine-recording
157 $(call Package/rtpengine/Default)
158 TITLE:=Sipwise RTP Recording Daemon
159 CATEGORY:=Network
160 SECTION:=net
161 SUBMENU:=Telephony
162 USERID:=$(RTPENGINE_USER)
163 DEPENDS:=$(patsubst +%,+PACKAGE_rtpengine-recording:%,$(RECORDING_DEPENDS))
164 endef
165
166 define Package/rtpengine-recording/conffiles
167 /etc/config/rtpengine-recording
168 /etc/rtpengine/rtpengine-recording.conf
169 endef
170
171 define Package/rtpengine-recording/install
172 $(INSTALL_DIR) $(1)/usr/bin
173 $(INSTALL_BIN) \
174 $(PKG_BUILD_DIR)/recording-daemon/rtpengine-recording \
175 $(1)/usr/bin
176
177 $(INSTALL_DIR) $(1)/etc/init.d
178 $(INSTALL_BIN) ./files/rtpengine-recording.init \
179 $(1)/etc/init.d/rtpengine-recording
180
181 $(INSTALL_DIR) $(1)/etc/config
182 $(INSTALL_CONF) ./files/rtpengine-recording.conf \
183 $(1)/etc/config/rtpengine-recording
184
185 $(INSTALL_DIR) $(1)/etc/rtpengine
186 $(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/rtpengine-recording.conf \
187 $(1)/etc/rtpengine/rtpengine-recording.conf
188 endef
189
190 define Package/iptables-mod-rtpengine
191 $(call Package/rtpengine/Default)
192 TITLE:=Sipwise rtpengine iptables extension
193 CATEGORY:=Network
194 SECTION:=net
195 SUBMENU:=Firewall
196 DEPENDS:=+PACKAGE_iptables-mod-rtpengine:libxtables
197 endef
198
199 define Package/iptables-mod-rtpengine/install
200 $(INSTALL_DIR) $(1)/usr/lib/iptables
201 $(INSTALL_BIN) \
202 $(PKG_BUILD_DIR)/iptables-extension/libxt_RTPENGINE.so \
203 $(1)/usr/lib/iptables
204 endef
205
206 define KernelPackage/ipt-rtpengine
207 $(call Package/rtpengine/Default)
208 TITLE:=Sipwise rtpengine netfilter module
209 SUBMENU:=Netfilter Extensions
210 FILES:=$(PKG_BUILD_DIR)/kernel-module/xt_RTPENGINE.$(LINUX_KMOD_SUFFIX)
211 AUTOLOAD:=$(call AutoProbe,xt_RTPENGINE)
212 DEPENDS := \
213 +PACKAGE_kmod-ipt-rtpengine:kmod-crypto-aead \
214 +PACKAGE_kmod-ipt-rtpengine:kmod-crypto-hash \
215 +PACKAGE_kmod-ipt-rtpengine:kmod-ipt-core
216 MODPARAMS.xt_RTPENGINE := \
217 proc_uid=$(RTPENGINE_USERID) \
218 proc_gid=$(RTPENGINE_GROUPID)
219 USERID:=$(RTPENGINE_USER)
220 endef
221
222 define KernelPackage/ipt-rtpengine/conffiles
223 /etc/modules.d/ipt-rtpengine
224 endef
225
226 define KernelPackage/ipt-rtpengine/description
227 Netfilter kernel module for rtpengine
228
229 endef
230
231 MAKE_VARS+=RTPENGINE_VERSION=$(PKG_VERSION)
232
233 ifeq ($(BUILD_VARIANT),no-transcode)
234 MAKE_VARS+=with_transcoding=no
235 endif
236
237 # rtpengine uses Debian's dpkg utility programs if it can find them. But
238 # we don't want build host flags to leak into our cross-compile.
239 define Build/Prepare
240 $(call Build/Prepare/Default)
241 ifeq ($(QUILT),)
242 cd "$(PKG_BUILD_DIR)" && \
243 $(FIND) . -maxdepth 2 -name "*Makefile" | \
244 xargs -I{} $(SED) \
245 '/shell which dpkg-/s/dpkg/OpenWrt-has-no-dpkg/' {} && \
246 $(SED) 's|#!/usr/bin/perl|#!$(STAGING_DIR_HOSTPKG)/usr/bin/perl|' \
247 utils/const_str_hash
248 endif
249 endef
250
251 define Build/Configure
252 endef
253
254 define Build/Compile
255
256 ifneq ($(CONFIG_PACKAGE_kmod-ipt-rtpengine),)
257 RTPENGINE_VERSION=$(PKG_VERSION) $(MAKE) \
258 $(PKG_JOBS) \
259 -C $(PKG_BUILD_DIR)/kernel-module \
260 KSRC=$(LINUX_DIR) \
261 $(KERNEL_MAKE_FLAGS)
262 endif
263
264 ifneq ($(CONFIG_PACKAGE_iptables-mod-rtpengine),)
265 $(call Build/Compile/Default,-C $(PKG_BUILD_DIR)/iptables-extension)
266 endif
267
268 ifneq ($(CONFIG_PACKAGE_rtpengine)$(CONFIG_PACKAGE_rtpengine-no-transcode),)
269 $(call Build/Compile/Default,-C $(PKG_BUILD_DIR)/daemon)
270 endif
271
272 ifneq ($(CONFIG_PACKAGE_rtpengine-recording),)
273 $(call Build/Compile/Default,-C $(PKG_BUILD_DIR)/recording-daemon)
274 endif
275
276 endef
277
278 define Build/InstallDev
279 endef
280
281 # KernelPackage calls need to go first, otherwise hooks like
282 # collect_module_symvers won't get added.
283 $(eval $(call KernelPackage,ipt-rtpengine))
284 $(eval $(call BuildPackage,rtpengine-no-transcode))
285 $(eval $(call BuildPackage,iptables-mod-rtpengine))
286 $(eval $(call BuildPackage,rtpengine))
287 $(eval $(call BuildPackage,rtpengine-recording))