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