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