[Buildroot] [PATCH v2 1/1] package/freeswitch: new package

Bernd Kuhls bernd.kuhls at t-online.de
Mon Sep 7 19:07:00 UTC 2015


Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
---
v2: Addressed various comments (Thomas)

 package/Config.in                          |   1 +
 package/freeswitch/0001-cross_git.patch    |  17 ++
 package/freeswitch/0002-jpeg.patch         |  24 +++
 package/freeswitch/0003-aarch64_zrtp.patch |  22 ++
 package/freeswitch/Config.in               | 311 ++++++++++++++++++++++++++++
 package/freeswitch/freeswitch.mk           | 322 +++++++++++++++++++++++++++++
 6 files changed, 697 insertions(+)
 create mode 100644 package/freeswitch/0001-cross_git.patch
 create mode 100644 package/freeswitch/0002-jpeg.patch
 create mode 100644 package/freeswitch/0003-aarch64_zrtp.patch
 create mode 100644 package/freeswitch/Config.in
 create mode 100644 package/freeswitch/freeswitch.mk

diff --git a/package/Config.in b/package/Config.in
index 9bd4190..a8716b4 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1235,6 +1235,7 @@ endif
 	source "package/fmc/Config.in"
 	source "package/foomatic-filters/Config.in"
 	source "package/fping/Config.in"
+	source "package/freeswitch/Config.in"
 	source "package/gesftpserver/Config.in"
 	source "package/gutenprint/Config.in"
 	source "package/hans/Config.in"
