asterisk.mk 8.03 KB
Newer Older
Yann E. MORIN's avatar
Yann E. MORIN committed
1
2
3
4
5
6
################################################################################
#
# asterisk
#
################################################################################

7
ASTERISK_VERSION = 14.7.5
Yann E. MORIN's avatar
Yann E. MORIN committed
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# Use the github mirror: it's an official mirror maintained by Digium, and
# provides tarballs, which the main Asterisk git tree (behind Gerrit) does not.
ASTERISK_SITE = $(call github,asterisk,asterisk,$(ASTERISK_VERSION))

ASTERISK_SOUNDS_BASE_URL = http://downloads.asterisk.org/pub/telephony/sounds/releases
ASTERISK_EXTRA_DOWNLOADS = \
	$(ASTERISK_SOUNDS_BASE_URL)/asterisk-core-sounds-en-gsm-1.5.tar.gz \
	$(ASTERISK_SOUNDS_BASE_URL)/asterisk-moh-opsound-wav-2.03.tar.gz

ASTERISK_LICENSE = GPL-2.0, BSD-3c (SHA1, resample), BSD-4c (db1-ast)
ASTERISK_LICENSE_FILES = \
	COPYING \
	main/sha1.c \
	codecs/speex/speex_resampler.h \
	utils/db1-ast/include/db.h

# For patches 0001, 0003 and 0004
ASTERISK_AUTORECONF = YES
ASTERISK_AUTORECONF_OPTS = -Iautoconf -Ithird-party -Ithird-party/pjproject

ASTERISK_DEPENDENCIES = \
	host-asterisk \
	jansson \
	libcurl \
	libxml2 \
	ncurses \
	sqlite \
	util-linux

# Asterisk wants to run its menuselect tool (a highly tweaked derivative of
# kconfig), but builds it using the target tools. So we build it in the host
# variant (see below), and copy the full build tree of menuselect.
define ASTERISK_COPY_MENUSELECT
	rm -rf $(@D)/menuselect
	cp -a $(HOST_ASTERISK_DIR)/menuselect $(@D)/menuselect
endef
ASTERISK_PRE_CONFIGURE_HOOKS += ASTERISK_COPY_MENUSELECT

ASTERISK_CONF_OPTS = \
	--disable-xmldoc \
	--disable-internal-poll \
	--disable-asteriskssl \
	--disable-rpath \
	--without-bfd \
	--without-cap \
	--without-cpg \
	--without-curses \
	--without-gtk2 \
	--without-gmime \
	--without-h323 \
	--without-hoard \
	--without-iconv \
	--without-iksemel \
	--without-imap \
	--without-inotify \
	--without-iodbc \
	--without-isdnnet \
	--without-jack \
	--without-uriparser \
	--without-kqueue \
	--without-libedit \
	--without-libxslt \
	--without-ltdl \
	--without-lua \
	--without-misdn \
	--without-mysqlclient \
	--without-nbs \
	--without-neon29 \
	--without-newt \
	--without-openr2 \
	--without-osptk \
	--without-oss \
	--without-postgres \
	--without-pjproject \
	--without-popt \
	--without-pwlib \
	--without-resample \
	--without-sdl \
	--without-SDL_image \
	--without-spandsp \
	--without-sqlite \
	--without-suppserv \
	--without-tds \
	--without-termcap \
	--without-timerfd \
	--without-tinfo \
	--without-unbound \
	--without-unixodbc \
	--without-vpb \
	--without-x11 \
	--with-crypt \
	--with-jansson \
	--with-libcurl \
	--with-ilbc \
	--with-libxml2 \
	--with-ncurses="$(STAGING_DIR)/usr" \
	--with-sqlite3="$(STAGING_DIR)/usr" \
	--with-sounds-cache=$(BR2_DL_DIR)

# avcodec are from ffmpeg. There is virtually zero chance this could
# even work; asterisk is looking for ffmpeg/avcodec.h which has not
# been installed in this location since early 2007 (~10 years ago at
# the time of this writing).
ASTERISK_CONF_OPTS += --without-avcodec

ASTERISK_CONF_ENV = \
	ac_cv_path_CONFIG_LIBXML2=$(STAGING_DIR)/usr/bin/xml2-config

116
117
118
119
120
121
ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
ASTERISK_CONF_OPTS += --with-execinfo
else
ASTERISK_CONF_OPTS += --without-execinfo
endif

