xref: /OK3568_Linux_fs/buildroot/package/freeswitch/freeswitch.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1################################################################################
2#
3# freeswitch
4#
5################################################################################
6
7FREESWITCH_VERSION = 1.10.6
8FREESWITCH_SOURCE = freeswitch-$(FREESWITCH_VERSION).-release.tar.xz
9FREESWITCH_SITE = https://files.freeswitch.org/freeswitch-releases
10# External modules need headers/libs from staging
11FREESWITCH_INSTALL_STAGING = YES
12FREESWITCH_LICENSE = MPL-1.1, \
13	GPL-3.0+ with font exception (fonts), \
14	Apache-2.0 (apr, apr-util), \
15	BSD-3-Clause (libsrtp)
16
17FREESWITCH_LICENSE_FILES = \
18	COPYING \
19	libs/apr/LICENSE \
20	libs/apr-util/LICENSE \
21	libs/srtp/LICENSE
22
23FREESWITCH_CPE_ID_VENDOR = freeswitch
24
25# required dependencies
26FREESWITCH_DEPENDENCIES = \
27	host-pkgconf \
28	jpeg \
29	libcurl \
30	openssl \
31	pcre \
32	spandsp \
33	sofia-sip \
34	speex \
35	sqlite \
36	tiff \
37	util-linux \
38	zlib
39
40# disable display of ClueCon banner in fs_cli
41FREESWITCH_CONF_ENV += \
42	disable_cc=yes
43
44# we neither need host-perl nor host-php
45FREESWITCH_CONF_ENV += \
46	ac_cv_prog_PERL=false \
47	ac_cv_have_perl=no \
48	ac_cv_prog_PHP=false \
49	ac_cv_have_php=no \
50	ac_cv_prog_PHP_CONFIG=false \
51	ac_cv_have_php_config=no
52
53# copied from freeswitch/configure.ac, line 258+
54FREESWITCH_CONF_ENV += \
55	ac_cv_file__dev_ptmx=yes \
56	ac_cv_va_copy=yes \
57	ac_cv_file__dev_urandom=yes \
58	ac_cv_func_realloc_0_nonnull=yes \
59	ac_cv_func_malloc_0_nonnull=yes \
60	ac_cv_func_setpgrp_void=yes \
61	ac_cv_file__dev_zero=yes \
62	apr_cv_tcp_nodelay_with_cork=yes \
63	ac_cv_file_dbd_apr_dbd_mysql_c=no \
64	ac_cv_sizeof_ssize_t=4 \
65	apr_cv_mutex_recursive=yes \
66	ac_cv_func_pthread_rwlock_init=yes \
67	apr_cv_type_rwlock_t=yes \
68	apr_cv_process_shared_works=yes \
69	apr_cv_mutex_robust_shared=yes
70
71# build breaks with -Werror enabled
72FREESWITCH_CONF_ENV += \
73	ac_cv_gcc_supports_w_no_unused_result=no
74
75FREESWITCH_CONF_OPTS = \
76	--without-erlang \
77	--enable-fhs \
78	--without-python \
79	--disable-system-xmlrpc-c
80
81# zrtp supports a limited set of archs, sparc support is also broken due
82# to a broken ld call by gcc, see libs/libzrtp/include/zrtp_config.h
83ifeq ($(BR2_i386)$(BR2_arm)$(BR2_armeb)$(BR2_aarch64)$(BR2_aarch64_be)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpcle)$(BR2_x86_64),y)
84FREESWITCH_LICENSE_FILES += libs/libzrtp/src/zrtp_legal.c
85FREESWITCH_CONF_OPTS += --enable-zrtp
86else
87FREESWITCH_CONF_OPTS += --disable-zrtp
88endif
89
90# Enable optional modules
91FREESWITCH_ENABLED_MODULES += \
92	applications/mod_avmd \
93	applications/mod_blacklist \
94	applications/mod_callcenter \
95	applications/mod_commands \
96	applications/mod_conference \
97	applications/mod_curl \
98	applications/mod_db \
99	applications/mod_directory \
100	applications/mod_dptools \
101	applications/mod_easyroute \
102	applications/mod_esf \
103	applications/mod_esl \
104	applications/mod_expr \
105	applications/mod_fifo \
106	applications/mod_fsk \
107	applications/mod_hash \
108	applications/mod_httapi \
109	applications/mod_lcr \
110	applications/mod_sms \
111	applications/mod_snom \
112	applications/mod_spandsp \
113	applications/mod_spy \
114	applications/mod_valet_parking \
115	applications/mod_voicemail \
116	codecs/mod_g723_1 \
117	dialplans/mod_dialplan_asterisk \
118	dialplans/mod_dialplan_xml \
119	endpoints/mod_loopback \
120	endpoints/mod_rtc \
121	endpoints/mod_rtmp \
122	endpoints/mod_sofia \
123	endpoints/mod_verto \
124	event_handlers/mod_cdr_csv \
125	event_handlers/mod_cdr_sqlite \
126	event_handlers/mod_event_socket \
127	formats/mod_local_stream \
128	formats/mod_native_file \
129	formats/mod_tone_stream \
130	loggers/mod_console \
131	loggers/mod_logfile \
132	loggers/mod_syslog \
133	say/mod_say_de \
134	say/mod_say_en \
135	say/mod_say_es \
136	say/mod_say_es_ar \
137	say/mod_say_fa \
138	say/mod_say_fr \
139	say/mod_say_he \
140	say/mod_say_hr \
141	say/mod_say_hu \
142	say/mod_say_it \
143	say/mod_say_ja \
144	say/mod_say_nl \
145	say/mod_say_pl \
146	say/mod_say_pt \
147	say/mod_say_ru \
148	say/mod_say_sv \
149	say/mod_say_th \
150	say/mod_say_zh \
151	timers/mod_timerfd \
152	xml_int/mod_xml_cdr \
153	xml_int/mod_xml_rpc \
154	xml_int/mod_xml_scgi
155
156define FREESWITCH_ENABLE_MODULES
157	$(Q)echo $(FREESWITCH_ENABLED_MODULES) \
158		| tr ' ' '\n' \
159		> $(@D)/modules.conf
160endef
161FREESWITCH_PRE_CONFIGURE_HOOKS += FREESWITCH_ENABLE_MODULES
162
163# mod_isac supports a limited set of archs
164# src/mod/codecs/mod_isac/typedefs.h
165ifeq ($(BR2_i386)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_x86_64),y)
166FREESWITCH_LICENSE += , BSD-3-Clause (mod_isac)
167FREESWITCH_LICENSE_FILES += src/mod/codecs/mod_isac/LICENSE
168FREESWITCH_ENABLED_MODULES += codecs/mod_isac
169endif
170
171ifeq ($(BR2_PACKAGE_ALSA_LIB),y)
172FREESWITCH_DEPENDENCIES += alsa-lib
173FREESWITCH_ENABLED_MODULES += endpoints/mod_alsa
174endif
175
176# Use the pass-through g729 module provided by freeswitch instead of
177# the external mod_bcg729 provided by freeswitch-mod-bcg729.
178ifeq ($(BR2_PACKAGE_FREESWITCH_MOD_BCG729),)
179FREESWITCH_ENABLED_MODULES += codecs/mod_g729
180endif
181
182ifeq ($(BR2_PACKAGE_FREETYPE),y)
183FREESWITCH_DEPENDENCIES += freetype
184endif
185
186ifeq ($(BR2_PACKAGE_LIBBROADVOICE),y)
187FREESWITCH_DEPENDENCIES += libbroadvoice
188FREESWITCH_ENABLED_MODULES += codecs/mod_bv
189endif
190
191ifeq ($(BR2_PACKAGE_LIBCODEC2),y)
192FREESWITCH_DEPENDENCIES += libcodec2
193FREESWITCH_ENABLED_MODULES += codecs/mod_codec2
194endif
195
196ifeq ($(BR2_PACKAGE_LIBEDIT),y)
197FREESWITCH_DEPENDENCIES += libedit
198FREESWITCH_CONF_OPTS += --enable-core-libedit-support
199else
200FREESWITCH_CONF_OPTS += --disable-core-libedit-support
201endif
202
203ifeq ($(BR2_PACKAGE_LIBG7221),y)
204FREESWITCH_DEPENDENCIES += libg7221
205endif
206
207ifeq ($(BR2_PACKAGE_LIBILBC),y)
208FREESWITCH_DEPENDENCIES += libilbc
209FREESWITCH_ENABLED_MODULES += codecs/mod_ilbc
210endif
211
212ifeq ($(BR2_PACKAGE_LIBLDNS),y)
213FREESWITCH_DEPENDENCIES += libldns
214FREESWITCH_ENABLED_MODULES += applications/mod_enum
215endif
216
217ifeq ($(BR2_PACKAGE_LIBMEMCACHED),y)
218FREESWITCH_DEPENDENCIES += libmemcached
219FREESWITCH_ENABLED_MODULES += applications/mod_memcache
220endif
221
222ifeq ($(BR2_PACKAGE_LIBOPENH264),y)
223FREESWITCH_LICENSE += , BSD-2-Clause (libopenh264)
224FREESWITCH_LICENSE_FILES += docs/OPENH264_BINARY_LICENSE.txt
225FREESWITCH_DEPENDENCIES += libopenh264
226FREESWITCH_ENABLED_MODULES += codecs/mod_openh264
227endif
228
229ifeq ($(BR2_PACKAGE_LIBPNG),y)
230FREESWITCH_DEPENDENCIES += libpng
231FREESWITCH_ENABLED_MODULES += formats/mod_png
232endif
233
234ifeq ($(BR2_PACKAGE_LIBYAML),y)
235FREESWITCH_DEPENDENCIES += libyaml
236FREESWITCH_ENABLED_MODULES += languages/mod_yaml
237endif
238
239ifeq ($(BR2_PACKAGE_LUA),y)
240FREESWITCH_DEPENDENCIES += lua
241FREESWITCH_ENABLED_MODULES += languages/mod_lua
242endif
243
244ifeq ($(BR2_PACKAGE_OPENLDAP),y)
245FREESWITCH_DEPENDENCIES += openldap
246FREESWITCH_ENABLED_MODULES += directories/mod_ldap xml_int/mod_xml_ldap
247endif
248
249ifeq ($(BR2_PACKAGE_OPUS),y)
250FREESWITCH_DEPENDENCIES += opus
251FREESWITCH_ENABLED_MODULES += codecs/mod_opus
252endif
253
254ifeq ($(BR2_PACKAGE_PORTAUDIO),y)
255FREESWITCH_DEPENDENCIES += portaudio
256FREESWITCH_ENABLED_MODULES += endpoints/mod_portaudio
257endif
258
259ifeq ($(BR2_PACKAGE_LAME)$(BR2_PACKAGE_LIBSHOUT)$(BR2_PACKAGE_MPG123),yyy)
260FREESWITCH_DEPENDENCIES += lame libshout mpg123
261FREESWITCH_ENABLED_MODULES += formats/mod_shout
262endif
263
264ifeq ($(BR2_PACKAGE_LIBSILK),y)
265FREESWITCH_DEPENDENCIES += libsilk
266FREESWITCH_ENABLED_MODULES += codecs/mod_silk
267endif
268
269ifeq ($(BR2_PACKAGE_LIBSNDFILE),y)
270FREESWITCH_DEPENDENCIES += libsndfile
271FREESWITCH_ENABLED_MODULES += formats/mod_sndfile
272endif
273
274ifeq ($(BR2_PACKAGE_LIBSOUNDTOUCH),y)
275FREESWITCH_DEPENDENCIES += libsoundtouch
276FREESWITCH_ENABLED_MODULES += applications/mod_soundtouch
277endif
278
279ifeq ($(BR2_PACKAGE_OPENCV3),y)
280FREESWITCH_DEPENDENCIES += opencv3
281FREESWITCH_ENABLED_MODULES += applications/mod_cv
282endif
283
284ifeq ($(BR2_PACKAGE_POSTGRESQL),y)
285FREESWITCH_CONF_ENV += \
286	ac_cv_path_PG_CONFIG=$(STAGING_DIR)/usr/bin/pg_config
287FREESWITCH_DEPENDENCIES += postgresql
288FREESWITCH_ENABLED_MODULES += databases/mod_pgsql
289endif
290
291ifeq ($(BR2_PACKAGE_UNIXODBC),y)
292FREESWITCH_DEPENDENCIES += unixodbc
293FREESWITCH_CONF_OPTS += \
294	--enable-core-odbc-support \
295	--with-odbc=$(STAGING_DIR)/usr
296else
297FREESWITCH_CONF_OPTS += --disable-core-odbc-support
298endif
299
300ifeq ($(BR2_PACKAGE_XZ),y)
301FREESWITCH_DEPENDENCIES += xz
302endif
303
304ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8)$(BR2_PACKAGE_FFMPEG),yy)
305FREESWITCH_LICENSE += , BSD-3-Clause (libvpx, libyuv)
306FREESWITCH_LICENSE_FILES += libs/libvpx/LICENSE libs/libyuv/LICENSE
307FREESWITCH_CONF_OPTS += --enable-libvpx --enable-libyuv
308FREESWITCH_DEPENDENCIES += host-yasm ffmpeg
309FREESWITCH_ENABLED_MODULES += applications/mod_av applications/mod_fsv
310FREESWITCH_MAKE_ENV += CROSS=$(TARGET_CROSS)
311
312# Freeswitch's buildsystem forgets to pass important environment
313# variables and config options when it configures libvpx, so
314# pre-build libvpx manually, so Freeswitch does not attempt to run
315# its flawed commands...
316# Freeswitch only ever uses the static libtrary, that's hard-coded,
317# we can't do anything about that...
318# From package/libvpx/libvpx.mk:
319# - this is not a true autotools package.  It is based on the ffmpeg
320#   build system.
321# - ld is being used with cc options. therefore, pretend ld is cc.
322define FREESWITCH_BUILD_LIBVPX
323	cd $(@D)/libs/libvpx && \
324	$(TARGET_CONFIGURE_OPTS) \
325	$(TARGET_CONFIGURE_ARGS) \
326	LD="$(TARGET_CC)" \
327	CROSS=$(GNU_TARGET_NAME) \
328	./configure \
329		--target=generic-gnu \
330		--enable-pic \
331		--prefix=/usr \
332		--disable-shared --enable-static \
333		--disable-examples \
334		--disable-docs \
335		--disable-unit-tests && \
336	$(TARGET_MAKE_ENV) \
337	$(LIBVPX_MAKE_ENV) \
338	$(MAKE) \
339		-C $(@D)/libs/libvpx \
340		all
341endef
342FREESWITCH_PRE_BUILD_HOOKS += FREESWITCH_BUILD_LIBVPX
343
344else
345FREESWITCH_CONF_OPTS += --disable-libvpx --disable-libyuv
346endif
347
348$(eval $(autotools-package))
349