freeswitch.mk 9.0 KB

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