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