freeswitch.mk 9.3 KB

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