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