xref: /OK3568_Linux_fs/buildroot/package/asterisk/asterisk.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# asterisk
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunASTERISK_VERSION = 16.21.1
8*4882a593Smuzhiyun# Use the github mirror: it's an official mirror maintained by Digium, and
9*4882a593Smuzhiyun# provides tarballs, which the main Asterisk git tree (behind Gerrit) does not.
10*4882a593SmuzhiyunASTERISK_SITE = $(call github,asterisk,asterisk,$(ASTERISK_VERSION))
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunASTERISK_SOUNDS_BASE_URL = http://downloads.asterisk.org/pub/telephony/sounds/releases
13*4882a593SmuzhiyunASTERISK_EXTRA_DOWNLOADS = \
14*4882a593Smuzhiyun	$(ASTERISK_SOUNDS_BASE_URL)/asterisk-core-sounds-en-gsm-1.6.1.tar.gz \
15*4882a593Smuzhiyun	$(ASTERISK_SOUNDS_BASE_URL)/asterisk-moh-opsound-wav-2.03.tar.gz
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunASTERISK_LICENSE = GPL-2.0, BSD-3-Clause (SHA1, resample), BSD-4-Clause (db1-ast)
18*4882a593SmuzhiyunASTERISK_LICENSE_FILES = \
19*4882a593Smuzhiyun	COPYING \
20*4882a593Smuzhiyun	main/sha1.c \
21*4882a593Smuzhiyun	codecs/speex/speex_resampler.h \
22*4882a593Smuzhiyun	utils/db1-ast/include/db.h
23*4882a593Smuzhiyun
24*4882a593SmuzhiyunASTERISK_CPE_ID_VENDOR = asterisk
25*4882a593SmuzhiyunASTERISK_CPE_ID_PRODUCT = open_source
26*4882a593SmuzhiyunASTERISK_SELINUX_MODULES = asterisk
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun# For patches 0002, 0003 and 0005
29*4882a593SmuzhiyunASTERISK_AUTORECONF = YES
30*4882a593SmuzhiyunASTERISK_AUTORECONF_OPTS = -Iautoconf -Ithird-party -Ithird-party/pjproject -Ithird-party/jansson
31*4882a593Smuzhiyun
32*4882a593SmuzhiyunASTERISK_DEPENDENCIES = \
33*4882a593Smuzhiyun	host-asterisk \
34*4882a593Smuzhiyun	jansson \
35*4882a593Smuzhiyun	libcurl \
36*4882a593Smuzhiyun	libedit \
37*4882a593Smuzhiyun	libxml2 \
38*4882a593Smuzhiyun	sqlite \
39*4882a593Smuzhiyun	util-linux
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun# Asterisk wants to run its menuselect tool (a highly tweaked derivative of
42*4882a593Smuzhiyun# kconfig), but builds it using the target tools. So we build it in the host
43*4882a593Smuzhiyun# variant (see below), and copy the full build tree of menuselect.
44*4882a593Smuzhiyundefine ASTERISK_COPY_MENUSELECT
45*4882a593Smuzhiyun	rm -rf $(@D)/menuselect
46*4882a593Smuzhiyun	cp -a $(HOST_ASTERISK_DIR)/menuselect $(@D)/menuselect
47*4882a593Smuzhiyunendef
48*4882a593SmuzhiyunASTERISK_PRE_CONFIGURE_HOOKS += ASTERISK_COPY_MENUSELECT
49*4882a593Smuzhiyun
50*4882a593SmuzhiyunASTERISK_CONF_OPTS = \
51*4882a593Smuzhiyun	--disable-xmldoc \
52*4882a593Smuzhiyun	--disable-internal-poll \
53*4882a593Smuzhiyun	--disable-asteriskssl \
54*4882a593Smuzhiyun	--disable-rpath \
55*4882a593Smuzhiyun	--without-bfd \
56*4882a593Smuzhiyun	--without-cap \
57*4882a593Smuzhiyun	--without-cpg \
58*4882a593Smuzhiyun	--without-curses \
59*4882a593Smuzhiyun	--without-gtk2 \
60*4882a593Smuzhiyun	--without-gmime \
61*4882a593Smuzhiyun	--without-hoard \
62*4882a593Smuzhiyun	--without-iconv \
63*4882a593Smuzhiyun	--without-iksemel \
64*4882a593Smuzhiyun	--without-imap \
65*4882a593Smuzhiyun	--without-inotify \
66*4882a593Smuzhiyun	--without-iodbc \
67*4882a593Smuzhiyun	--without-isdnnet \
68*4882a593Smuzhiyun	--without-jack \
69*4882a593Smuzhiyun	--without-uriparser \
70*4882a593Smuzhiyun	--without-kqueue \
71*4882a593Smuzhiyun	--without-libedit \
72*4882a593Smuzhiyun	--without-libxslt \
73*4882a593Smuzhiyun	--without-lua \
74*4882a593Smuzhiyun	--without-misdn \
75*4882a593Smuzhiyun	--without-mysqlclient \
76*4882a593Smuzhiyun	--without-nbs \
77*4882a593Smuzhiyun	--without-neon29 \
78*4882a593Smuzhiyun	--without-newt \
79*4882a593Smuzhiyun	--without-openr2 \
80*4882a593Smuzhiyun	--without-osptk \
81*4882a593Smuzhiyun	--without-oss \
82*4882a593Smuzhiyun	--without-postgres \
83*4882a593Smuzhiyun	--without-pjproject \
84*4882a593Smuzhiyun	--without-pjproject-bundled \
85*4882a593Smuzhiyun	--without-popt \
86*4882a593Smuzhiyun	--without-resample \
87*4882a593Smuzhiyun	--without-sdl \
88*4882a593Smuzhiyun	--without-SDL_image \
89*4882a593Smuzhiyun	--without-sqlite \
90*4882a593Smuzhiyun	--without-suppserv \
91*4882a593Smuzhiyun	--without-tds \
92*4882a593Smuzhiyun	--without-termcap \
93*4882a593Smuzhiyun	--without-timerfd \
94*4882a593Smuzhiyun	--without-tinfo \
95*4882a593Smuzhiyun	--without-unbound \
96*4882a593Smuzhiyun	--without-unixodbc \
97*4882a593Smuzhiyun	--without-vpb \
98*4882a593Smuzhiyun	--without-x11 \
99*4882a593Smuzhiyun	--with-crypt \
100*4882a593Smuzhiyun	--with-jansson \
101*4882a593Smuzhiyun	--with-libcurl \
102*4882a593Smuzhiyun	--with-ilbc \
103*4882a593Smuzhiyun	--with-libxml2 \
104*4882a593Smuzhiyun	--with-libedit="$(STAGING_DIR)/usr" \
105*4882a593Smuzhiyun	--with-sqlite3="$(STAGING_DIR)/usr" \
106*4882a593Smuzhiyun	--with-sounds-cache=$(ASTERISK_DL_DIR)
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun# avcodec are from ffmpeg. There is virtually zero chance this could
109*4882a593Smuzhiyun# even work; asterisk is looking for ffmpeg/avcodec.h which has not
110*4882a593Smuzhiyun# been installed in this location since early 2007 (~10 years ago at
111*4882a593Smuzhiyun# the time of this writing).
112*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-avcodec
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun# asterisk is not compatible with freeswitch spandsp
115*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-spandsp
116*4882a593Smuzhiyun
117*4882a593SmuzhiyunASTERISK_CONF_ENV = \
118*4882a593Smuzhiyun	ac_cv_file_bridges_bridge_softmix_include_hrirs_h=true \
119*4882a593Smuzhiyun	ac_cv_path_CONFIG_LIBXML2=$(STAGING_DIR)/usr/bin/xml2-config
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun# Uses __atomic_fetch_add_4
122*4882a593Smuzhiyunifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
123*4882a593SmuzhiyunASTERISK_CONF_ENV += LIBS="-latomic"
124*4882a593Smuzhiyunendif
125*4882a593Smuzhiyun
126*4882a593Smuzhiyunifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
127*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-execinfo
128*4882a593Smuzhiyunelse
129*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-execinfo
130*4882a593Smuzhiyunendif
131*4882a593Smuzhiyun
132*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBGSM),y)
133*4882a593SmuzhiyunASTERISK_DEPENDENCIES += libgsm
134*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-gsm
135*4882a593Smuzhiyunelse
136*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-gsm
137*4882a593Smuzhiyunendif
138*4882a593Smuzhiyun
139*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ALSA_LIB),y)
140*4882a593SmuzhiyunASTERISK_DEPENDENCIES += alsa-lib
141*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-asound
142*4882a593Smuzhiyunelse
143*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-asound
144*4882a593Smuzhiyunendif
145*4882a593Smuzhiyun
146*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)
147*4882a593SmuzhiyunASTERISK_DEPENDENCIES += bluez5_utils
148*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-bluetooth
149*4882a593Smuzhiyunelse
150*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-bluetooth
151*4882a593Smuzhiyunendif
152*4882a593Smuzhiyun
153*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBICAL),y)
154*4882a593SmuzhiyunASTERISK_DEPENDENCIES += libical
155*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-ical
156*4882a593Smuzhiyunelse
157*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-ical
158*4882a593Smuzhiyunendif
159*4882a593Smuzhiyun
160*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_OPENLDAP),y)
161*4882a593SmuzhiyunASTERISK_DEPENDENCIES += openldap
162*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-ldap
163*4882a593Smuzhiyunelse
164*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-ldap
165*4882a593Smuzhiyunendif
166*4882a593Smuzhiyun
167*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_NEON),y)
168*4882a593SmuzhiyunASTERISK_DEPENDENCIES += neon
169*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-neon
170*4882a593SmuzhiyunASTERISK_CONF_ENV += \
171*4882a593Smuzhiyun	ac_cv_path_CONFIG_NEON=$(STAGING_DIR)/usr/bin/neon-config
172*4882a593Smuzhiyunelse
173*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-neon
174*4882a593Smuzhiyunendif
175*4882a593Smuzhiyun
176*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_NETSNMP),y)
177*4882a593SmuzhiyunASTERISK_DEPENDENCIES += netsnmp
178*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-netsnmp=$(STAGING_DIR)/usr
179*4882a593Smuzhiyunelse
180*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-netsnmp
181*4882a593Smuzhiyunendif
182*4882a593Smuzhiyun
183*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBOGG),y)
184*4882a593SmuzhiyunASTERISK_DEPENDENCIES += libogg
185*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-ogg
186*4882a593Smuzhiyunelse
187*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-ogg
188*4882a593Smuzhiyunendif
189*4882a593Smuzhiyun
190*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_OPUS),y)
191*4882a593SmuzhiyunASTERISK_DEPENDENCIES += opus
192*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-opus
193*4882a593Smuzhiyunelse
194*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-opus
195*4882a593Smuzhiyunendif
196*4882a593Smuzhiyun
197*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_PORTAUDIO),y)
198*4882a593SmuzhiyunASTERISK_DEPENDENCIES += portaudio
199*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-portaudio
200*4882a593Smuzhiyunelse
201*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-portaudio
202*4882a593Smuzhiyunendif
203*4882a593Smuzhiyun
204*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_FREERADIUS_CLIENT),y)
205*4882a593SmuzhiyunASTERISK_DEPENDENCIES += freeradius-client
206*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-radius
207*4882a593Smuzhiyunelse
208*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-radius
209*4882a593Smuzhiyunendif
210*4882a593Smuzhiyun
211*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_DAHDI_LINUX)$(BR2_PACKAGE_DAHDI_TOOLS),yy)
212*4882a593SmuzhiyunASTERISK_DEPENDENCIES += dahdi-linux dahdi-tools
213*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-dahdi --with-tonezone
214*4882a593Smuzhiyun
215*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBPRI),y)
216*4882a593SmuzhiyunASTERISK_DEPENDENCIES += libpri
217*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-pri
218*4882a593Smuzhiyunelse
219*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-pri
220*4882a593Smuzhiyunendif # PRI
221*4882a593Smuzhiyun
222*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBSS7),y)
223*4882a593SmuzhiyunASTERISK_DEPENDENCIES += libss7
224*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-ss7
225*4882a593Smuzhiyunelse
226*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-ss7
227*4882a593Smuzhiyunendif # SS7
228*4882a593Smuzhiyun
229*4882a593Smuzhiyunelse
230*4882a593SmuzhiyunASTERISK_CONF_OPTS += \
231*4882a593Smuzhiyun	--without-dahdi --without-tonezone \
232*4882a593Smuzhiyun	--without-pri --without-ss7
233*4882a593Smuzhiyunendif # DAHDI
234*4882a593Smuzhiyun
235*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_OPENSSL),y)
236*4882a593SmuzhiyunASTERISK_DEPENDENCIES += openssl
237*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-ssl
238*4882a593Smuzhiyunelse
239*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-ssl
240*4882a593Smuzhiyunendif
241*4882a593Smuzhiyun
242*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy)
243*4882a593SmuzhiyunASTERISK_DEPENDENCIES += speex
244*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-speex --with-speexdsp
245*4882a593Smuzhiyunelse
246*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-speex --without-speexdsp
247*4882a593Smuzhiyunendif
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun# asterisk needs an openssl-enabled libsrtp
250*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBSRTP)$(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yyx)
251*4882a593SmuzhiyunASTERISK_DEPENDENCIES += libsrtp
252*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-srtp
253*4882a593Smuzhiyunelse
254*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-srtp
255*4882a593Smuzhiyunendif
256*4882a593Smuzhiyun
257*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBVORBIS),y)
258*4882a593SmuzhiyunASTERISK_DEPENDENCIES += libvorbis
259*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-vorbis
260*4882a593Smuzhiyunelse
261*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-vorbis
262*4882a593Smuzhiyunendif
263*4882a593Smuzhiyun
264*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ZLIB),y)
265*4882a593SmuzhiyunASTERISK_DEPENDENCIES += zlib
266*4882a593SmuzhiyunASTERISK_CONF_OPTS += --with-z
267*4882a593Smuzhiyunelse
268*4882a593SmuzhiyunASTERISK_CONF_OPTS += --without-z
269*4882a593Smuzhiyunendif
270*4882a593Smuzhiyun
271*4882a593SmuzhiyunASTERISK_DIRS = \
272*4882a593Smuzhiyun	ASTVARLIBDIR="/usr/lib/asterisk" \
273*4882a593Smuzhiyun	ASTDATADIR="/usr/lib/asterisk" \
274*4882a593Smuzhiyun	ASTKEYDIR="/usr/lib/asterisk" \
275*4882a593Smuzhiyun	ASTDBDIR="/usr/lib/asterisk"
276*4882a593Smuzhiyun
277*4882a593SmuzhiyunASTERISK_MAKE_OPTS = $(ASTERISK_DIRS)
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun# Uses __atomic_fetch_add_4
280*4882a593Smuzhiyunifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
281*4882a593SmuzhiyunASTERISK_MAKE_OPTS += ASTLDFLAGS="-latomic"
282*4882a593Smuzhiyunendif
283*4882a593Smuzhiyun
284*4882a593Smuzhiyun# Remove default -O3 optimization flag
285*4882a593SmuzhiyunASTERISK_MAKE_OPTS += OPTIMIZE=""
286*4882a593Smuzhiyun
287*4882a593SmuzhiyunASTERISK_CFLAGS = $(TARGET_CFLAGS)
288*4882a593Smuzhiyun
289*4882a593Smuzhiyunifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_93847),y)
290*4882a593SmuzhiyunASTERISK_CFLAGS += -O0
291*4882a593Smuzhiyunendif
292*4882a593Smuzhiyun
293*4882a593SmuzhiyunASTERISK_CONF_OPTS += CFLAGS="$(ASTERISK_CFLAGS)"
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun# We want to install sample configuration files, too.
296*4882a593SmuzhiyunASTERISK_INSTALL_TARGET_OPTS = \
297*4882a593Smuzhiyun	$(ASTERISK_DIRS) \
298*4882a593Smuzhiyun	DESTDIR=$(TARGET_DIR) \
299*4882a593Smuzhiyun	LDCONFIG=true \
300*4882a593Smuzhiyun	install samples
301*4882a593Smuzhiyun
302*4882a593Smuzhiyun$(eval $(autotools-package))
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun#-------------------------------------------------------------------------------
305*4882a593Smuzhiyun# This part deals with building the menuselect tool as a host package
306*4882a593Smuzhiyun
307*4882a593SmuzhiyunHOST_ASTERISK_DEPENDENCIES = host-pkgconf host-libxml2 host-ncurses
308*4882a593SmuzhiyunHOST_ASTERISK_SUBDIR = menuselect
309*4882a593Smuzhiyun
310*4882a593SmuzhiyunHOST_ASTERISK_LICENSE = GPL-2.0
311*4882a593SmuzhiyunHOST_ASTERISK_LICENSE_FILES = COPYING
312*4882a593Smuzhiyun
313*4882a593Smuzhiyun# No need to autoreconf for the host variant,
314*4882a593Smuzhiyun# so do not inherit the target setup.
315*4882a593SmuzhiyunHOST_ASTERISK_AUTORECONF = NO
316*4882a593Smuzhiyun
317*4882a593SmuzhiyunHOST_ASTERISK_CONF_ENV = CONFIG_LIBXML2=$(HOST_DIR)/bin/xml2-config
318*4882a593Smuzhiyun
319*4882a593SmuzhiyunHOST_ASTERISK_CONF_OPTS = \
320*4882a593Smuzhiyun	--without-newt \
321*4882a593Smuzhiyun	--without-curses \
322*4882a593Smuzhiyun	--with-ncurses=$(HOST_DIR)
323*4882a593Smuzhiyun
324*4882a593Smuzhiyun# Not an automake package, so does not inherit LDFLAGS et al. from
325*4882a593Smuzhiyun# the configure run.
326*4882a593SmuzhiyunHOST_ASTERISK_MAKE_ENV = $(HOST_CONFIGURE_OPTS)
327*4882a593Smuzhiyun
328*4882a593Smuzhiyun# Even though menuselect is an autotools package, it is not an automake
329*4882a593Smuzhiyun# package and does not have an 'install' rule, as asterisk does expect
330*4882a593Smuzhiyun# it to be in a sub-directory of its source tree. We do so by copying
331*4882a593Smuzhiyun# the full menuselect build tree as a pre-configure hook in the target
332*4882a593Smuzhiyun# variant.
333*4882a593Smuzhiyun# However, the sanity checks on host packages are not run on menuselect.
334*4882a593Smuzhiyun# But we still want to catch that menuselect has the proper rpath set,
335*4882a593Smuzhiyun# for example, as it uses host libraries that we do build, like
336*4882a593Smuzhiyun# host-libxml2.
337*4882a593Smuzhiyun# So we do manually install the menuselect tool.
338*4882a593Smuzhiyundefine HOST_ASTERISK_INSTALL_CMDS
339*4882a593Smuzhiyun	$(INSTALL) -D -m 0755 $(@D)/menuselect/menuselect \
340*4882a593Smuzhiyun		$(HOST_DIR)/bin/asterisk-menuselect
341*4882a593Smuzhiyunendef
342*4882a593Smuzhiyun
343*4882a593Smuzhiyun$(eval $(host-autotools-package))
344