treewide: remove uClibc++ support
[feed/telephony.git] / net / yate / Makefile
1 #
2 # Copyright (C) 2006-2018 OpenWrt.org
3 # Copyright (C) 2006-2011 SMBPhone
4 #
5 # This is free software, licensed under the GNU General Public License v2.
6 # See /LICENSE for more information.
7 #
8
9 include $(TOPDIR)/rules.mk
10
11 PKG_NAME:=yate
12 PKG_VERSION:=6.1.0-1
13 PKG_RELEASE:=3
14
15 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
16 PKG_SOURCE_URL:=http://yate.null.ro/tarballs/yate6/
17 PKG_HASH:=ed88519c8e2f63eec0d699bc6ed8831854af9b32b654b3d7e7c2697b528aa377
18 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
19
20 PKG_LICENSE:=GPL-2.0
21 PKG_LICENSE_FILES:=COPYING
22 PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
23
24 PKG_FIXUP:=autoreconf
25
26 PKG_INSTALL:=1
27
28 # Yate currently does not compile with FORTIFY_SOURCE enabled
29 PKG_FORTIFY_SOURCE:=0
30
31 PKG_CONFIG_DEPENDS:= \
32 CONFIG_PACKAGE_$(PKG_NAME)-mod-zapcard \
33 CONFIG_PACKAGE_$(PKG_NAME)-mod-ilbcwebrtc \
34 CONFIG_PACKAGE_$(PKG_NAME)-mod-isaccodec \
35 CONFIG_PACKAGE_$(PKG_NAME)-mod-pgsqldb \
36 CONFIG_PACKAGE_$(PKG_NAME)-mod-mysqldb \
37 CONFIG_PACKAGE_$(PKG_NAME)-mod-faxchan \
38 CONFIG_PACKAGE_$(PKG_NAME)-mod-openssl \
39 CONFIG_PACKAGE_$(PKG_NAME)-mod-zlibcompress \
40 CONFIG_SOFT_FLOAT
41
42 include $(INCLUDE_DIR)/package.mk
43 # Needed for yate-mod-mysqldb to find iconv
44 include $(INCLUDE_DIR)/nls.mk
45
46 define Package/$(PKG_NAME)/Default
47 SUBMENU:=Telephony
48 SECTION:=net
49 CATEGORY:=Network
50 URL:=http://yate.null.ro/
51 endef
52
53 define Package/$(PKG_NAME)
54 $(call Package/yate/Default)
55 DEPENDS:=+libpthread +libstdcpp
56 TITLE:=Yet Another Telephony Engine
57 MENU:=1
58 endef
59
60 define Package/$(PKG_NAME)/conffiles
61 /etc/yate/yate.conf
62 /etc/init.d/yate
63 endef
64
65 define Package/$(PKG_NAME)/Default/description
66 Is a next-generation telephony engine focused on the VoIP and PSTN. It does
67 SIP, H.323, IAX, PSTN, and more.
68 endef
69
70 define Package/$(PKG_NAME)-scripts-perl
71 $(call Package/yate/Default)
72 DEPENDS += $(PKG_NAME) \
73 +PACKAGE_$(PKG_NAME)-scripts-perl:$(PKG_NAME)-mod-extmodule \
74 +PACKAGE_$(PKG_NAME)-scripts-perl:perlbase-data \
75 @!arc
76 TITLE:= Perl module for Yate
77 endef
78
79 define Package/$(PKG_NAME)-sounds
80 $(call Package/yate/Default)
81 DEPENDS += $(PKG_NAME)
82 TITLE := Sounds for Yate
83 endef
84
85 define Package/$(PKG_NAME)-collection-basic
86 $(call Package/yate/Default)
87 DEPENDS += $(PKG_NAME) \
88 +PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-sounds \
89 +PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-dumbchan \
90 +PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-regfile \
91 +PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-regexroute \
92 +PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-rmanager \
93 +PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-tonegen \
94 +PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-yrtpchan \
95 +PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-ysipchan
96 TITLE := Basic Yate Server
97 endef
98
99 # Otherwise yate ignores CPPFLAGS
100 TARGET_CFLAGS += $(TARGET_CPPFLAGS)
101
102 CONFIGURE_ARGS+= \
103 $(if $(CONFIG_x86_64),--enable-sse2) \
104 --disable-sctp \
105 $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-zapcard),,--disable-dahdi --disable-zaptel) \
106 --disable-wpcard \
107 --disable-tdmcard \
108 --disable-wanpipe \
109 --enable-ilbc \
110 $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-ilbcwebrtc),--enable-ilbc-webrtc,--disable-ilbc-webrtc) \
111 $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-pgsqldb),--with-libpq="$(STAGING_DIR)/usr",--without-libpq) \
112 $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-mysqldb),--with-mysql=yes,--with-mysql=no) \
113 --without-wphwec \
114 --without-libgsm \
115 --without-amrnb \
116 $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-faxchan),--with-spandsp="$(STAGING_DIR)/usr/include",--without-spandsp) \
117 --without-pwlib \
118 --without-openh323 \
119 $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-openssl),--with-openssl,--without-openssl) \
120 $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-zlibcompress),--with-zlib="$(STAGING_DIR)/usr",--without-zlib) \
121 --without-libqt4 \
122 --without-qtstatic \
123 --without-coredumper \
124 --without-doxygen \
125 --without-kdoc
126
127 # The regexp implementation of musl 1.1.19 is not fully compatible with yate
128 CONFIGURE_ARGS+= \
129 --enable-internalregex
130
131 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-isaccodec),)
132 CONFIGURE_ARGS+=$(if $(CONFIG_SOFT_FLOAT),--disable-isac-float --enable-isac-fixed,--disable-isac-fixed --enable-isac-float)
133 else
134 CONFIGURE_ARGS+= \
135 --disable-isac-fixed \
136 --disable-isac-float
137 endif
138
139 define Package/$(PKG_NAME)/install
140 $(INSTALL_DIR) $(1)/usr/lib
141
142 for yatelib in "" asn sig mgcp jabber script; do \
143 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libyate$$$${yatelib}.so* $(1)/usr/lib ;\
144 done
145
146 $(INSTALL_DIR) $(1)/usr/bin
147 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/yate $(1)/usr/bin/
148 $(INSTALL_DIR) $(1)/etc/$(PKG_NAME)
149 $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/yate/yate.conf $(1)/etc/$(PKG_NAME)/yate.conf
150 $(INSTALL_DIR) $(1)/etc/init.d
151 $(INSTALL_BIN) ./files/yate.init $(1)/etc/init.d/yate
152 endef
153
154 define Package/$(PKG_NAME)-scripts-perl/install
155 $(INSTALL_DIR) $(1)/usr/share/yate/scripts
156 $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/yate/scripts/Yate.pm $(1)/usr/share/yate/scripts/
157 $(INSTALL_BIN) ./files/banbrutes.pl $(1)/usr/share/yate/scripts/
158 endef
159
160 define Package/$(PKG_NAME)-sounds/install
161 $(INSTALL_DIR) $(1)/usr/share/yate/sounds
162 $(CP) $(PKG_INSTALL_DIR)/usr/share/yate/sounds/ $(1)/usr/share/yate/
163 endef
164
165 define Package/$(PKG_NAME)-collection-basic/install
166 endef
167
168 define Build/InstallDev
169 $(INSTALL_DIR) $(STAGING_DIR)/usr/include
170 $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(STAGING_DIR)/usr/include/
171 $(INSTALL_DIR) $(STAGING_DIR)/usr/lib
172 $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(STAGING_DIR)/usr/lib/
173 endef
174
175 define BuildPlugin
176 define Package/$(PKG_NAME)-mod-$(subst _,-,$(1))
177 $(call Package/yate/Default)
178 DEPENDS:= $(PKG_NAME) $(patsubst +%,+PACKAGE_$(PKG_NAME)-mod-$(subst _,-,$(1)):%,$(4))
179 TITLE:=$(3)
180 endef
181
182 define Package/$(PKG_NAME)-mod-$(subst _,-,$(1))/conffiles
183 $(if $(6),/etc/yate/$(1).conf)
184 endef
185
186 define Package/$(PKG_NAME)-mod-$(subst _,-,$(1))/description
187 $(3) module for $(PKG_NAME)
188 endef
189
190 define Package/$(PKG_NAME)-mod-$(subst _,-,$(1))/install
191 $$(INSTALL_DIR) $$(1)/usr/lib/yate/$(2)
192 $$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/usr/lib/yate/$(2)/$(1).yate $$(1)/usr/lib/yate/$(2)/$(1).yate
193 if [ -f $$(PKG_INSTALL_DIR)/etc/yate/$(1).conf ]; then \
194 $$(INSTALL_DIR) $$(1)/etc/yate ;\
195 $$(INSTALL_CONF) $$(PKG_INSTALL_DIR)/etc/yate/$(1).conf $$(1)/etc/yate/ ;\
196 fi
197 $(if $(5),$(foreach extra_file,$(5),\
198 $(INSTALL_DIR) $$(1)$(dir $(extra_file)) ; \
199 $(CP) $(PKG_INSTALL_DIR)$(extra_file) $$(1)$(extra_file) ; \
200 ),)
201 endef
202
203 $$(eval $$(call BuildPackage,$(PKG_NAME)-mod-$(subst _,-,$(1))))
204 endef
205
206 $(eval $(call BuildPackage,$(PKG_NAME)))
207 $(eval $(call BuildPackage,$(PKG_NAME)-collection-basic))
208 $(eval $(call BuildPackage,$(PKG_NAME)-scripts-perl))
209 $(eval $(call BuildPackage,$(PKG_NAME)-sounds))
210
211 ############################
212 # 1: plugin
213 # 2: client, server or empty
214 # 3: description
215 # 4: depends
216 # 5: extra files
217 # 6: has a config sample (y)
218 # ##########################
219 $(eval $(call BuildPlugin,accfile,server,SIP or H.323 client (from file),,,y))
220 $(eval $(call BuildPlugin,alsachan,client,ALSA Sound Channel,+alsa-lib))
221 $(eval $(call BuildPlugin,amrnbcodec,,AMR-NB Codec,@BROKEN)) # Missing amr-nb library
222 $(eval $(call BuildPlugin,analog,server,Analog (e.g. POTS) Channel,,,y))
223 $(eval $(call BuildPlugin,analogdetect,server,Analog Data Detector,))
224 $(eval $(call BuildPlugin,analyzer,,Test Call Generator and AQ Analyzer,))
225 $(eval $(call BuildPlugin,cache,server,CNAM and LNP memory caches,,,y))
226 $(eval $(call BuildPlugin,callcounters,server,Count Active Call Legs,,,y))
227 $(eval $(call BuildPlugin,callfork,,Call Forker,,,y))
228 $(eval $(call BuildPlugin,callgen,,Call Generator,))
229 $(eval $(call BuildPlugin,camel_map,sig,MAP/CAMEL TCAP <-> XML translators,,,y))
230 $(eval $(call BuildPlugin,ccongestion,server,Accept Status from Installed Engine Monitors,,,y))
231 $(eval $(call BuildPlugin,cdrbuild,,Call Detail Record Builder,,,y))
232 $(eval $(call BuildPlugin,cdrcombine,,Call Detail Records per call instead of per call leg,))
233 $(eval $(call BuildPlugin,cdrfile,,Call Detail Record to File,,,y))
234 $(eval $(call BuildPlugin,ciscosm,server,SS7 Support,,,y))
235 $(eval $(call BuildPlugin,clustering,server,Clustering Server Support,,,y))
236 $(eval $(call BuildPlugin,conference,,Conference Room Mixer,))
237 $(eval $(call BuildPlugin,cpuload,server,Monitor CPU load and Inform Yate,,,y))
238 $(eval $(call BuildPlugin,dbpbx,server,PBX IVR and Multi-routing from Database,,,y))
239 $(eval $(call BuildPlugin,dbwave,server,Wav Media for DB Storage,+$(PKG_NAME)-mod-wavefile))
240 $(eval $(call BuildPlugin,dumbchan,,Dummy Channel,))
241 $(eval $(call BuildPlugin,enumroute,,ENUM Routing,,,y))
242 $(eval $(call BuildPlugin,eventlogs,server,Write events and alarms to log files,,,y))
243 $(eval $(call BuildPlugin,extmodule,,External Module Handler,,/usr/share/yate/scripts/echo.sh,y))
244 $(eval $(call BuildPlugin,faxchan,,Spandsp Fax Channel,+libspandsp))
245 $(eval $(call BuildPlugin,fileinfo,,File Info Holder,,,y))
246 $(eval $(call BuildPlugin,filetransfer,,File Transfer Driver,,,y))
247 $(eval $(call BuildPlugin,gvoice,,Google Voice support,,,y))
248 $(eval $(call BuildPlugin,heartbeat,server,Linux-HA compatible heartbeat,,,y))
249 $(eval $(call BuildPlugin,ilbccodec,,iLBC Codec,))
250 $(eval $(call BuildPlugin,ilbcwebrtc,,iLBC Codec from the WebRTC project,))
251 $(eval $(call BuildPlugin,isaccodec,,internet Speech Audio Codec,))
252 $(eval $(call BuildPlugin,isupmangler,sig,ISUP parameter mangling in a STP,,,y))
253 $(eval $(call BuildPlugin,jabberclient,client,Jabber Client,,,y))
254 $(eval $(call BuildPlugin,jabberserver,jabber,Jabber Server,,,y))
255 $(eval $(call BuildPlugin,javascript,,Routing using the embedded Javascript language,,,y))
256 $(eval $(call BuildPlugin,jbfeatures,jabber,Jabber Server Features,,,y))
257 $(eval $(call BuildPlugin,lateroute,server,Last Chance Routing,,,y))
258 $(eval $(call BuildPlugin,mgcpca,server,Media Gateway Control Protocol Agent,,,y))
259 $(eval $(call BuildPlugin,mgcpgw,server,Media Gateway Control Protocol Gateway,,,y))
260 $(eval $(call BuildPlugin,moh,,On Hold (music) Generator,,,y))
261 $(eval $(call BuildPlugin,monitoring,server,Monitoring/gathering Information,,,y))
262 $(eval $(call BuildPlugin,mrcpspeech,server,MRCP v2 Voice/Tone Detector and Synthesizer,))
263 $(eval $(call BuildPlugin,msgsniff,,Sample Message Sniffer,))
264 $(eval $(call BuildPlugin,mux,,Data Multiplexor,,,y))
265 $(eval $(call BuildPlugin,mysqldb,server,MySQL Backend DB,+libmysqlclient-r,,y))
266 $(eval $(call BuildPlugin,openssl,,Encrypted transport (OpenSSL),+libopenssl,,y))
267 $(eval $(call BuildPlugin,osschan,client,OSS Sound Channel,))
268 $(eval $(call BuildPlugin,park,server,Call Parking,))
269 $(eval $(call BuildPlugin,pbx,,PBX Message Handlers,))
270 $(eval $(call BuildPlugin,pbxassist,server,Full featured PBX and IVR,,,y))
271 $(eval $(call BuildPlugin,pgsqldb,server,PostgrestSQL Backend DB,+libpq))
272 $(eval $(call BuildPlugin,presence,server,Presence,,,y))
273 $(eval $(call BuildPlugin,queues,server,Call Distribution and Queues from Database,,,y))
274 $(eval $(call BuildPlugin,queuesnotify,server,Notify when queued call status changes,,,y))
275 $(eval $(call BuildPlugin,regexroute,,Regular Expression Based Routing,,,y))
276 $(eval $(call BuildPlugin,regfile,server,Registration based on users in file,,,y))
277 $(eval $(call BuildPlugin,register,server,Call Detail Record to a database,,,y))
278 $(eval $(call BuildPlugin,rmanager,,Yate Remote Management,,,y))
279 $(eval $(call BuildPlugin,sigtransport,server,SIGTRAN (SS7 over IP) connection provider,,,y))
280 $(eval $(call BuildPlugin,sip_cnam_lnp,sip,Query CNAM and LNP databases using SIP INVITE,,,y))
281 $(eval $(call BuildPlugin,sipfeatures,server,SIP Features (SUBSCRIBE/NOTIFY),,,y))
282 $(eval $(call BuildPlugin,sqlitedb,server,SQLite Support,+libsqlite3,,y))
283 $(eval $(call BuildPlugin,ss7_lnp_ansi,sig,Query LNP Databases,,,y))
284 $(eval $(call BuildPlugin,subscription,server,Subcription handler and presence notifier,,,y))
285 $(eval $(call BuildPlugin,tdmcard,server,TDM Cards Signalling and Data Driver,@BROKEN)) # Missing TDM libraries
286 $(eval $(call BuildPlugin,tonedetect,,Detectors for Various Tones,))
287 $(eval $(call BuildPlugin,tonegen,,Tones Generator,,,y))
288 $(eval $(call BuildPlugin,users,server,Users,,,y))
289 $(eval $(call BuildPlugin,wavefile,,Wav file Record and Playback,))
290 $(eval $(call BuildPlugin,wpcard,server,Wanpipe PRI cards Signalling and Data Driver,@BROKEN)) # Mising wanpipe and PRI libraries
291 $(eval $(call BuildPlugin,yiaxchan,,IAX Channel,,,y))
292 $(eval $(call BuildPlugin,yjinglechan,,Jingle Channel,,,y))
293 $(eval $(call BuildPlugin,yradius,server,RADIUS Client,,,y))
294 $(eval $(call BuildPlugin,yrtpchan,,RTP Channel and Other Data Helper,,,y))
295 $(eval $(call BuildPlugin,ysigchan,server,SS7/ISDN Protocols - Yate Signalling Library,,,y))
296 $(eval $(call BuildPlugin,ysipchan,,SIP Channel,,,y))
297 $(eval $(call BuildPlugin,ysnmpagent,server,SNMP Protocol Agent,,/usr/share/yate/data/NULL-TEAM-MIB.txt /usr/share/yate/data/snmp_mib.conf /usr/share/yate/data/YATE-MIB.txt,y))
298 $(eval $(call BuildPlugin,ysockschan,,SOCKS Channel,,,y))
299 $(eval $(call BuildPlugin,ystunchan,,STUN Support,,,y))
300 $(eval $(call BuildPlugin,zapcard,server,Zaptel PRI/TDM/FXS/FXO cards,@!aarch64 +kmod-dahdi,,y))
301 $(eval $(call BuildPlugin,zlibcompress,,Zlib Compression,+zlib,,y))
302