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