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