122
123
124
125
126
127
128
ifeq ($(BR2_PACKAGE_LIBGSM),y)
ASTERISK_DEPENDENCIES += libgsm
ASTERISK_CONF_OPTS += --with-gsm
else
ASTERISK_CONF_OPTS += --without-gsm
endif

129
130
131
132
133
134
135
ifeq ($(BR2_PACKAGE_ALSA_LIB),y)
ASTERISK_DEPENDENCIES += alsa-lib
ASTERISK_CONF_OPTS += --with-asound
else
ASTERISK_CONF_OPTS += --without-asound
endif

136
137
138
139
140
141
142
ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y)
ASTERISK_DEPENDENCIES += bluez_utils
ASTERISK_CONF_OPTS += --with-bluetooth
else
ASTERISK_CONF_OPTS += --without-bluetooth
endif

143
144
145
146
147
148
149
ifeq ($(BR2_PACKAGE_LIBICAL),y)
ASTERISK_DEPENDENCIES += libical
ASTERISK_CONF_OPTS += --with-ical
else
ASTERISK_CONF_OPTS += --without-ical
endif

150
151
152
153
154
155
156
ifeq ($(BR2_PACKAGE_OPENLDAP),y)
ASTERISK_DEPENDENCIES += openldap
ASTERISK_CONF_OPTS += --with-ldap
else
ASTERISK_CONF_OPTS += --without-ldap
endif

157
158
159
160
161
162
163
164
165
ifeq ($(BR2_PACKAGE_NEON),y)
ASTERISK_DEPENDENCIES += neon
ASTERISK_CONF_OPTS += --with-neon
ASTERISK_CONF_ENV += \
	ac_cv_path_CONFIG_NEON=$(STAGING_DIR)/usr/bin/neon-config
else
ASTERISK_CONF_OPTS += --without-neon
endif

166
167
168
169
170
171
172
ifeq ($(BR2_PACKAGE_NETSNMP),y)
ASTERISK_DEPENDENCIES += netsnmp
ASTERISK_CONF_OPTS += --with-netsnmp=$(STAGING_DIR)/usr
else
ASTERISK_CONF_OPTS += --without-netsnmp
endif

173
174
175
176
177
178
179
ifeq ($(BR2_PACKAGE_LIBOGG),y)
ASTERISK_DEPENDENCIES += libogg
ASTERISK_CONF_OPTS += --with-ogg
else
ASTERISK_CONF_OPTS += --without-ogg
endif

180
181
182
183
184
185
186
ifeq ($(BR2_PACKAGE_OPUS),y)
ASTERISK_DEPENDENCIES += opus
ASTERISK_CONF_OPTS += --with-opus
else
ASTERISK_CONF_OPTS += --without-opus
endif

187
188
189
190
191
192
193
ifeq ($(BR2_PACKAGE_PORTAUDIO),y)
ASTERISK_DEPENDENCIES += portaudio
ASTERISK_CONF_OPTS += --with-portaudio
else
ASTERISK_CONF_OPTS += --without-portaudio
endif

194
195
196
197
198
199
200
ifeq ($(BR2_PACKAGE_FREERADIUS_CLIENT),y)
ASTERISK_DEPENDENCIES += freeradius-client
ASTERISK_CONF_OPTS += --with-radius
else
ASTERISK_CONF_OPTS += --without-radius
endif

201
202
203
ifeq ($(BR2_PACKAGE_DAHDI_LINUX)$(BR2_PACKAGE_DAHDI_TOOLS),yy)
ASTERISK_DEPENDENCIES += dahdi-linux dahdi-tools
ASTERISK_CONF_OPTS += --with-dahdi --with-tonezone
204

205
206
207
208
209
210
211
ifeq ($(BR2_PACKAGE_LIBPRI),y)
ASTERISK_DEPENDENCIES += libpri
ASTERISK_CONF_OPTS += --with-pri
else
ASTERISK_CONF_OPTS += --without-pri
endif # PRI

212
213
214
215
216
217
218
ifeq ($(BR2_PACKAGE_LIBSS7),y)
ASTERISK_DEPENDENCIES += libss7
ASTERISK_CONF_OPTS += --with-ss7
else
ASTERISK_CONF_OPTS += --without-ss7
endif # SS7

