614d33f8a848ce3197d72eaa08a8d0123234db03
[feed/telephony.git] / net / freeswitch / Makefile
1 #
2 # Copyright (C) 2009-2013 OpenWrt.org
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
10
11 PKG_NAME:=freeswitch
12 PKG_SOURCE_PROTO:=git
13 PKG_DISTNAME:=$(PKG_NAME)_$(PKG_SOURCE_PROTO)
14 PKG_VERSION:=1.5.5b
15
16
17 #
18 # The latest FS git hash in PKG_SOURCE_VERSION can be obtained from
19 # http://fisheye.freeswitch.org
20 #
21 PKG_SOURCE_URL:=git://git.$(PKG_NAME).org/$(PKG_NAME).git
22 FS_DEFAULT_HEAD:=4eee5aee8c94910f65f47ade4e873aa62e7117eb
23 FS_LATEST_HEAD:=$(if $(DUMP),$(FS_DEFAULT_HEAD),$(shell git ls-remote $(PKG_SOURCE_URL) HEAD | cut -f1))
24 PKG_SOURCE_VERSION:=$(if $(CONFIG_FS_WITH_PULL_CURRENT),$(FS_LATEST_HEAD),$(FS_DEFAULT_HEAD))
25 PKG_SOURCE_VERSION_SHORT:=$(shell echo $(PKG_SOURCE_VERSION)|cut -b -7)
26 PKG_RELEASE:=$(PKG_SOURCE_VERSION_SHORT)
27 PKG_SOURCE_SUBDIR:=$(PKG_DISTNAME)
28 PKG_SOURCE:=$(PKG_SOURCE_SUBDIR)-$(PKG_SOURCE_VERSION_SHORT).tar.bz2
29 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
30
31
32 PKG_FIXUP:=libtool autoreconf
33 PKG_BUILD_PARALLEL:=1
34
35
36 FS_MOD_AVAILABLE:= \
37         abstraction \
38         alsa \
39         amr \
40         amrwb \
41         avmd \
42         blacklist \
43         bv \
44         callcenter \
45         cdr-csv \
46         cdr-pg-csv \
47         cdr-sqlite \
48         celt \
49         cepstral \
50         cidlookup \
51         cluechoo \
52         codec2 \
53         commands \
54         conference \
55         console \
56         curl \
57         dahdi-codec \
58         db \
59         dialplan-asterisk \
60         dialplan-directory \
61         dialplan-xml \
62         dingaling \
63         directory \
64         distributor \
65         dptools \
66         easyroute \
67         enum \
68         erlang-event \
69         esf \
70         event-multicast \
71         event-socket \
72         event-zmq \
73         expr \
74         fifo \
75         file-string \
76         flite \
77         fsk \
78         fsv \
79         g723-1 \
80         g729 \
81         gsmopen \
82         h26x \
83         h323 \
84         hash \
85         html5 \
86         httapi \
87         http-cache \
88         ilbc \
89         isac \
90         java \
91         json-cdr \
92         lcr \
93         local-stream \
94         logfile \
95         loopback \
96         lua \
97         managed \
98         mp4 \
99         mp4v \
100         native-file \
101         nibblebill \
102         openzap \
103         opus \
104         oreka \
105         portaudio \
106         portaudio-stream \
107         posix-timer \
108         radius-cdr \
109         rayo \
110         redis \
111         rss \
112         rtmp \
113         sangoma-codec \
114         say-de \
115         say-en \
116         say-es \
117         say-fa \
118         say-fr \
119         say-hu \
120         say-it \
121         say-nl \
122         say-pt \
123         say-ru \
124         say-th \
125         say-zh \
126         shell-stream \
127         silk \
128         siren \
129         skel \
130         skinny \
131         skypopen \
132         sms \
133         snapshot \
134         snipe-hunt \
135         sndfile \
136         snmp \
137         snom \
138         sofia \
139         sonar \
140         spandsp \
141         speex \
142         spidermonkey \
143         spidermonkey-core-db \
144         spidermonkey-curl \
145         spidermonkey-odbc \
146         spidermonkey-socket \
147         spidermonkey-teletone \
148         spy \
149         stress \
150         syslog \
151         timerfd \
152         tone-stream \
153         tts-commandline \
154         unimrcp \
155         valet-parking \
156         vmd \
157         voicemail \
158         voicemail-ivr \
159         vp8 \
160         xml-cdr \
161         xml-curl \
162         xml-rpc \
163         xml-scgi \
164         yaml \
165
166
167 PKG_CONFIG_DEPENDS:= \
168         CONFIG_FS_WITH_ALSA \
169         CONFIG_FS_WITH_BUILTIN_ZRTP \
170         CONFIG_FS_WITH_FIXED_POINT \
171         CONFIG_FS_WITH_IPV6 \
172         CONFIG_FS_WITH_LZMA \
173         CONFIG_FS_WITH_MYSQL \
174         CONFIG_FS_WITH_ODBC \
175         CONFIG_FS_WITH_OPT \
176         CONFIG_FS_WITH_POSTGRESQL \
177         CONFIG_FS_WITH_PULL_CURRENT \
178         CONFIG_FS_WITH_SQLITE3 \
179         CONFIG_FS_WITH_SCTP \
180         $(patsubst %,CONFIG_PACKAGE_$(PKG_NAME)-mod-%,$(FS_MOD_AVAILABLE)) \
181
182
183 include $(INCLUDE_DIR)/package.mk
184 include $(INCLUDE_DIR)/nls.mk
185
186
187 TAR_OPTIONS+= --strip-components=1 -C $(PKG_BUILD_DIR)
188
189
190 define Package/$(PKG_NAME)/Default
191   SECTION:=net
192   CATEGORY:=Network
193   SUBMENU:=Telephony
194   URL:=http://www.$(PKG_NAME).org/
195   MAINTAINER:=Mazilo <openwrt.mazilo@recursor.net>
196 endef
197
198
199 define Package/$(PKG_NAME)
200 $(call Package/$(PKG_NAME)/Default)
201   TITLE:=FreeSWITCH open source telephony platform ($(PKG_SOURCE_VERSION_SHORT))
202   DEPENDS:=+libcurl +libiconv-full +libjpeg +libncurses +libpthread +librt +libstdcpp +FS_WITH_POSTGRESQL:libpq +libuuid
203   MENU:=1
204 endef
205
206
207 define Package/$(PKG_NAME)/description
208   FreeSWITCH is an open source telephony platform designed to
209   facilitate the creation of voice and chat driven products scaling
210   from a soft-phone up to a soft-switch.  See http://wiki.$(PKG_NAME).org
211 endef
212
213
214 define Package/$(PKG_NAME)/config
215     config FS_WITH_PULL_CURRENT
216     depends on DEVEL
217     depends on PACKAGE_$(PKG_NAME)
218     bool "Pull the latest git HEAD - $(PKG_SOURCE_VERSION_SHORT) (Press < Help > for more information)"
219     default n
220     help
221         This existing git HEAD ($(FS_DEFAULT_HEAD))
222         is probably outdated. Enable this option for the latest git HEAD
223         ($(FS_LATEST_HEAD)) ONLY if you know what
224         you are doing. It may and/or may not be cleanly compiled and may
225         require some intervension to create new patches. If you take this
226         route and come up with some patches, please contemplate to contribute
227         or send in your patches.
228
229     config FS_WITH_ALSA
230     depends on PACKAGE_$(PKG_NAME)
231     bool "Enable ALSA for sound support"
232     default n
233     help
234         Compile $(PKG_NAME) with ALSA support.
235
236     config FS_WITH_BUILTIN_ZRTP
237     depends on PACKAGE_$(PKG_NAME)
238     bool "Enable built-in ZRTP"
239     default y
240     help
241         Compile $(PKG_NAME) with ZRTP support.
242
243     config FS_WITH_IPV6
244     depends on PACKAGE_$(PKG_NAME)
245     bool "Enable IPV6 support in APR"
246     default y
247     help
248         Compile libs/apr package with IPV6 support.
249
250     config FS_WITH_LZMA
251     depends on PACKAGE_$(PKG_NAME) && PACKAGE_liblzma
252     bool "Enable liblzma usage in libtiff"
253     default y
254     #select PACKAGE_liblzma
255     help
256         Compile libs/tiff package with liblzma support. This option requires
257         LZMA2 compression package called liblzma.
258
259     config FS_WITH_OPT
260     depends on PACKAGE_$(PKG_NAME)
261     bool "Enable optimization"
262     default y
263     help
264         Compile $(PKG_NAME) with optimization flag enabled. This will add
265         max optimising compiler flags
266
267     config FS_WITH_SCTP
268     depends on PACKAGE_$(PKG_NAME)
269     bool "Enable SCTP (Stream Control Transfer Protocol) support in APR"
270     default y
271     select PACKAGE_sctp
272     help
273         Compile $(PKG_NAME) with SCTP support in lib APR.
274
275     config FS_WITH_MYSQL
276     depends on PACKAGE_$(PKG_NAME)
277     bool "Compile apr-util with MySQL"
278     default n
279     select PACKAGE_libmysqlclient
280     help
281         Compile libs/apr-util with MySQL.
282
283     config FS_WITH_POSTGRESQL
284     depends on PACKAGE_$(PKG_NAME)
285     bool "Compile apr-util (also enable $(PKG_NAME) core) with PostgreSQL support"
286     default n
287     help
288         Compile both libs/apr-util and $(PKG_NAME) with PostgreSQL support.
289
290     config FS_WITH_SQLITE3
291     depends on PACKAGE_$(PKG_NAME)
292     bool "Compile apr-util with SQLITE3"
293     default y
294     select PACKAGE_libsqlite3
295     help
296         Compile libs/apr-util with SQLITE3.
297
298     config FS_WITH_ODBC
299     depends on PACKAGE_$(PKG_NAME)
300     depends on PACKAGE_sqliteodbc
301     depends on PACKAGE_unixodbc_svn
302     bool "Compile with ODBC support (Requires unixodbc_svn NOT YET AVAILABLE)"
303     default n
304     help
305         Compile $(PKG_NAME) with ODBC support. Since both sqliteodbc and unixodbc_svn packages
306         are not yet available on OpenWRT, $(PKG_NAME) CAN NOT be compiled with ODBC support.
307 endef
308
309
310 define Package/$(PKG_NAME)-mod-spandsp/config
311     config FS_WITH_FIXED_POINT
312     depends on PACKAGE_$(PKG_NAME)-mod-spandsp
313     bool "Enable fixed point support for spandsp (may degrade performance)"
314     default n
315     help
316         Compile spandsp package with a fixed point support. ONLY enabled this option when
317         necessary, i.e. CPU doesn't support floating computation.
318 endef
319
320
321 define Package/$(PKG_NAME)-example-config
322 $(call Package/$(PKG_NAME)/Default)
323   TITLE:=FreeSWITCH example config (commented)
324   DEPENDS:= $(PKG_NAME)
325 endef
326
327
328 define Package/$(PKG_NAME)-example-config/description
329   The default configuration included with FreeSWITCH. It is not intended to be
330   a final product, and is thus moved to /usr/share/$(PKG_NAME)/examples/conf to
331   be an example of how FreeSWITCH can be configured.
332 endef
333
334
335 define Package/$(PKG_NAME)-config-upstream-defaults
336 $(call Package/$(PKG_NAME)/Default)
337   TITLE:=FreeSWITCH upstream config
338   DEPENDS:= $(PKG_NAME)
339 endef
340
341
342 define Package/$(PKG_NAME)-config-upstream-defaults/description
343   The default configuration included with FreeSWITCH. It is not intended to be
344   a final product, and but is included for those who don't want to use the
345   OpenWRT configuration and/or want to try things as prepared by upstream.
346 endef
347
348
349 define Package/$(PKG_NAME)-config-minimal
350 $(call Package/$(PKG_NAME)/Default)
351   TITLE:=FreeSWITCH minimal config
352   DEPENDS:= $(PKG_NAME)
353 endef
354
355
356 define Package/$(PKG_NAME)-config-minimal/description
357   A minimal configuration of FreeSWITCH for OpenWRT devices.  Is what the UCI
358   configuration began with.
359 endef
360
361
362 define Package/$(PKG_NAME)-collection-upstream-defaults
363 $(call Package/$(PKG_NAME)/Default)
364   TITLE:=FS upstream def sample conf
365   DEPENDS:= $(PKG_NAME) \
366                 +$(PKG_NAME)-config-upstream-defaults \
367                 +$(PKG_NAME)-mod-callcenter \
368                 +$(PKG_NAME)-mod-codec2 \
369                 +$(PKG_NAME)-mod-commands \
370                 +$(PKG_NAME)-mod-conference \
371                 +$(PKG_NAME)-mod-curl \
372                 +$(PKG_NAME)-mod-dialplan-xml \
373                 +$(PKG_NAME)-mod-dingaling \
374                 +$(PKG_NAME)-mod-dptools \
375                 +$(PKG_NAME)-mod-event-socket \
376                 +$(PKG_NAME)-mod-g723-1 \
377                 +$(PKG_NAME)-mod-g729 \
378                 +$(PKG_NAME)-mod-hash \
379                 +$(PKG_NAME)-mod-http-cache \
380                 +$(PKG_NAME)-mod-ilbc \
381                 +$(PKG_NAME)-mod-local-stream \
382                 +$(PKG_NAME)-mod-lua \
383                 +$(PKG_NAME)-mod-native-file \
384                 +$(PKG_NAME)-mod-sndfile \
385                 +$(PKG_NAME)-mod-sofia \
386                 +$(PKG_NAME)-mod-spandsp \
387                 +$(PKG_NAME)-mod-speex \
388                 +$(PKG_NAME)-mod-syslog \
389                 +$(PKG_NAME)-mod-tone-stream \
390                 +$(PKG_NAME)-mod-xml-curl \
391                 +$(PKG_NAME)-mod-xml-rpc \
392                 +$(PKG_NAME)-tools
393 endef
394
395
396 define Package/$(PKG_NAME)-collection-minimal
397 $(call Package/$(PKG_NAME)/Default)
398   TITLE:=FreeSWITCH minimal package collection
399   DEFAULT:=y
400   DEPENDS:= $(PKG_NAME) \
401                 +$(PKG_NAME)-config-minimal \
402                 +$(PKG_NAME)-mod-codec2 \
403                 +$(PKG_NAME)-mod-commands \
404                 +$(PKG_NAME)-mod-dialplan-xml \
405                 +$(PKG_NAME)-mod-dptools \
406                 +$(PKG_NAME)-mod-event-socket \
407                 +$(PKG_NAME)-mod-hash \
408                 +$(PKG_NAME)-mod-local-stream \
409                 +$(PKG_NAME)-mod-sndfile \
410                 +$(PKG_NAME)-mod-sofia \
411                 +$(PKG_NAME)-mod-syslog \
412                 +$(PKG_NAME)-mod-tone-stream \
413                 +$(PKG_NAME)-tools
414 endef
415
416
417 define Package/$(PKG_NAME)-sounds-en-08KHz
418 $(call Package/$(PKG_NAME)/Default)
419   TITLE:=FreeSWITCH 8KHz english sounds
420   DEPENDS:= $(PKG_NAME)
421 endef
422
423
424 define Package/$(PKG_NAME)-sounds-en-16KHz
425 $(call Package/$(PKG_NAME)/Default)
426   TITLE:=FreeSWITCH 16KHz english sounds
427   DEPENDS:= +$(PKG_NAME)-sounds-en-08KHz
428 endef
429
430
431 define Package/$(PKG_NAME)-sounds-en-32KHz
432 $(call Package/$(PKG_NAME)/Default)
433   TITLE:=FreeSWITCH 32KHz english sounds
434   DEPENDS:= +$(PKG_NAME)-sounds-en-16KHz
435 endef
436
437
438 define Package/$(PKG_NAME)-sounds-en-48KHz
439 $(call Package/$(PKG_NAME)/Default)
440   TITLE:=FreeSWITCH 48KHz english sounds
441   DEPENDS:= +$(PKG_NAME)-sounds-en-32KHz
442 endef
443
444
445 define Package/$(PKG_NAME)-sounds-moh-08KHz
446 $(call Package/$(PKG_NAME)/Default)
447   TITLE:=FreeSWITCH 8KHz music-on-hold sounds
448   DEPENDS:= $(PKG_NAME)
449 endef
450
451
452 define Package/$(PKG_NAME)-sounds-moh-16KHz
453 $(call Package/$(PKG_NAME)/Default)
454   TITLE:=FreeSWITCH 16KHz music-on-hold sounds
455   DEPENDS:= +$(PKG_NAME)-sounds-moh-08KHz
456 endef
457
458
459 define Package/$(PKG_NAME)-sounds-moh-32KHz
460 $(call Package/$(PKG_NAME)/Default)
461   TITLE:=FreeSWITCH 32KHz music-on-hold sounds
462   DEPENDS:= +$(PKG_NAME)-sounds-moh-16KHz
463 endef
464
465
466 define Package/$(PKG_NAME)-sounds-moh-48KHz
467 $(call Package/$(PKG_NAME)/Default)
468   TITLE:=FreeSWITCH 48KHz music-on-hold sounds
469   DEPENDS:= +$(PKG_NAME)-sounds-moh-32KHz
470 endef
471
472
473 define Package/$(PKG_NAME)-tools
474 $(call Package/$(PKG_NAME)/Default)
475   TITLE:=FreeSWITCH control tools
476   DEPENDS:= $(PKG_NAME)
477 endef
478
479
480 define Download/files
481  define Download/$(1)
482   FILE:=$(2)
483   URL:=$(if $(4),$(4),http://files.$(PKG_NAME).org)/$(5)
484   MD5SUM:=$(3)
485  endef
486  define Prepare/$(1)
487   $(LN) $(DL_DIR)/$(2) $(PKG_BUILD_DIR)/$(6)
488  endef
489  $$(eval $$(call Download,$(1)))
490 endef
491
492
493 MAKE_INSTALL_TARGETS:=install
494
495
496 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-celt),)
497  $(eval $(call Download/files,celt,celt-0.10.0.tar.gz,a656f6176e9be84027c0e51ceedd710f,,downloads/libs/,libs/))
498 endif
499
500
501 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-curl),)
502  $(eval $(call Download/files,json-cdr,json-c-0.9.tar.gz,4653b3b9c568bb9c782178abfaac128d,,downloads/libs/,libs/))
503 endif
504
505
506 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-event-zmq),)
507  $(eval $(call Download/files,event-zmq,zeromq-2.1.9.tar.gz,94c5e0262a79c5f82bc0b178c1f8a33d,http://download.zeromq.org http://download.zeromq.org/historic,,libs/))
508 endif
509
510
511 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-flite),)
512  $(eval $(call Download/files,flite,flite-1.5.4-current.tar.bz2,f3a2d88b1059f6f4ff3c20a8169bc0f4,,downloads/libs/,libs/))
513 endif
514
515
516 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-opus),)
517  $(eval $(call Download/files,opus,opus-1.0.2.tar.gz,c503ad05a59ddb44deab96204401be03,,downloads/libs/,libs/))
518 endif
519
520
521 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-08KHz),)
522  $(eval $(call Download/files,sounds-en-08KHz,$(PKG_NAME)-sounds-en-us-callie-8000-1.0.25.tar.gz,1140efad453ed1a72259d799f7fef0fc,,,))
523         MAKE_INSTALL_TARGETS+= sounds-install
524 endif
525
526
527 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-16KHz),)
528  $(eval $(call Download/files,sounds-en-16KHz,$(PKG_NAME)-sounds-en-us-callie-16000-1.0.25.tar.gz,20b9bf1b1637be2abe838113fb675c41,,,))
529         MAKE_INSTALL_TARGETS+= hd-sounds-install
530 endif
531
532
533 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-32KHz),)
534  $(eval $(call Download/files,sounds-en-32KHz,$(PKG_NAME)-sounds-en-us-callie-32000-1.0.25.tar.gz,977d453d8ffa9a5b0fadee8408e84f60,,,))
535         MAKE_INSTALL_TARGETS+= uhd-sounds-install
536 endif
537
538
539 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-en-48KHz),)
540  $(eval $(call Download/files,sounds-en-48KHz,$(PKG_NAME)-sounds-en-us-callie-48000-1.0.25.tar.gz,96ec0df908eb1c535063fdc8580626d2,,,))
541         MAKE_INSTALL_TARGETS+= cd-sounds-install
542 endif
543
544
545 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-moh-08KHz),)
546  $(eval $(call Download/files,sounds-moh-08KHz,$(PKG_NAME)-sounds-music-8000-1.0.8.tar.gz,f63ef3cc3507af079ae5c7b8b8a01e42,,,))
547         MAKE_INSTALL_TARGETS+= moh-install
548 endif
549
550
551 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-moh-16KHz),)
552  $(eval $(call Download/files,sounds-moh-16KHz,$(PKG_NAME)-sounds-music-16000-1.0.8.tar.gz,7fd0ca9a9e3878783baa39b8187743bf,,,))
553         MAKE_INSTALL_TARGETS+= hd-moh-install
554 endif
555
556
557 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-moh-32KHz),)
558  $(eval $(call Download/files,sounds-moh-32KHz,$(PKG_NAME)-sounds-music-32000-1.0.8.tar.gz,7e03932ea81b8d0bf6d686f838b060b4,,,))
559         MAKE_INSTALL_TARGETS+= uhd-moh-install
560 endif
561
562
563 ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)-sounds-moh-48KHz),)
564  $(eval $(call Download/files,sounds-moh-48KHz,$(PKG_NAME)-sounds-music-48000-1.0.8.tar.gz,d06cd2a80379f224affab21f5180e4c6,,,))
565         MAKE_INSTALL_TARGETS+= cd-moh-install
566 endif
567
568
569 #
570 # XXX: -fgnu89-inline is not supported on all compiler versions, so only enable it on avr32 where it solves build issues
571 #
572 ifneq ($(CONFIG_avr32),)
573   TARGET_CFLAGS += -fgnu89-inline
574   TARGET_CXXFLAGS += -fgnu89-inline
575 endif
576
577
578 ifneq ($(CONFIG_USE_EGLIBC),)
579   ifeq ($(CONFIG_EGLIBC_OPTION_EGLIBC_UTMP),)
580     TARGET_CFLAGS += -DNO_GETLOGIN
581   endif
582 endif
583
584
585 FS_TARGET_CFLAGS:= $(TARGET_CFLAGS) -DLUA_USE_LINUX $(FPIC) -std=gnu99 -Wno-format
586 FS_TARGET_CXXFLAGS:= $(TARGET_CXXFLAGS) -DLUA_USE_LINUX $(FPIC) -Wno-format
587 FS_TARGET_CPPFLAGS:= -I. -I./lua $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-erlang-event),-I$(STAGING_DIR_HOST)/lib/erlang/lib/erl_interface-3.7.7/include) $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-json-cdr),-Wno-error) $(TARGET_CPPFLAGS)
588
589
590 CONFIGURE_ARGS+= \
591         --host=$(GNU_TARGET_NAME) \
592         --build=$(GNU_HOST_NAME) \
593         --prefix="/usr/share/$(PKG_NAME)" \
594         --bindir="/usr/bin" \
595         --libdir="/usr/lib" \
596         --srcdir="$(PKG_BUILD_DIR)" \
597         --sysconfdir="/etc/$(PKG_NAME)" \
598         --with-modinstdir="/usr/lib/$(PKG_NAME)" \
599         --with-random="/dev/urandom" \
600         $(if $(CONFIG_FS_WITH_MYSQL),--with,--without)-mysql \
601         $(if $(CONFIG_FS_WITH_POSTGRESQL),--with,--without)-pgsql \
602         $(if $(CONFIG_FS_WITH_SQLITE3),--with,--without)-sqlite3 \
603         $(call autoconf_bool,CONFIG_FS_WITH_IPV6,ipv6) \
604         $(call autoconf_bool,CONFIG_FS_WITH_OPT,optimization) \
605         $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-celt),--with-ogg="$(STAGING_DIR)/usr",--without-ogg) \
606         $(if ($(CONFIG_PACKAGE_$(PKG_NAME)-mod-curl)|$(CONFIG_PACKAGE_$(PKG_NAME)-mod-xml-cdr)|$(CONFIG_PACKAGE_$(PKG_NAME)-mod-xml-curl)),--with-libcurl="$(STAGING_DIR)/usr",--without-libcurl) \
607         $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-erlang-event),--with,--without)-erlang \
608         $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-java),--with-java="$(STAGING_DIR)/usr",--without-java) \
609         $(call autoconf_bool,CONFIG_FS_WITH_LZMA,lzma) \
610         $(call autoconf_bool,CONFIG_FS_WITH_POSTGRESQL,core-pgsql-support) \
611         $(call autoconf_bool,CONFIG_PACKAGE_$(PKG_NAME)-mod-spandsp && CONFIG_FS_WITH_FIXED_POINT,fixed-point) \
612         $(call autoconf_bool,CONFIG_PACKAGE_$(PKG_NAME)-mod-spandsp,builtin-tiff) \
613         $(call autoconf_bool,CONFIG_PACKAGE_$(PKG_NAME)-mod-timerfd,timerfd-wrapper) \
614         $(call autoconf_bool,CONFIG_FS_WITH_BUILTIN_ZRTP,zrtp) \
615         $(call autoconf_bool,CONFIG_FS_WITH_ODBC,core-odbc-support) \
616         $(if $(CONFIG_FS_WITH_ODBC),--with-odbc="$(STAGING_DIR)/usr") \
617         $(if $(CONFIG_FS_WITH_ODBC),--with-odbc-lib="$(STAGING_DIR)/usr/lib") \
618
619
620 CONFIGURE_VARS+= \
621         config_TARGET_CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" \
622         config_TARGET_CFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CFLAGS)" \
623         config_TARGET_CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)" \
624         config_TARGET_CXXFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CXXFLAGS)" \
625         config_TARGET_CPPFLAGS="$(FS_TARGET_CPPFLAGS)" \
626         config_TARGET_READLINE_INC="$(FS_TARGET_CPPFLAGS)" \
627         config_TARGET_READLINE_LIBS="$(TARGET_LDFLAGS) -lreadline -lncurses" \
628         config_TARGET_LIBS="$(TARGET_LDFLAGS) -lpthread -ldl" \
629         config_BUILD_CC="$(HOSTCC)" \
630         config_BUILD_CFLAGS="$(HOST_CFLAGS)" \
631         CC_FOR_BUILD="$(HOSTCC)" \
632         BUILDTOOL_CC="$(HOSTCC)" \
633         BUILDTOOL_CCLD="$(HOSTCC)" \
634         LDFLAGS="$$$$LDFLAGS" \
635         LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \
636         CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" \
637         CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)" \
638         AR="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ar" \
639         RANLIB="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ranlib" \
640         CFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CFLAGS)" \
641         CXXFLAGS="$(FS_TARGET_CPPFLAGS) $(FS_TARGET_CXXFLAGS)" \
642         CPPFLAGS="$(FS_TARGET_CPPFLAGS)" \
643         LDFLAGS="$(TARGET_LDFLAGS) -Wl,-rpath-link=\"$(STAGING_DIR)/usr/lib\"" \
644         HOST_CC="/usr/bin/cc" \
645         HOST_CXX="/usr/bin/g++" \
646         CROSS_COMPILE="1" \
647         ax_cv_c_compiler_vendor="gnu" \
648         ac_cv_dev_urandom="yes" \
649         ac_cv_file_dbd_apr_dbd_mysql_c="no" \
650         ac_cv_file__dev_random="no" \
651         ac_cv_file__dev_urandom="yes" \
652         ac_cv_file___dev_urandom_="yes" \
653         ac_cv_func_mmap_fixed_mapped="yes" \
654         ac_cv_func_pthread_rwlock_init="yes" \
655         ac_cv_struct_rlimit="yes" \
656         apr_cv_mutex_recursive="yes" \
657         apr_cv_process_shared_works="no" \
658         apr_cv_tcp_nodelay_with_cork="yes" \
659         apr_cv_type_rwlock_t="yes" \
660         $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-perl),ac_cv_path_PERL="yes",) \
661         libzmq_cv_cxx_werror_flag="" \
662
663
664 define Build/Prepare
665         $(call Build/Prepare/Default)
666         $(call Prepare/celt)
667         $(call Prepare/event-zmq)
668         $(call Prepare/flite)
669         $(call Prepare/json-cdr)
670         $(call Prepare/opus)
671         $(call Prepare/sounds-en-08KHz)
672         $(call Prepare/sounds-en-16KHz)
673         $(call Prepare/sounds-en-32KHz)
674         $(call Prepare/sounds-en-48KHz)
675         $(call Prepare/sounds-moh-08KHz)
676         $(call Prepare/sounds-moh-16KHz)
677         $(call Prepare/sounds-moh-32KHz)
678         $(call Prepare/sounds-moh-48KHz)
679 endef
680
681
682 define Build/Configure
683         if [ -d $(PKG_BUILD_DIR)/libs/libcodec2/src ]; then \
684                 (cd $(PKG_BUILD_DIR)/libs/libcodec2/src; $(HOSTCC) -c generate_codebook.c; $(HOSTCC) -o generate_codebook generate_codebook.o -lm) \
685         fi
686         (cd $(PKG_BUILD_DIR); $(AM_TOOL_PATHS) ./bootstrap.sh)
687         $(call Build/Configure/Default,)
688         $(foreach m,$(FS_MOD_AVAILABLE),
689                 $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-$(m)),
690                         $(SED) 's|^[ #]*\([^#]*/mod_$(subst -,_,$(m))\)$$$$|\1|g' $(PKG_BUILD_DIR)/modules.conf
691                 ,
692                         $(SED) 's|^\([^#]*/mod_$(subst -,_,$(m))\)$$$$|#\1|g' $(PKG_BUILD_DIR)/modules.conf
693                 )
694         )
695 endef
696
697
698 define Build/Compile
699         $(MAKE) -C $(PKG_BUILD_DIR) \
700                 AR="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ar" \
701                 RANLIB="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)ranlib" \
702                 CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" \
703                 CXX="$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)" \
704                 DESTDIR="$(PKG_INSTALL_DIR)" \
705                 LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \
706                 all $(MAKE_INSTALL_TARGETS)
707         $(SED) 's|^\([ \t]*\)\(.*\)"mod_console"\(.*\)$$$$|\1<!-- \2"mod_console"\3 -->|' $(PKG_INSTALL_DIR)/etc/$(PKG_NAME)/autoload_configs/modules.conf.xml
708         $(SED) 's|^\([ \t]*\)<!-- *\(.*\)"mod_syslog"\(.*\) *-->\(.*\)$$$$|\1\2"mod_syslog"\3\4|' $(PKG_INSTALL_DIR)/etc/$(PKG_NAME)/autoload_configs/modules.conf.xml
709 endef
710
711
712 define Build/InstallDev
713         $(INSTALL_DIR) $(1)/usr/include/$(PKG_NAME)
714         $(INSTALL_DIR) $(1)/usr/lib
715         $(CP) $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/include/* $(1)/usr/include/$(PKG_NAME)/
716         $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib$(PKG_NAME).{a,so*} $(1)/usr/lib/
717 endef
718
719
720 define Package/$(PKG_NAME)/install
721         $(INSTALL_DIR) $(1)/etc/config
722         $(INSTALL_DIR) $(1)/etc/default
723         $(INSTALL_DIR) $(1)/etc/$(PKG_NAME)
724         $(INSTALL_DIR) $(1)/etc/$(PKG_NAME)/scripts
725         $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
726         $(INSTALL_DIR) $(1)/etc/init.d
727         $(INSTALL_DIR) $(1)/usr/bin
728         $(INSTALL_DIR) $(1)/usr/lib
729         $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
730         $(INSTALL_BIN) ./files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
731         $(INSTALL_DATA) ./files/$(PKG_NAME).config $(1)/etc/config/$(PKG_NAME)
732         $(INSTALL_DATA) ./files/$(PKG_NAME).default $(1)/etc/default/$(PKG_NAME)
733         $(INSTALL_DATA) ./files/$(PKG_NAME).hotplug $(1)/etc/hotplug.d/iface/90-$(PKG_NAME)
734         $(CP) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(1)/usr/bin/
735         $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib$(PKG_NAME)* $(1)/usr/lib/
736         $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/$(PKG_NAME).pc $(1)/usr/lib/pkgconfig/
737         $(if $(1)/usr/lib/lib$(PKG_NAME).la,sed -i -e "s#-lcurl -lz\(.*\)/usr/lib/libexpat.la\(.*\)$(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME)\(.*\)#-L/usr/lib -lcurl -lz /usr/lib/libexpat.la\2/usr\3#g" $(1)/usr/lib/lib$(PKG_NAME).la)
738 endef
739
740
741 define Package/$(PKG_NAME)-collection-upstream-defaults/install
742         $(INSTALL_DIR) $(1)/etc/$(PKG_NAME)
743 endef
744
745
746 define Package/$(PKG_NAME)-example-config/install
747         $(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)/examples/conf
748         $(CP) $(PKG_INSTALL_DIR)/etc/$(PKG_NAME)/* $(1)/usr/share/$(PKG_NAME)/examples/conf/
749 endef
750
751
752 define Package/$(PKG_NAME)-config-upstream-defaults/install
753         $(INSTALL_DIR) $(1)/etc/$(PKG_NAME)
754         $(CP) $(PKG_INSTALL_DIR)/etc/$(PKG_NAME) $(1)/etc
755 endef
756
757
758 define Package/$(PKG_NAME)-collection-minimal/install
759         $(INSTALL_DIR) $(1)/etc/$(PKG_NAME)
760 endef
761
762
763 define Package/$(PKG_NAME)-collection-uci-minimal/install
764         $(INSTALL_DIR) $(1)/etc/$(PKG_NAME)
765 endef
766
767
768 define Package/$(PKG_NAME)-config-minimal/install
769         $(INSTALL_DIR) $(1)/etc/$(PKG_NAME)/autoload_configs
770
771         #
772         # Copying dialplan directory jingle_profiles sip_profiles $(PKG_NAME).xml
773         # fur_elise.ttml mime.types tetris.ttml tones.conf vars.xml
774         #
775         $(foreach f,dialplan directory jingle_profiles sip_profiles $(PKG_NAME).xml fur_elise.ttml mime.types tetris.ttml vars.xml,$(if $(PKG_BUILD_DIR)/conf/vanilla/$(f),$(CP) $(PKG_BUILD_DIR)/conf/vanilla/$(f) $(1)/etc/$(PKG_NAME);))
776
777         #
778         # Copying acl ivr modules post_load_modules switch timezones
779         #
780         $(foreach f,acl ivr modules post_load_modules switch timezones,$(if $(PKG_BUILD_DIR)/conf/vanilla/autoload_configs/$(f).conf.xml,$(CP) $(PKG_BUILD_DIR)/conf/vanilla/autoload_configs/$(f).conf.xml $(1)/etc/$(PKG_NAME)/autoload_configs;))
781 endef
782
783
784 define Package/$(PKG_NAME)-sounds-en-08KHz/install
785         #
786         # sounds-en-8KHz
787         #
788         for dir in `(cd $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/en/us/callie;ls)`; \
789         do \
790                 [ -d $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/8000 ] || $(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/8000; \
791                 $(CP) $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/8000/* $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/8000; \
792         done
793 endef
794
795
796 define Package/$(PKG_NAME)-sounds-en-16KHz/install
797         #
798         # sounds-en-16KHz
799         #
800         for dir in `(cd $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/en/us/callie;ls)`; \
801         do \
802                 [ -d $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/16000 ] || $(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/16000; \
803                 $(CP) $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/16000/* $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/16000; \
804         done
805 endef
806
807
808 define Package/$(PKG_NAME)-sounds-en-32KHz/install
809         #
810         # sounds-en-32KHz
811         #
812         for dir in `(cd $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/en/us/callie;ls)`; \
813         do \
814                 [ -d $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/32000 ] || $(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/32000; \
815                 $(CP) $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/32000/* $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/32000; \
816         done
817 endef
818
819
820 define Package/$(PKG_NAME)-sounds-en-48KHz/install
821         #
822         # sounds-en-48KHz
823         #
824         for dir in `(cd $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/en/us/callie;ls)`; \
825         do \
826                 [ -d $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/48000 ] || $(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/48000; \
827                 $(CP) $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/48000/* $(1)/usr/share/$(PKG_NAME)/sounds/en/us/callie/$$$${dir}/48000; \
828         done
829 endef
830
831
832 define Package/$(PKG_NAME)-sounds-moh-08KHz/install
833         #
834         # sounds-moh-8KHz
835         #
836         [ -d $(1)/usr/share/$(PKG_NAME)/sounds/music/8000 ] || $(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)/sounds/music/8000;
837         $(CP) $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/music/8000 $(1)/usr/share/$(PKG_NAME)/sounds/music;
838 endef
839
840
841 define Package/$(PKG_NAME)-sounds-moh-16KHz/install
842         #
843         # sounds-moh-16KHz
844         #
845         [ -d $(1)/usr/share/$(PKG_NAME)/sounds/music/16000 ] || $(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)/sounds/music/16000;
846         $(CP) $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/music/16000 $(1)/usr/share/$(PKG_NAME)/sounds/music;
847 endef
848
849
850 define Package/$(PKG_NAME)-sounds-moh-32KHz/install
851         #
852         # sounds-moh-32KHz
853         #
854         [ -d $(1)/usr/share/$(PKG_NAME)/sounds/music/32000 ] || $(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)/sounds/music/32000;
855         $(CP) $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/music/32000 $(1)/usr/share/$(PKG_NAME)/sounds/music;
856 endef
857
858
859 define Package/$(PKG_NAME)-sounds-moh-48KHz/install
860         #
861         # sounds-moh-48KHz
862         #
863         [ -d $(1)/usr/share/$(PKG_NAME)/sounds/music/48000 ] || $(INSTALL_DIR) $(1)/usr/share/$(PKG_NAME)/sounds/music/48000;
864         $(CP) $(PKG_INSTALL_DIR)/usr/share/$(PKG_NAME)/sounds/music/48000 $(1)/usr/share/$(PKG_NAME)/sounds/music;
865 endef
866
867
868 define Package/$(PKG_NAME)-tools/install
869         $(INSTALL_DIR) $(1)/usr/bin
870         $(CP) $(PKG_INSTALL_DIR)/usr/bin/fs_cli $(1)/usr/bin/
871         $(CP) $(PKG_INSTALL_DIR)/usr/bin/fs_encode $(1)/usr/bin/
872         $(CP) $(PKG_INSTALL_DIR)/usr/bin/fs_ivrd $(1)/usr/bin/
873         $(CP) $(PKG_INSTALL_DIR)/usr/bin/fsxs $(1)/usr/bin/
874         $(CP) $(PKG_INSTALL_DIR)/usr/bin/gentls_cert $(1)/usr/bin/
875         $(CP) $(PKG_INSTALL_DIR)/usr/bin/tone2wav $(1)/usr/bin/
876 endef
877
878
879 # 1. Name
880 # 2. Title
881 # 3. Selection on module configuration file
882 # 4. Files (module files include different names)
883 # 5. Files (supporting files include different names)
884 # 6. Inter module depends
885 # 7. Extra depends
886 #
887 define BuildPlugin
888   define Package/$(PKG_NAME)-mod-$(1)
889     $$(call Package/$(PKG_NAME)/Default)
890     TITLE:= FS $(2) module
891     DEPENDS:= $(PKG_NAME) $(foreach m,$(6),+$(PKG_NAME)-mod-$(m)) $(7)
892   endef
893
894   define Package/$(PKG_NAME)-mod-$(1)/install
895         [ -z "mod_$(subst -,_,$(1))" ] || $(INSTALL_DIR) $$(1)/usr/lib/$(PKG_NAME)
896
897         for f in $$$$(realpath $$$$(wildcard $(PKG_INSTALL_DIR)/usr/lib/$(PKG_NAME)/mod_$(subst -,_,$(1)).*)) $$$$(wildcard $(PKG_INSTALL_DIR)/usr/lib/$(PKG_NAME)/$(4)_*); \
898         do \
899                 $(CP) $$$$$$$${f} $$(1)/usr/lib/$(PKG_NAME)/; \
900         done
901
902         #
903         # mod_$(subst -,_,$(1)): $(5)
904         #
905         $(foreach f,$(5),[ -d $(dir $$(1)/usr/${f}) ] || $(INSTALL_DIR) $(dir $$(1)/usr/${f});$(CP) $$$$(wildcard $(PKG_INSTALL_DIR)/usr/${f}*) $(dir $$(1)/usr/${f});)
906
907         #
908         # mod_$(subst -,_,$(1)): Clean installed library control files from referencig to OpenWRT PATH.
909         #
910         for f in `ls $$(1)/usr/lib/$(PKG_NAME)/*.la`; \
911         do \
912                 sed -i -e "s#' \(.*\)/usr/lib/libexpat.la\(.*\)$(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME)\(.*\)#' -L/usr/lib -L/usr/lib/libiconv-full/lib -L/usr/lib/libintl-full/lib /usr/lib/lib$(PKG_NAME).la /usr/lib/libexpat.la\2/usr\3#g;s#' \(.*\)/usr/lib/libintl-full/lib#' -L/usr/lib -L/usr/lib/libiconv-full/lib -L/usr/lib/libintl-full/lib#g;s#-L\.\.##g;s#$(PKG_BUILD_DIR)\(.*\)/usr/lib/libtiff.la\(.*\)#/usr/lib/libtiff.la\2#g" $$$$$$$${f}; \
913         done
914
915         #
916         # 1. mod_$(subst -,_,$(1)) XML configuration files from: $$$$(patsubst $(PKG_BUILD_DIR)/%,%,$$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/conf/$(3)/autoload_configs/$(subst -,_,$(1)).conf.xml)))
917         #
918         $$$$(if $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/conf/$(3)/autoload_configs/$(subst -,_,$(1)).conf.xml)),[ -d $$(1)/etc/$(PKG_NAME)/autoload_configs ] || $(INSTALL_DIR) $$(1)/etc/$(PKG_NAME)/autoload_configs;$(CP) $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/conf/$(3)/autoload_configs/$(subst -,_,$(1)).conf.xml)) $$(1)/etc/$(PKG_NAME)/autoload_configs)
919
920         #
921         # 2. mod_$(subst -,_,$(1)) XML configuration files from: $$$$(patsubst $(PKG_BUILD_DIR)/%,%,$$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/$(3)/$(1)/*/$(subst -,_,$(1)).conf.xml)))
922         #
923         $$$$(if $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/$(3)/$(1)/*/$(subst -,_,$(1)).conf.xml)),[ -d $$(1)/etc/$(PKG_NAME)/autoload_configs ] || $(INSTALL_DIR) $$(1)/etc/$(PKG_NAME)/autoload_configs;$(CP) $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/$(3)/$(1)/*/$(subst -,_,$(1)).conf.xml)) $$(1)/etc/$(PKG_NAME)/autoload_configs)
924
925         #
926         # 3. mod_$(subst -,_,$(1)) XML configuration files from: $$$$(patsubst $(PKG_BUILD_DIR)/%,%,$$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/src/$(3)/*/mod_$(subst -,_,$(1))/conf/autoload_configs/$(subst -,_,$(1)).conf.xml)))
927         #
928         $$$$(if $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/src/$(3)/*/mod_$(subst -,_,$(1))/conf/autoload_configs/$(subst -,_,$(1)).conf.xml)),[ -d $$(1)/etc/$(PKG_NAME)/autoload_configs ] || $(INSTALL_DIR) $$(1)/etc/$(PKG_NAME)/autoload_configs;$(CP) $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/src/$(3)/*/mod_$(subst -,_,$(1))/conf/autoload_configs/$(subst -,_,$(1)).conf.xml)) $$(1)/etc/$(PKG_NAME)/autoload_configs)
929
930         #
931         # 4. mod_$(subst -,_,$(1)) XML configuration files from: $$$$(patsubst $(PKG_BUILD_DIR)/%,%,$$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/src/$(3)/*/mod_$(subst -,_,$(1))/conf*/$(subst -,_,$(1)).conf.xml)))
932         #
933         $$$$(if $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/src/$(3)/*/mod_$(subst -,_,$(1))/conf*/$(subst -,_,$(1)).conf.xml)),[ -d $$(1)/etc/$(PKG_NAME)/autoload_configs ] || $(INSTALL_DIR) $$(1)/etc/$(PKG_NAME)/autoload_configs;$(CP) $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/src/$(3)/*/mod_$(subst -,_,$(1))/conf*/$(subst -,_,$(1)).conf.xml)) $$(1)/etc/$(PKG_NAME)/autoload_configs)
934
935         #
936         # 5. mod_$(subst -,_,$(1)) XML configuration files from: $$$$(patsubst $(PKG_BUILD_DIR)/%,%,$$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/src/$(3)/*/mod_$(subst -,_,$(1))/$(subst -,_,$(1)).conf.xml)))
937         #
938         $$$$(if $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/src/$(3)/*/mod_$(subst -,_,$(1))/$(subst -,_,$(1)).conf.xml)),[ -d $$(1)/etc/$(PKG_NAME)/autoload_configs ] || $(INSTALL_DIR) $$(1)/etc/$(PKG_NAME)/autoload_configs;$(CP) $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/src/$(3)/*/mod_$(subst -,_,$(1))/$(subst -,_,$(1)).conf.xml)) $$(1)/etc/$(PKG_NAME)/autoload_configs)
939
940         #
941         # 6. Additional configuration files for mod_$(subst -,_,$(1)) from: $$$$(patsubst $(PKG_BUILD_DIR)/%,%,$$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/conf/$(3)/$(1)/*.$(1))))
942         #
943         $$$$(if $$$$(firstword $$$$(wildcard $(PKG_BUILD_DIR)/conf/$(3)/$(1)/*.$(1))),[ -d $$(1)/etc/$(PKG_NAME)/$(1) ] || $(INSTALL_DIR) $$(1)/etc/$(PKG_NAME)/$(1);$(CP) $(PKG_BUILD_DIR)/conf/$(3)/$(1) $$(1)/etc/$(PKG_NAME))
944   endef
945
946   define Package/$(PKG_NAME)-mod-$(1)/postinst
947 #!/bin/sh
948 sed -i -e 's|^\([ \t]*\)<!-- *\(.*\)"mod_$(subst -,_,$(1))"\(.*\) *-->\(.*\)$$$$|\1\2"mod_$(subst -,_,$(1))"\3\4|' $$$${IPKG_INSTROOT}/etc/$(PKG_NAME)/autoload_configs/modules.conf.xml
949   endef
950
951   define Package/$(PKG_NAME)-mod-$(1)/prerm
952 #!/bin/sh
953 sed -i -e 's|^\([ \t]*\)\(.*\)"mod_$(subst -,_,$(1))"\(.*\)$$$$|\1<!-- \2"mod_$(subst -,_,$(1))"\3 -->|' $$$${IPKG_INSTROOT}/etc/$(PKG_NAME)/autoload_configs/modules.conf.xml
954   endef
955
956   $$(eval $$(call BuildPackage,$(PKG_NAME)-mod-$(1)))
957 endef
958
959
960 $(eval $(call BuildPackage,$(PKG_NAME)))
961 $(eval $(call BuildPackage,$(PKG_NAME)-collection-upstream-defaults))
962 $(eval $(call BuildPackage,$(PKG_NAME)-collection-minimal))
963 $(eval $(call BuildPackage,$(PKG_NAME)-sounds-en-08KHz))
964 $(eval $(call BuildPackage,$(PKG_NAME)-sounds-en-16KHz))
965 $(eval $(call BuildPackage,$(PKG_NAME)-sounds-en-32KHz))
966 $(eval $(call BuildPackage,$(PKG_NAME)-sounds-en-48KHz))
967 $(eval $(call BuildPackage,$(PKG_NAME)-sounds-moh-08KHz))
968 $(eval $(call BuildPackage,$(PKG_NAME)-sounds-moh-16KHz))
969 $(eval $(call BuildPackage,$(PKG_NAME)-sounds-moh-32KHz))
970 $(eval $(call BuildPackage,$(PKG_NAME)-sounds-moh-48KHz))
971 $(eval $(call BuildPackage,$(PKG_NAME)-tools))
972 $(eval $(call BuildPackage,$(PKG_NAME)-example-config))
973 $(eval $(call BuildPackage,$(PKG_NAME)-config-upstream-defaults))
974 $(eval $(call BuildPackage,$(PKG_NAME)-config-minimal))
975
976
977 #
978 # $(eval $(call BuildPlugin,Name,Title,Selection on module Conf File,Files,Inter Depends,Extra Depends))
979 #
980 $(eval $(call BuildPlugin,abstraction,An Abstraction To API Call,vanilla,,,,))
981 $(eval $(call BuildPlugin,alsa,Alsa Endpoint,vanilla,,,,+alsa-lib @FS_WITH_ALSA))
982 $(eval $(call BuildPlugin,amr,Adaptive Multi-Rate On Bandwidth Codec,vanilla,,,,))
983 $(eval $(call BuildPlugin,amrwb,Wide Band AMR,vanilla,,,,))
984 $(eval $(call BuildPlugin,avmd,Advanced Voice Mail Detection,vanilla,,,,))
985 $(eval $(call BuildPlugin,blacklist,Blacklist,vanilla,,,,))
986 $(eval $(call BuildPlugin,bv,BroadVoice 16/32-bit Audio Codec,vanilla,,,,))
987 $(eval $(call BuildPlugin,callcenter,Call Center,vanilla,,,,))
988 $(eval $(call BuildPlugin,cdr-csv,CSV-CDR Handler,mod,,,,)) # ~/conf
989 $(eval $(call BuildPlugin,cdr-pg-csv,PostgreSQL CDR Handler,vanilla,,,,+coreutils +FS_WITH_POSTGRESQL:libpq @FS_WITH_POSTGRESQL))
990 $(eval $(call BuildPlugin,cdr-sqlite,SQLite3 CDR Handler,vanilla,,,,@FS_WITH_SQLITE3))
991 $(eval $(call BuildPlugin,celt,CELT Ultra-Low Delay Codec,vanilla,,,,+libogg))
992 $(eval $(call BuildPlugin,cepstral,Cepstral Interface,vanilla,,,,@BROKEN)) # needs <swift.h>
993 $(eval $(call BuildPlugin,cidlookup,Data Query For CID->NAME Services,mod,,,,+libcurl)) # ~/conf
994 $(eval $(call BuildPlugin,cluechoo,Framework Demo,vanilla,,,,))
995 $(eval $(call BuildPlugin,codec2,CoDec 2,,,,,))
996 $(eval $(call BuildPlugin,commands,API Commands,vanilla,,,,))
997 $(eval $(call BuildPlugin,conference,Conference Room,vanilla,,,,))
998 $(eval $(call BuildPlugin,console,Console Logger,vanilla,,,,))
999 $(eval $(call BuildPlugin,curl,HTTP Request,vanilla,,,,+libcurl))
1000 $(eval $(call BuildPlugin,dahdi-codec,DAHDI Codecs,vanilla,,,,))
1001 $(eval $(call BuildPlugin,db,Database Backend,vanilla,,,,))
1002 $(eval $(call BuildPlugin,dialplan-asterisk,Asterisk Dialplan Parser,vanilla,,,,))
1003 $(eval $(call BuildPlugin,dialplan-directory,Dialplan Directory,vanilla,,,,))
1004 $(eval $(call BuildPlugin,dialplan-xml,Dialplan-XML Interface,vanilla,,,,))
1005 $(eval $(call BuildPlugin,dingaling,Jabber Interface,vanilla,,,,+libopenssl))
1006 $(eval $(call BuildPlugin,directory,Search By Name Directory IVR,vanilla,,,,))
1007 $(eval $(call BuildPlugin,distributor,Simple Robin-Round Load,vanilla,,,,))
1008 $(eval $(call BuildPlugin,dptools,Dialplan Tools,vanilla,,,,))
1009 $(eval $(call BuildPlugin,easyroute,Simple DID Routing,vanilla,,,,))
1010 $(eval $(call BuildPlugin,enum,ENUM Routing,,,,,))
1011 $(eval $(call BuildPlugin,erlang-event,Erlang Event Handler,vanilla,,,,+erlang @BROKEN))
1012 $(eval $(call BuildPlugin,esf,Extra SIP Functionality,vanilla,,,,))
1013 $(eval $(call BuildPlugin,event-multicast,Multicast Event Handler,vanilla,,,,))
1014 $(eval $(call BuildPlugin,event-socket,Socket Event Handler,vanilla,,,,))
1015 $(eval $(call BuildPlugin,event-zmq,Socket Event Handler By Zero MQ,vanilla,,,,+libuuid))
1016 $(eval $(call BuildPlugin,expr,Expression Evaluation,vanilla,,,,))
1017 $(eval $(call BuildPlugin,fifo,FIFO,vanilla,,,,))
1018 $(eval $(call BuildPlugin,file-string,Streaming Multiple Sound Files Sequentially,vanilla,,,,@OBSOLETE)) # merged into dptools
1019 $(eval $(call BuildPlugin,flite,Festival TTS,vanilla,,,,@(!(armeb||avr32)||BROKEN)))
1020 $(eval $(call BuildPlugin,fsk,Bell-202 1200-Baud FSK Decoder,vanilla,,,,))
1021 $(eval $(call BuildPlugin,fsv,Video Player / Recorder,vanilla,,,,))
1022 $(eval $(call BuildPlugin,g723-1,G.723.1 Codec,vanilla,,,,))
1023 $(eval $(call BuildPlugin,g729,G.729 Codec,vanilla,,,,))
1024 $(eval $(call BuildPlugin,gsmopen,GSM Modem compatible Endpoint,mod,,,alsa,+alsa-lib @FS_WITH_ALSA @BROKEN)) # needs gsmlib
1025 $(eval $(call BuildPlugin,h26x,H26X Linear Codec,vanilla,,,,))
1026 $(eval $(call BuildPlugin,h323,H323 Endpoint,mod,,,,@BROKEN)) # Req. H323Plus v1.24.x or newer
1027 $(eval $(call BuildPlugin,hash,API For Manipulating A Hash Table,vanilla,,,,))
1028 $(eval $(call BuildPlugin,html5,HTML5 Endpoint Module,vanilla,,,,))
1029 $(eval $(call BuildPlugin,httapi,HT Telephony API and HTTP Caching,mod,,,,)) # ~/conf
1030 $(eval $(call BuildPlugin,http-cache,HTTP GET With Caching,mod,,,,+libcurl)) # ~/conf
1031 $(eval $(call BuildPlugin,ilbc,ILBC Codec,vanilla,,,,))
1032 $(eval $(call BuildPlugin,isac,iSAC Codec,vanilla,,,,))
1033 $(eval $(call BuildPlugin,java,Java Language Interface,vanilla,,,,@BROKEN)) # needs java
1034 $(eval $(call BuildPlugin,json-cdr,JSon-CDR Interface,mod,,,,+libcurl))
1035 $(eval $(call BuildPlugin,lcr,Least Cost Routing,vanilla,,,,))
1036 $(eval $(call BuildPlugin,local-stream,Multi-Channel On Same Stream,vanilla,,,,))
1037 $(eval $(call BuildPlugin,logfile,File Logger,vanilla,,,,))
1038 $(eval $(call BuildPlugin,loopback,Loopback to Dialplan Endpoint,vanilla,,,,))
1039 $(eval $(call BuildPlugin,lua,LUA Language Interface,vanilla,,,,))
1040 $(eval $(call BuildPlugin,managed,Media Switching Software Library,vanilla,,,,+glib2 @BROKEN)) # needs Mono
1041 $(eval $(call BuildPlugin,mp4,MP4 File Format Support For Video,vanilla,,,,@BROKEN)) # needs libmp4v2
1042 $(eval $(call BuildPlugin,mp4v,MP4 CoDec Support For Video,vanilla,,,,))
1043 $(eval $(call BuildPlugin,native-file,WAV Format Sound Player,vanilla,,,,))
1044 $(eval $(call BuildPlugin,nibblebill,Credit / Debit Billing,vanilla,,,,))
1045 $(eval $(call BuildPlugin,openzap,Zaptel (Superseded by FreeTDM),libs,ozmod,lib/libopenzap lib/pkgconfig/openzap,,+libpcap))
1046 $(eval $(call BuildPlugin,opus,Opus CoDec,vanilla,,,,))
1047 $(eval $(call BuildPlugin,oreka,Media Recording with Oreka,vanilla,,,,))
1048 $(eval $(call BuildPlugin,portaudio,Portaudio To Sound Card Interface,vanilla,,,alsa,+alsa-lib @FS_WITH_ALSA))
1049 $(eval $(call BuildPlugin,portaudio-stream,Portaudio Streaming Interface,vanilla,,,alsa,+alsa-lib @FS_WITH_ALSA))
1050 $(eval $(call BuildPlugin,posix-timer,POSIX Compliant Soft Timer,vanilla,,,,))
1051 $(eval $(call BuildPlugin,radius-cdr,Radius-CDR interface,vanilla,,,,@BROKEN)) # fails in freeradius-client
1052 $(eval $(call BuildPlugin,rayo,Rayo server & node implementation,vanilla,,,,))
1053 $(eval $(call BuildPlugin,redis,Redis Limited Backend,vanilla,,,,))
1054 $(eval $(call BuildPlugin,rss,RRS Feeds via TTS,vanilla,,,,))
1055 $(eval $(call BuildPlugin,rtmp,RTMP Protocol Handler,vanilla,,,,))
1056 $(eval $(call BuildPlugin,sangoma-codec,Sangoma Codec,vanilla,,,,@BROKEN)) # Req. Sangoma CoDec source
1057 $(eval $(call BuildPlugin,say-de,German Say,vanilla,,,,))
1058 $(eval $(call BuildPlugin,say-en,English Say,vanilla,,,,))
1059 $(eval $(call BuildPlugin,say-es,Spanish Say,vanilla,,,,))
1060 $(eval $(call BuildPlugin,say-fa,Persian Say,vanilla,,,,))
1061 $(eval $(call BuildPlugin,say-fr,French Say,vanilla,,,,))
1062 $(eval $(call BuildPlugin,say-hu,Hungarian Say,vanilla,,,,))
1063 $(eval $(call BuildPlugin,say-it,Italian Say,vanilla,,,,))
1064 $(eval $(call BuildPlugin,say-nl,Dutch Say,vanilla,,,,))
1065 $(eval $(call BuildPlugin,say-pt,Portugeese Say,vanilla,,,,))
1066 $(eval $(call BuildPlugin,say-ru,Russian Say,vanilla,,,,))
1067 $(eval $(call BuildPlugin,say-th,Thai Say,vanilla,,,,))
1068 $(eval $(call BuildPlugin,say-zh,Chineese Say,vanilla,,,,))
1069 $(eval $(call BuildPlugin,shell-stream,Streaming Audio Through CLI,vanilla,,,,))
1070 $(eval $(call BuildPlugin,silk,Skype(TM) SILK Codec Module,vanilla,,,,))
1071 $(eval $(call BuildPlugin,siren,G.722.1 Codec,vanilla,,,,))
1072 $(eval $(call BuildPlugin,skel,Template For New Module,vanilla,,,,))
1073 $(eval $(call BuildPlugin,skinny,Skinny Call Control Protocol (SCCP),vanilla,,,,))
1074 $(eval $(call BuildPlugin,skypopen,Skype Compatible Endpoint,mod,,,,@FEATURE_drawing-backend_libX11))
1075 $(eval $(call BuildPlugin,sms,SMS,vanilla,,,,))
1076 $(eval $(call BuildPlugin,snapshot,Record Audio Snapshot to File,vanilla,,,,))
1077 $(eval $(call BuildPlugin,sndfile,Multi-Format Sound File,vanilla,,,,))
1078 $(eval $(call BuildPlugin,snipe-hunt,Snipe Hunt (Simple Example Module),vanilla,,,,))
1079 $(eval $(call BuildPlugin,snmp,SNMP AgentX Subagent,vanilla,,,,+libnetsnmp))
1080 $(eval $(call BuildPlugin,snom,SNOM specific features,vanilla,,,,))
1081 $(eval $(call BuildPlugin,sofia,SOFIA SIP,mod,,,,)) # ~/conf
1082 $(eval $(call BuildPlugin,sonar,Sonar Ping Timer,vanilla,,,,))
1083 $(eval $(call BuildPlugin,spandsp,Span DSP,mod,,,,+libjpeg +FS_WITH_LZMA:liblzma)) # ~/conf
1084 $(eval $(call BuildPlugin,speex,Speex codec,mod,,,,))
1085 $(eval $(call BuildPlugin,spidermonkey,JavaScript,vanilla,,,,@BROKEN)) # fails in js
1086 $(eval $(call BuildPlugin,spidermonkey-core_db,JavaScript DB,vanilla,,,,@BROKEN))
1087 $(eval $(call BuildPlugin,spidermonkey-curl,JavaScript Curl,vanilla,,,,@BROKEN))
1088 $(eval $(call BuildPlugin,spidermonkey-odbc,JavaScript ODBC,vanilla,,,,@BROKEN))
1089 $(eval $(call BuildPlugin,spidermonkey-socket,JavaScript Socket,vanilla,,,,@BROKEN))
1090 $(eval $(call BuildPlugin,spidermonkey-teletone,JavaScript Teletone,vanilla,,,,@BROKEN))
1091 $(eval $(call BuildPlugin,spy,User Spy,vanilla,,,,))
1092 $(eval $(call BuildPlugin,stress,Voice Stress Detection,vanilla,,,,))
1093 $(eval $(call BuildPlugin,syslog,SysLog logger,vanilla,,,,))
1094 $(eval $(call BuildPlugin,timerfd,Linux Kernel timerfd API,vanilla,,,,))
1095 $(eval $(call BuildPlugin,tone-stream,Tone Generation Stream,vanilla,,,,))
1096 $(eval $(call BuildPlugin,tts-commandline,ASR TTS Command Interface,vanilla,,,,))
1097 $(eval $(call BuildPlugin,unimrcp,UniMRCP (MRCP Client),vanilla,,,,@BROKEN))
1098 $(eval $(call BuildPlugin,valet-parking,Valet Parking Application,vanilla,,,,))
1099 $(eval $(call BuildPlugin,vmd,VoiceMail Beep Detection,vanilla,,,,))
1100 $(eval $(call BuildPlugin,voicemail,VoiceMail,vanilla,,,,))
1101 $(eval $(call BuildPlugin,voicemail-ivr,VoiceMail IVR,vanilla,,,,))
1102 $(eval $(call BuildPlugin,vp8,VP8 Video Codec,vanilla,,,,))
1103 $(eval $(call BuildPlugin,xml-cdr,XML-CDR Handler,vanilla,,,,+libcurl))
1104 $(eval $(call BuildPlugin,xml-curl,XML-Curl Gateway,vanilla,,,,+libcurl))
1105 $(eval $(call BuildPlugin,xml-rpc,XML-RPC Interface,vanilla,,,,))
1106 $(eval $(call BuildPlugin,xml-scgi,SCGI XML Gateway,vanilla,,,,))
1107 $(eval $(call BuildPlugin,yaml,YAML langunage,vanilla,,,,))