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