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