rtpengine: bump to version 8.5.5.1
[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:=8.5.5.1
13 PKG_RELEASE:=1
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:=962368495343d6e7d3e9c45a8a8499972c2af3cd068f4758f3d2abf40a465d84
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
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 +xmlrpc-c-client \
52 +zlib
53
54 ENGINE_DEPENDS_TRANSCODING := \
55 $(ENGINE_DEPENDS) \
56 +bcg729 \
57 +libffmpeg-full \
58 +libmariadb \
59 +libspandsp
60
61 RECORDING_DEPENDS := \
62 +glib2 \
63 +libffmpeg-full \
64 +libmariadb \
65 +libopenssl
66
67 RTPENGINE_USERID:=378
68 RTPENGINE_GROUPID:=$(RTPENGINE_USERID)
69 RTPENGINE_USER:=$(PKG_NAME)=$(RTPENGINE_USERID):$(PKG_NAME)=$(RTPENGINE_GROUPID)
70
71 define Package/rtpengine/Default
72 URL:=https://github.com/sipwise/rtpengine
73 endef
74
75 define Package/rtpengine/Template
76 $(call Package/rtpengine/Default)
77 TITLE:=Sipwise RTP Engine
78 CATEGORY:=Network
79 SECTION:=net
80 SUBMENU:=Telephony
81 USERID:=$(RTPENGINE_USER)
82 endef
83
84 define Package/rtpengine/description/Template
85 The Sipwise NGCP rtpengine is a proxy for RTP traffic and other UDP
86 based media traffic. It's meant to be used with the Kamailio SIP proxy
87 and forms a drop-in replacement for any of the other available RTP and
88 media proxies.
89 endef
90
91 define Package/rtpengine
92 $(call Package/rtpengine/Template)
93 VARIANT:=transcode
94 DEPENDS := \
95 $(patsubst +%,+PACKAGE_rtpengine:%,$(ENGINE_DEPENDS_TRANSCODING)) \
96 +IPV6:libip6tc
97 endef
98
99 define Package/rtpengine/conffiles
100 /etc/config/rtpengine
101 /etc/init.d/rtpengine
102 /etc/rtpengine/rtpengine.conf
103 endef
104
105 define Package/rtpengine/description
106 $(call Package/rtpengine/description/Template)
107
108 Please consider installing kmod-ipt-rtpengine.
109
110 endef
111
112 define Package/rtpengine/install
113 $(INSTALL_DIR) $(1)/usr/bin
114 $(INSTALL_BIN) $(PKG_BUILD_DIR)/daemon/rtpengine $(1)/usr/bin
115
116 $(INSTALL_DIR) $(1)/etc/init.d
117 $(INSTALL_BIN) ./files/rtpengine.init $(1)/etc/init.d/rtpengine
118
119 $(INSTALL_DIR) $(1)/etc/config
120 $(INSTALL_CONF) ./files/rtpengine.conf $(1)/etc/config/rtpengine
121
122 $(INSTALL_DIR) $(1)/etc/rtpengine
123 $(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/rtpengine.sample.conf \
124 $(1)/etc/rtpengine/rtpengine.conf
125
126 $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
127 $(INSTALL_BIN) ./files/rtpengine.hotplug \
128 $(1)/etc/hotplug.d/iface/90-rtpengine
129 endef
130
131 define Package/rtpengine-no-transcode
132 $(call Package/rtpengine/Template)
133 TITLE+= (no transcoding)
134 VARIANT:=no-transcode
135 CONFLICTS:=rtpengine
136 DEPENDS := \
137 $(patsubst +%,+PACKAGE_rtpengine-no-transcode:%,$(ENGINE_DEPENDS)) \
138 +IPV6:libip6tc
139 endef
140
141 Package/rtpengine-no-transcode/conffiles=$(Package/rtpengine/conffiles)
142
143 define Package/rtpengine-no-transcode/description
144 $(call Package/rtpengine/description/Template)
145
146 This package comes without transcoding support.
147
148 Please consider installing kmod-ipt-rtpengine.
149
150 endef
151
152 Package/rtpengine-no-transcode/install=$(Package/rtpengine/install)
153
154 define Package/rtpengine-recording
155 $(call Package/rtpengine/Default)
156 TITLE:=Sipwise RTP Recording Daemon
157 CATEGORY:=Network
158 SECTION:=net
159 SUBMENU:=Telephony
160 USERID:=$(RTPENGINE_USER)
161 DEPENDS:=$(patsubst +%,+PACKAGE_rtpengine-recording:%,$(RECORDING_DEPENDS))
162 endef
163
164 define Package/rtpengine-recording/conffiles
165 /etc/config/rtpengine-recording
166 /etc/rtpengine/rtpengine-recording.conf
167 endef
168
169 define Package/rtpengine-recording/install
170 $(INSTALL_DIR) $(1)/usr/bin
171 $(INSTALL_BIN) \
172 $(PKG_BUILD_DIR)/recording-daemon/rtpengine-recording \
173 $(1)/usr/bin
174
175 $(INSTALL_DIR) $(1)/etc/init.d
176 $(INSTALL_BIN) ./files/rtpengine-recording.init \
177 $(1)/etc/init.d/rtpengine-recording
178
179 $(INSTALL_DIR) $(1)/etc/config
180 $(INSTALL_CONF) ./files/rtpengine-recording.conf \
181 $(1)/etc/config/rtpengine-recording
182
183 $(INSTALL_DIR) $(1)/etc/rtpengine
184 $(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/rtpengine-recording.sample.conf \
185 $(1)/etc/rtpengine/rtpengine-recording.conf
186 endef
187
188 define Package/iptables-mod-rtpengine
189 $(call Package/rtpengine/Default)
190 TITLE:=Sipwise rtpengine iptables extension
191 CATEGORY:=Network
192 SECTION:=net
193 SUBMENU:=Firewall
194 DEPENDS:=+PACKAGE_iptables-mod-rtpengine:libxtables
195 endef
196
197 define Package/iptables-mod-rtpengine/install
198 $(INSTALL_DIR) $(1)/usr/lib/iptables
199 $(INSTALL_BIN) \
200 $(PKG_BUILD_DIR)/iptables-extension/libxt_RTPENGINE.so \
201 $(1)/usr/lib/iptables
202 endef
203
204 define KernelPackage/ipt-rtpengine
205 $(call Package/rtpengine/Default)
206 TITLE:=Sipwise rtpengine netfilter module
207 SUBMENU:=Netfilter Extensions
208 FILES:=$(PKG_BUILD_DIR)/kernel-module/xt_RTPENGINE.$(LINUX_KMOD_SUFFIX)
209 AUTOLOAD:=$(call AutoProbe,xt_RTPENGINE)
210 DEPENDS := \
211 +PACKAGE_kmod-ipt-rtpengine:kmod-crypto-hash \
212 +PACKAGE_kmod-ipt-rtpengine:kmod-ipt-core
213 MODPARAMS.xt_RTPENGINE := \
214 proc_uid=$(RTPENGINE_USERID) \
215 proc_gid=$(RTPENGINE_GROUPID)
216 USERID:=$(RTPENGINE_USER)
217 endef
218
219 define KernelPackage/ipt-rtpengine/conffiles
220 /etc/modules.d/ipt-rtpengine
221 endef
222
223 define KernelPackage/ipt-rtpengine/description
224 Netfilter kernel module for rtpengine
225
226 endef
227
228 MAKE_VARS+=RTPENGINE_VERSION=$(PKG_VERSION)
229
230 ifeq ($(BUILD_VARIANT),no-transcode)
231 MAKE_VARS+=with_transcoding=no
232 endif
233
234 # rtpengine uses Debian's dpkg utility programs if it can find them. But
235 # we don't want build host flags to leak into our cross-compile.
236 define Build/Prepare
237 $(call Build/Prepare/Default)
238 ifeq ($(QUILT),)
239 cd "$(PKG_BUILD_DIR)" && \
240 $(FIND) . -maxdepth 2 -name "*Makefile" | \
241 xargs -I{} $(SED) \
242 '/shell which dpkg-/s/dpkg/OpenWrt-has-no-dpkg/' {}
243 endif
244 endef
245
246 define Build/Configure
247 endef
248
249 define Build/Compile
250
251 ifneq ($(CONFIG_PACKAGE_kmod-ipt-rtpengine),)
252 RTPENGINE_VERSION=$(PKG_VERSION) $(MAKE) \
253 $(PKG_JOBS) \
254 -C $(PKG_BUILD_DIR)/kernel-module \
255 KSRC=$(LINUX_DIR) \
256 $(KERNEL_MAKE_FLAGS)
257 endif
258
259 ifneq ($(CONFIG_PACKAGE_iptables-mod-rtpengine),)
260 $(call Build/Compile/Default,-C $(PKG_BUILD_DIR)/iptables-extension)
261 endif
262
263 ifneq ($(CONFIG_PACKAGE_rtpengine)$(CONFIG_PACKAGE_rtpengine-no-transcode),)
264 $(call Build/Compile/Default,-C $(PKG_BUILD_DIR)/daemon)
265 endif
266
267 ifneq ($(CONFIG_PACKAGE_rtpengine-recording),)
268 $(call Build/Compile/Default,-C $(PKG_BUILD_DIR)/recording-daemon)
269 endif
270
271 endef
272
273 define Build/InstallDev
274 endef
275
276 # KernelPackage calls need to go first, otherwise hooks like
277 # collect_module_symvers won't get added.
278 $(eval $(call KernelPackage,ipt-rtpengine))
279 $(eval $(call BuildPackage,rtpengine-no-transcode))
280 $(eval $(call BuildPackage,iptables-mod-rtpengine))
281 $(eval $(call BuildPackage,rtpengine))
282 $(eval $(call BuildPackage,rtpengine-recording))