219
else
220
221
222
ASTERISK_CONF_OPTS += \
	--without-dahdi --without-tonezone \
	--without-pri --without-ss7
223
224
endif # DAHDI

225
226
227
228
229
230
231
ifeq ($(BR2_PACKAGE_OPENSSL),y)
ASTERISK_DEPENDENCIES += openssl
ASTERISK_CONF_OPTS += --with-ssl
else
ASTERISK_CONF_OPTS += --without-ssl
endif

232
233
234
235
236
237
238
ifeq ($(BR2_PACKAGE_SPEEX),y)
ASTERISK_DEPENDENCIES += speex
ASTERISK_CONF_OPTS += --with-speex --with-speexdsp
else
ASTERISK_CONF_OPTS += --without-speex  --without-speexdsp
endif

239
240
241
242
243
244
245
ifeq ($(BR2_PACKAGE_LIBSRTP),y)
ASTERISK_DEPENDENCIES += libsrtp
ASTERISK_CONF_OPTS += --with-srtp
else
ASTERISK_CONF_OPTS += --without-srtp
endif

246
247
248
249
250
251
252
ifeq ($(BR2_PACKAGE_LIBVORBIS),y)
ASTERISK_DEPENDENCIES += libvorbis
ASTERISK_CONF_OPTS += --with-vorbis
else
ASTERISK_CONF_OPTS += --without-vorbis
endif

253
254
255
256
257
258
259
ifeq ($(BR2_PACKAGE_ZLIB),y)
ASTERISK_DEPENDENCIES += zlib
ASTERISK_CONF_OPTS += --with-z
else
ASTERISK_CONF_OPTS += --without-z
endif

Yann E. MORIN's avatar
Yann E. MORIN committed
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
ASTERISK_DIRS = \
	ASTVARLIBDIR="/usr/lib/asterisk" \
	ASTDATADIR="/usr/lib/asterisk" \
	ASTKEYDIR="/usr/lib/asterisk" \
	ASTDBDIR="/usr/lib/asterisk"

ASTERISK_MAKE_OPTS = $(ASTERISK_DIRS)

# We want to install sample configuration files, too.
ASTERISK_INSTALL_TARGET_OPTS = \
	$(ASTERISK_DIRS) \
	DESTDIR=$(TARGET_DIR) \
	LDCONFIG=true \
	install samples

$(eval $(autotools-package))

#-------------------------------------------------------------------------------
# This part deals with building the menuselect tool as a host package

HOST_ASTERISK_DEPENDENCIES = host-pkgconf host-libxml2 host-ncurses
HOST_ASTERISK_SUBDIR = menuselect

HOST_ASTERISK_LICENSE = GPL-2.0
HOST_ASTERISK_LICENSE_FILES = COPYING

# No need to autoreconf for the host variant,
# so do not inherit the target setup.
HOST_ASTERISK_AUTORECONF = NO

HOST_ASTERISK_CONF_ENV = CONFIG_LIBXML2=$(HOST_DIR)/usr/bin/xml2-config

HOST_ASTERISK_CONF_OPTS = \
	--without-newt \
	--without-curses \
	--with-ncurses=$(HOST_DIR)/usr

297
298
299
300
301
302
303
304
305
306
307
308
309
310
# Not an automake package, so does not inherit LDFLAGS et al. from
# the configure run.
HOST_ASTERISK_MAKE_ENV = $(HOST_CONFIGURE_OPTS)

# Even though menuselect is an autotools package, it is not an automake
# package and does not have an 'install' rule, as asterisk does expect
# it to be in a sub-directory of its source tree. We do so by copying
# the full menuselect build tree as a pre-configure hook in the target
# variant.
# However, the sanity checks on host packages are not run on menuselect.
# But we still want to catch that menuselect has the proper rpath set,
# for example, as it uses host libraries that we do build, like
# host-libxml2.
# So we do manually install the menuselect tool.
Yann E. MORIN's avatar
Yann E. MORIN committed
311
define HOST_ASTERISK_INSTALL_CMDS
312
313
	$(INSTALL) -D -m 0755 $(@D)/menuselect/menuselect \
		$(HOST_DIR)/bin/asterisk-menuselect
Yann E. MORIN's avatar
Yann E. MORIN committed
314
315
316
endef

$(eval $(host-autotools-package))