diff --git a/package/freeswitch/0001-cross_git.patch b/package/freeswitch/0001-cross_git.patch
new file mode 100644
index 0000000..f977bb8
--- /dev/null
+++ b/package/freeswitch/0001-cross_git.patch
@@ -0,0 +1,17 @@
+Fix cross-compilation
+
+build breaks with -Werror enabled
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+--- freeswitch.git/configure.ac.orig	2015-02-24 18:15:49.000000000 +0100
++++ freeswitch.git/configure.ac	2015-02-24 19:17:15.857077515 +0100
+@@ -379,7 +379,7 @@
+ elif test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
+     APR_ADDTO(SWITCH_AM_CFLAGS, -fPIC)
+     APR_ADDTO(SWITCH_AM_CXXFLAGS, -fPIC)
+-    if test "$ac_cv_gcc_supports_w_no_unused_result" = yes; then
++    if test "$ac_cv_gcc_supports_w_no_unused_result" = xyes; then
+       APR_ADDTO(SWITCH_AM_CFLAGS, -Werror)
+     fi
+     if test "${enable_64}" = "yes"; then
diff --git a/package/freeswitch/0002-jpeg.patch b/package/freeswitch/0002-jpeg.patch
new file mode 100644
index 0000000..26094a0
--- /dev/null
+++ b/package/freeswitch/0002-jpeg.patch
@@ -0,0 +1,24 @@
+Fix jpeg detection
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -uNr freeswitch_video2-b8b6acf33efe64aebbd939dd7281d6b6cd8fc2f4.org/configure.ac freeswitch_video2-b8b6acf33efe64aebbd939dd7281d6b6cd8fc2f4/configure.ac
+--- freeswitch_video2-b8b6acf33efe64aebbd939dd7281d6b6cd8fc2f4.org/configure.ac	2015-05-23 05:18:56.000000000 +0200
++++ freeswitch_video2-b8b6acf33efe64aebbd939dd7281d6b6cd8fc2f4/configure.ac	2015-05-25 14:15:20.360156247 +0200
+@@ -783,6 +783,8 @@
+ APR_ADDTO([PLATFORM_CORE_LIBS], [-lz])
+ fi
+ 
++AC_CHECK_LIB(jpeg, jpeg_std_error,, AC_MSG_ERROR([no usable libjpeg; please install libjpeg devel package or equivalent]))
++
+ PKG_CHECK_MODULES([YUV], [libyuv >= 0.0.1280],
+	     [AC_MSG_RESULT([yes]);AM_CONDITIONAL([HAVE_YUV],[true])],
+	     [AC_MSG_RESULT([no]);AM_CONDITIONAL([HAVE_YUV],[false])])
+@@ -797,7 +799,6 @@
+ 
+ save_LIBS="$LIBS"
+ LIBS=
+-AC_CHECK_LIB(jpeg, jpeg_std_error,, AC_MSG_ERROR([no usable libjpeg; please install libjpeg devel package or equivalent]))
+ 
+ AC_CHECK_LIB(jbig, jbg_enc_out, have_libjbig=yes, have_libjbig=no)
+ if test "x$have_libjbig" = "xyes"  ; then
diff --git a/package/freeswitch/0003-aarch64_zrtp.patch b/package/freeswitch/0003-aarch64_zrtp.patch
new file mode 100644
index 0000000..5d78d81
--- /dev/null
+++ b/package/freeswitch/0003-aarch64_zrtp.patch
@@ -0,0 +1,22 @@
+Add aarch64 support in zrtp.
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
+
+diff -uNr freeswitch-16d600c0350a79c2532c739dd1432f7ed318ea09.org/libs/libzrtp/include/zrtp_config.h freeswitch-16d600c0350a79c2532c739dd1432f7ed318ea09/libs/libzrtp/include/zrtp_config.h
+--- freeswitch-16d600c0350a79c2532c739dd1432f7ed318ea09.org/libs/libzrtp/include/zrtp_config.h	2015-09-04 23:46:10.000000000 +0200
++++ freeswitch-16d600c0350a79c2532c739dd1432f7ed318ea09/libs/libzrtp/include/zrtp_config.h	2015-09-06 15:29:38.642038763 +0200
+@@ -88,7 +88,13 @@
+  */
+ #define ZRTP_BYTE_ORDER ZBO_BIG_ENDIAN
+ 
+-#elif defined(ARM) || defined(_ARM_) || defined(ARMV4) || defined(__arm__)
++#elif defined(__AARCH64EB__)
++/*
++ * aarch64, big endian
++ */
++#define ZRTP_BYTE_ORDER ZBO_BIG_ENDIAN
++
++#elif defined(ARM) || defined(_ARM_) || defined(ARMV4) || defined(__arm__) || defined(__AARCH64EL__)
+ /*
+  * ARM, default to little endian
+  */
diff --git a/package/freeswitch/Config.in b/package/freeswitch/Config.in
new file mode 100644
index 0000000..22a85ee
--- /dev/null
+++ b/package/freeswitch/Config.in
@@ -0,0 +1,311 @@
+comment "freeswitch needs a toolchain w/ C++, threads"
+	depends on BR2_USE_MMU
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305
+	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201405
+	depends on !BR2_UCLIBC_VERSION_NG
+
+menuconfig BR2_PACKAGE_FREESWITCH
+	bool "freeswitch"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_USE_MMU # apr, included in freeswitch source
+	depends on !BR2_STATIC_LIBS # apr, included in freeswitch source
+	# Triggers the _gp link issue in nios2
+	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305
+	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201405
+	depends on !BR2_UCLIBC_VERSION_NG
+	select BR2_PACKAGE_LIBCURL
+	select BR2_PACKAGE_LIBJPEG
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_PCRE
+	select BR2_PACKAGE_SPEEX
+	select BR2_PACKAGE_SQLITE
+	# "libuuid development package highly recommended!"
+	# https://freeswitch.org/stash/projects/FS/repos/freeswitch/browse/build/config/uuid.m4#9
+	select BR2_PACKAGE_UTIL_LINUX if BR2_USE_WCHAR
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID if BR2_USE_WCHAR
+	select BR2_PACKAGE_ZLIB
+	help
+	  FreeSWITCH is a scalable open source cross-platform telephony
+	  platform designed to route and interconnect popular communication
+	  protocols using audio, video, text or any other form of media.
+
+	  https://www.freeswitch.org
+
+if BR2_PACKAGE_FREESWITCH
+
+config BR2_PACKAGE_FREESWITCH_FREETYPE
+	bool "freetype"
+	select BR2_PACKAGE_FREETYPE
+
+config BR2_PACKAGE_FREESWITCH_LIBEDIT
+	bool "libedit"
+	depends on BR2_USE_WCHAR
+	select BR2_PACKAGE_LIBEDIT
+
+comment "libedit support needs a toolchain w/ wchar"
+	depends on !BR2_USE_WCHAR
+
+config BR2_PACKAGE_FREESWITCH_LIBPNG
+	bool "libpng"
+	select BR2_PACKAGE_LIBPNG
+
+config BR2_PACKAGE_FREESWITCH_MYSQL
+	bool "mysql"
+	select BR2_PACKAGE_MYSQL
+
+config BR2_PACKAGE_FREESWITCH_UNIXODBC
+	bool "unixodbc"
+	select BR2_PACKAGE_UNIXODBC
+
+config BR2_PACKAGE_FREESWITCH_XML_RPC
+	bool "xml_rpc"
+	default y
+	depends on BR2_USE_WCHAR
+	help
+	  mod_xml_rpc allows you to use the webapi - firing any API from
+	  the web browser just as you would from the FS console!
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_xml_rpc
+
+comment "mod_xml_rpc needs a toolchain w/ wchar"
+	depends on !BR2_USE_WCHAR
+
+config BR2_PACKAGE_FREESWITCH_ZRTP
+	bool "zrtp"
+	default y
+	depends on !BR2_armeb
+	help
+	  ZRTP is SRTP based, but instead of using SIP to exchange keys,
+	  it exchanges keys within the media stream itself making it more
+	  secure.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/ZRTP
+
+menu "Applications"
+
+config BR2_PACKAGE_FREESWITCH_AVMD
+	bool "avmd"
+	help
+	  AVMD stands for "Advanced Voice Mail Detection" and mod_avmd
+	  is designed to detect the beep sound at the end of voicemail
+	  or answering machine greetings.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_avmd
+
+config BR2_PACKAGE_FREESWITCH_BLACKLIST
+	bool "blacklist"
+	help
+	  The blacklist module is a tool designed to be called from a
+	  dialplan or script which returns a boolean value of 'true' or
+	  'false'.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_blacklist
+
+config BR2_PACKAGE_FREESWITCH_CALLCENTER
+	bool "callcenter"
+	help
+	  mod_callcenter is an inbound call queuing application that can
+	  be used for call center needs.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_callcenter
+
+config BR2_PACKAGE_FREESWITCH_DPTOOLS
+	bool "dptools"
+	default y
+	help
+	  Dialplan tools provide the apps (commands) to process call
+	  sessions in XML dialplans.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools
+
+config BR2_PACKAGE_FREESWITCH_EASYROUTE
+	bool "easyroute"
+	select BR2_PACKAGE_FREESWITCH_UNIXODBC
+	help
+	  Easyroute is a simple DID routing engine that uses a database
+	  lookup to determine how to route an incoming call. It uses a
+	  simple principle of numbers and gateways, with a many-to-one
+	  relationship.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_easyroute
+
+config BR2_PACKAGE_FREESWITCH_ENUM
+	bool "enum"
+	select BR2_PACKAGE_LIBLDNS
+	help
+	  ENUM (Electronic Number Mapping System) is a system that uses
+	  standard phone numbers as a key to lookup addressing and
+	  identification information that can potentially let Freeswitch
+	  servers communicate directly, thus bypassing the PSTN, reducing
+	  cost, and improving audio quality.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_enum
+
+config BR2_PACKAGE_FREESWITCH_VIDEO
+	bool "video conferencing"
+	depends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS
+	depends on BR2_USE_WCHAR
+	select BR2_PACKAGE_FFMPEG
+	select BR2_PACKAGE_FFMPEG_AVRESAMPLE
+	select BR2_PACKAGE_FFMPEG_SWSCALE
+	select BR2_PACKAGE_IMAGEMAGICK
+	select BR2_PACKAGE_LIBOPENH264
+	select BR2_PACKAGE_LIBVPX
+	select BR2_PACKAGE_LIBYUV
+	select BR2_PACKAGE_VLC
+	help
+	  Video conferencing support
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+1.6+Video
+
+comment "video conferencing support needs a toolchain w/ wchar"
+	depends on !BR2_USE_WCHAR
+
+endmenu # Applications
+
+menu "Audio codecs"
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_BROADVOICE
+	bool "broadvoice"
+	select BR2_PACKAGE_LIBBROADVOICE
+	help
+	  BroadVoice16 and BroadVoice32 audio codecs (Broadcom codecs).
+
+	  https://www.broadcom.com/support/broadvoice
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_CODEC2
+	bool "codec2"
+	select BR2_PACKAGE_LIBCODEC2
+	help
+	  codec2 is a narrow band codec created by the developer of the
+	  speex codec.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_codec2
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_G7221
+	bool "g7221"
+	default y
+	select BR2_PACKAGE_LIBG7221
+	help
+	  libg722_1 is a library for the ITU G.722.1 and Annex C
+	  wideband speech codecs.
+
+	  http://www.soft-switch.org
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_ILBC
+	bool "ilbc"
+	select BR2_PACKAGE_LIBILBC
+	help
+	  iLBC is a good low bitrate codec, offering compression similar
+	  to G.729 however the MOS is higher when there are some lost
+	  packets.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_iLBC
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_ISAC
+	bool "isac"
+	# no aarch64/armeb support in src/mod/codecs/mod_isac/typedefs.h
+	depends on !BR2_aarch64 && !BR2_armeb
+	help
+	  iSAC is a HD codec kit similar to G.722 anthony extracted iSAC
+	  codec from WebRTC project and built mod_iSAC on top of it.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_isac
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_OPUS
+	bool "opus"
+	default y
+	select BR2_PACKAGE_OPUS
+	help
+	  Opus codec implementation in Freeswitch.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_opus
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_PORTAUDIO
+	bool "portaudio"
+	select BR2_PACKAGE_PORTAUDIO
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_SILK
+	bool "silk"
+	select BR2_PACKAGE_LIBSILK
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_SNDFILE
+	bool "sndfile"
+	select BR2_PACKAGE_LIBSNDFILE
+
+config BR2_PACKAGE_FREESWITCH_AUDIO_SOUNDTOUCH
+	bool "soundtouch"
+	select BR2_PACKAGE_LIBSOUNDTOUCH
+
+endmenu # Audio codecs
+
+menu "Endpoints"
+
+config BR2_PACKAGE_FREESWITCH_ENDPOINT_ALSA
+	bool "alsa"
+	select BR2_PACKAGE_ALSA_LIB
+
+config BR2_PACKAGE_FREESWITCH_ENDPOINT_RTMP
+	bool "rtmp"
+	help
+	  mod_rtmp is an RTMP (Real time media protocol) endpoint for
+	  FreeSWITCH. The RTMP protocol is primarily used by Flash for
+	  streaming audio, video, and data over the Internet.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_rtmp
+
+config BR2_PACKAGE_FREESWITCH_ENDPOINT_SOFIA
+	bool "sofia"
+	default y
+	help
+	  mod_sofia is the SIP endpoint implemented by FreeSWITCH.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_sofia
+
+config BR2_PACKAGE_FREESWITCH_ENDPOINT_VERTO
+	bool "verto"
+	help
+	  Verto (VER-to) RTC is a FreeSWITCH endpoint that implements a
+	  subset of a JSON-RPC connection designed for use over secure
+	  websockets.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_verto
+
+endmenu # Endpoints
+
+menu "Script Languages"
+
+config BR2_PACKAGE_FREESWITCH_LIBYAML
+	bool "libyaml"
+	select BR2_PACKAGE_LIBYAML
+
+config BR2_PACKAGE_FREESWITCH_LUA
+	bool "lua"
+	depends on BR2_PACKAGE_LUA_5_2
+	help
+	  Lua is the preferred scripting language for custom applications
+	  based on FreeSWITCH.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_lua
+
+comment "freeswitch needs a Lua 5.2 interpreter"
+	depends on !BR2_PACKAGE_LUA_5_2
+
+config BR2_PACKAGE_FREESWITCH_PYTHON
+	bool "python"
+	depends on BR2_USE_WCHAR
+	select BR2_PACKAGE_PYTHON
+	help
+	  This module allows one to write FreeSWITCH applications using
+	  Python.
+
+	  https://freeswitch.org/confluence/display/FREESWITCH/mod_python
+
+comment "python support needs a toolchain w/ wchar"
+	depends on !BR2_USE_WCHAR
+
+endmenu # Script Languages
+
+endif # BR2_PACKAGE_FREESWITCH
diff --git a/package/freeswitch/freeswitch.mk b/package/freeswitch/freeswitch.mk
new file mode 100644
index 0000000..3534771
--- /dev/null
+++ b/package/freeswitch/freeswitch.mk
@@ -0,0 +1,322 @@
+################################################################################
+#
+# freeswitch
+#
+################################################################################
+
+FREESWITCH_VERSION = 16d600c0350a79c2532c739dd1432f7ed318ea09
+FREESWITCH_SITE = https://freeswitch.org/stash/scm/fs/freeswitch.git
+FREESWITCH_SITE_METHOD = git
+FREESWITCH_LICENSE = MPL v1.1
+FREESWITCH_LICENSE_FILES = docs/COPYING
+
+# required dependencies
+FREESWITCH_DEPENDENCIES = \
+	host-autoconf host-automake host-libtool host-pkgconf \
+	libcurl libjpeg openssl pcre sqlite speex zlib
+
+define FREESWITCH_BOOTSTRAP
+	cd $(@D) && $(TARGET_MAKE_ENV) ./bootstrap.sh
+endef
+FREESWITCH_POST_PATCH_HOOKS += FREESWITCH_BOOTSTRAP
+
+# we neither need host-perl nor host-php
+FREESWITCH_CONF_ENV += \
+	ac_cv_prog_PERL=false \
+	ac_cv_have_perl=no \
+	ac_cv_prog_PHP=false \
+	ac_cv_have_php=no \
+	ac_cv_prog_PHP_CONFIG=false \
+	ac_cv_have_php_config=no
+
+# copied from configure.ac, line 233+
+FREESWITCH_CONF_ENV += \
+	ac_cv_file__dev_ptmx=yes \
+	ac_cv_va_copy=yes \
+	ac_cv_file__dev_urandom=yes \
+	ac_cv_func_realloc_0_nonnull=yes \
+	ac_cv_func_malloc_0_nonnull=yes \
+	ac_cv_func_setpgrp_void=yes \
+	ac_cv_file__dev_zero=yes \
+	apr_cv_tcp_nodelay_with_cork=yes \
+	ac_cv_file_dbd_apr_dbd_mysql_c=no \
+	ac_cv_sizeof_ssize_t=4 \
+	apr_cv_mutex_recursive=yes \
+	ac_cv_func_pthread_rwlock_init=yes \
+	apr_cv_type_rwlock_t=yes \
+	apr_cv_process_shared_works=yes \
+	apr_cv_mutex_robust_shared=yes
+
+FREESWITCH_CONF_OPTS = --without-erlang --enable-fhs
+
+FREESWITCH_ENABLED_MODULES = \
+	applications\/mod_curl \
+	applications\/mod_directory \
+	applications\/mod_esl \
+	applications\/mod_fsk \
+	applications\/mod_lcr \
+	applications\/mod_snom \
+	applications\/mod_spy \
+	loggers\/mod_console \
+	say\/mod_say_de
+
+# amr/amrwb are copyrighted codecs, not included in freeswitch source
+# mod_b64 is a joke:
+# http://lists.freeswitch.org/pipermail/freeswitch-users/2013-April/094377.html
+FREESWITCH_DISABLED_MODULES = \
+	codecs\/mod_amr \
+	codecs\/mod_amrwb \
+	codecs\/mod_b64
+
+# Core features
+
+FREESWITCH_DEPENDENCIES += \
+	$(if $(BR2_PACKAGE_FREESWITCH_FREETYPE),freetype) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBUUID),util-linux) \
+	$(if $(BR2_PACKAGE_FREESWITCH_MYSQL),mysql)
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_LIBEDIT),y)
+FREESWITCH_DEPENDENCIES += libedit
+FREESWITCH_CONF_OPTS += --enable-core-libedit-support
+else
+FREESWITCH_CONF_OPTS += --disable-core-libedit-support
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_LIBPNG),y)
+FREESWITCH_DEPENDENCIES += libpng
+FREESWITCH_ENABLED_MODULES += formats\/mod_png
+else
+FREESWITCH_DISABLED_MODULES += formats\/mod_png
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_UNIXODBC),y)
+FREESWITCH_DEPENDENCIES += unixodbc
+FREESWITCH_CONF_OPTS += \
+	--enable-core-odbc-support \
+	--with-odbc=$(STAGING_DIR)/usr
+else
+FREESWITCH_CONF_OPTS += --disable-core-odbc-support
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_XML_RPC),y)
+FREESWITCH_ENABLED_MODULES += xml_int\/mod_xml_rpc
+else
+FREESWITCH_DISABLED_MODULES += xml_int\/mod_xml_rpc
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_ZRTP),y)
+FREESWITCH_CONF_OPTS += --enable-zrtp
+else
+FREESWITCH_CONF_OPTS += --disable-zrtp
+endif
+
+# Applications
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AVMD),y)
+FREESWITCH_ENABLED_MODULES += applications\/mod_avmd
+else
+FREESWITCH_DISABLED_MODULES += applications\/mod_avmd
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_BLACKLIST),y)
+FREESWITCH_ENABLED_MODULES += applications\/mod_blacklist
+else
+FREESWITCH_DISABLED_MODULES += applications\/mod_blacklist
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_CALLCENTER),y)
+FREESWITCH_ENABLED_MODULES += applications\/mod_callcenter
+else
+FREESWITCH_DISABLED_MODULES += applications\/mod_callcenter
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_DPTOOLS),y)
+FREESWITCH_ENABLED_MODULES += applications\/mod_dptools
+else
+FREESWITCH_DISABLED_MODULES += applications\/mod_dptools
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_ENUM),y)
+FREESWITCH_DEPENDENCIES += libldns
+FREESWITCH_ENABLED_MODULES += applications\/mod_enum
+else
+FREESWITCH_DISABLED_MODULES += applications\/mod_enum
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_EASYROUTE),y)
+FREESWITCH_ENABLED_MODULES += applications\/mod_easyroute
+else
+FREESWITCH_DISABLED_MODULES += applications\/mod_easyroute
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_VIDEO),y)
+FREESWITCH_DEPENDENCIES += \
+	ffmpeg \
+	imagemagick \
+	libopenh264 \
+	libvpx \
+	libyuv \
+	vlc
+FREESWITCH_ENABLED_MODULES += \
+	applications\/mod_av \
+	applications\/mod_fsv \
+	formats\/mod_imagick \
+	codecs\/mod_openh264 \
+	formats\/mod_vlc \
+	codecs\/mod_vpx
+else
+FREESWITCH_DISABLED_MODULES += \
+	applications\/mod_av \
+	applications\/mod_fsv \
+	formats\/mod_imagick \
+	codecs\/mod_openh264 \
+	formats\/mod_vlc \
+	codecs\/mod_vpx
+endif
+
+# Audio codecs
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_BROADVOICE),y)
+FREESWITCH_DEPENDENCIES += libbroadvoice
+FREESWITCH_ENABLED_MODULES += codecs\/mod_bv
+else
+FREESWITCH_DISABLED_MODULES += codecs\/mod_bv
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_CODEC2),y)
+FREESWITCH_DEPENDENCIES += libcodec2
+FREESWITCH_ENABLED_MODULES += codecs\/mod_codec2
+else
+FREESWITCH_DISABLED_MODULES += codecs\/mod_codec2
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_G7221),y)
+FREESWITCH_DEPENDENCIES += libg7221
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_ILBC),y)
+FREESWITCH_DEPENDENCIES += libilbc
+FREESWITCH_ENABLED_MODULES += codecs\/mod_ilbc
+else
+FREESWITCH_DISABLED_MODULES += codecs\/mod_ilbc
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_ISAC),y)
+FREESWITCH_ENABLED_MODULES += codecs\/mod_isac
+else
+FREESWITCH_DISABLED_MODULES += codecs\/mod_isac
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_OPUS),y)
+FREESWITCH_DEPENDENCIES += opus
+FREESWITCH_ENABLED_MODULES += codecs\/mod_opus
+else
+FREESWITCH_DISABLED_MODULES += codecs\/mod_opus
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_PORTAUDIO),y)
+FREESWITCH_DEPENDENCIES += portaudio
+FREESWITCH_ENABLED_MODULES += codecs\/mod_portaudio
+else
+FREESWITCH_DISABLED_MODULES += codecs\/mod_portaudio
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_SILK),y)
+FREESWITCH_DEPENDENCIES += libsilk
+FREESWITCH_ENABLED_MODULES += codecs\/mod_silk
+else
+FREESWITCH_DISABLED_MODULES += codecs\/mod_silk
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_SNDFILE),y)
+FREESWITCH_DEPENDENCIES += libsndfile
+FREESWITCH_ENABLED_MODULES += formats\/mod_sndfile
+else
+FREESWITCH_DISABLED_MODULES += formats\/mod_sndfile
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_AUDIO_SOUNDTOUCH),y)
+FREESWITCH_DEPENDENCIES += libsoundtouch
+FREESWITCH_ENABLED_MODULES += applications\/mod_soundtouch
+else
+FREESWITCH_DISABLED_MODULES += applications\/mod_soundtouch
+endif
+
+# Endpoints
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_ENDPOINT_ALSA),y)
+FREESWITCH_DEPENDENCIES += alsa-lib
+FREESWITCH_ENABLED_MODULES += endpoints\/mod_alsa
+else
+FREESWITCH_DISABLED_MODULES += endpoints\/mod_alsa
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_ENDPOINT_RTMP),y)
+FREESWITCH_ENABLED_MODULES += endpoints\/mod_rtmp
+else
+FREESWITCH_DISABLED_MODULES += endpoints\/mod_rtmp
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_ENDPOINT_SOFIA),y)
+FREESWITCH_ENABLED_MODULES += endpoints\/mod_sofia
+else
+FREESWITCH_DISABLED_MODULES += endpoints\/mod_sofia
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_ENDPOINT_VERTO),y)
+FREESWITCH_ENABLED_MODULES += endpoints\/mod_rtc endpoints\/mod_verto
+else
+FREESWITCH_DISABLED_MODULES += endpoints\/mod_rtc endpoints\/mod_verto
+endif
+
+# Script Languages
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_LIBYAML),y)
+FREESWITCH_DEPENDENCIES += libyaml
+FREESWITCH_ENABLED_MODULES += languages\/mod_yaml
+else
+FREESWITCH_DISABLED_MODULES += languages\/mod_yaml
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_LUA),y)
+FREESWITCH_DEPENDENCIES += lua
+FREESWITCH_ENABLED_MODULES += languages\/mod_lua
+else
+FREESWITCH_DISABLED_MODULES += languages\/mod_lua
+endif
+
+ifeq ($(BR2_PACKAGE_FREESWITCH_PYTHON),y)
+FREESWITCH_DEPENDENCIES += python
+FREESWITCH_CONF_OPTS += --with-python
+FREESWITCH_ENABLED_MODULES += languages\/mod_python
+else
+FREESWITCH_CONF_OPTS += --without-python
+FREESWITCH_DISABLED_MODULES += languages\/mod_python
+endif
+
+# Setup modules.conf
+
+define FREESWITCH_ENABLE_OPT # (option, file)
+	$(SED) "/\\<$(1)\\>/d" $(2)
+	echo '$(1)' | sed 's/\\//' >> $(2)
+endef
+
+define FREESWITCH_DISABLE_OPT # (option, file)
+	$(SED) "/\\<$(1)\\>/d" $(2)
+endef
+
+define FREESWITCH_ENABLE_MODULES
+	$(foreach mod,$(FREESWITCH_ENABLED_MODULES),\
+		$(call FREESWITCH_ENABLE_OPT,$(mod),$(@D)/modules.conf)$(sep))
+endef
+
+FREESWITCH_PRE_CONFIGURE_HOOKS += FREESWITCH_ENABLE_MODULES
+
+define FREESWITCH_DISABLE_MODULES
+	$(foreach mod,$(FREESWITCH_DISABLED_MODULES),\
+		$(call FREESWITCH_DISABLE_OPT,$(mod),$(@D)/modules.conf)$(sep))
+endef
+
+FREESWITCH_PRE_CONFIGURE_HOOKS += FREESWITCH_DISABLE_MODULES
+
+$(eval $(autotools-package))
-- 
2.1.4




More information about the buildroot mailing list