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