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