4 MASTER_SITES= https://downloads.asterisk.org/pub/telephony/%SUBDIR%/:DEFAULT,g729
5 MASTER_SITE_SUBDIR= asterisk/ \
6 asterisk/old-releases/ \
9 DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
10 DIST_SUBDIR= ${PORTNAME}
11 EXTRACT_ONLY:= ${DISTNAME}${EXTRACT_SUFX}
13 MAINTAINER= ports@FreeBSD.org
14 COMMENT= Open Source PBX and telephony toolkit
15 WWW= https://www.asterisk.org
18 LICENSE_FILE= ${WRKSRC}/LICENSE
20 LIB_DEPENDS= libuuid.so:misc/e2fsprogs-libuuid \
21 libjansson.so:devel/jansson
23 USES= bison compiler:c11 cpe gmake gnome iconv libedit localbase \
24 pkgconfig shebangfix sqlite ssl ncurses
31 SHEBANG_FILES= agi/agi-test.agi \
33 contrib/scripts/astversion
36 CONFIGURE_ARGS= --datarootdir=${DATADIR} \
37 --with-ilbc=internal \
38 --with-crypto=${OPENSSLBASE} \
39 --with-ssl=${OPENSSLBASE} \
40 --with-externals-cache=${DISTDIR}/${DIST_SUBDIR}
42 MAKE_ARGS+= NOISY_BUILD=yes \
44 MAKE_ENV= PTHREAD_LIBS="-lpthread" \
46 PWLIBDIR=${LOCALBASE}/share/pwlib \
47 OSVERSION=${OSVERSION} \
49 ASTCFLAGS="${CFLAGS}" \
50 ASTLDFLAGS="${LDFLAGS}"
55 CONFLICTS_BUILD= linuxthreads
56 CONFLICTS_INSTALL= asterisk13 asterisk16
58 USERS= ${ASTERISK_USER}
59 GROUPS= ${ASTERISK_GROUP} dahdi
61 OPTIONS_DEFINE= ASTVERSION BACKTRACE CURL EXCHANGE FREETDS G729 LDAP LUA MACRO \
62 MP3PLAYER OOH323 OPTIMIZED_CFLAGS PJSIP PORTAUDIO RADIUS SNMP \
63 SPANDSP SRTP SYSINFO URIPARSER XMLDOC XMPP
64 OPTIONS_DEFINE_aarch64= GEOLOCATION
65 OPTIONS_DEFINE_x86_64= DAHDI GEOLOCATION
66 OPTIONS_DEFINE_i386= DAHDI GEOLOCATION
67 OPTIONS_DEFINE_powerpc= DAHDI
68 OPTIONS_DEFINE_powerpc64= DAHDI
69 OPTIONS_DEFINE_powerpc64le= DAHDI
70 OPTIONS_DEFINE_sparc64= DAHDI
71 OPTIONS_DEFAULT= CURL FREETDS GSM LUA MACRO MP3PLAYER NEWT ODBC OPUS MYSQL PGSQL \
72 PJSIP PORTAUDIO RADIUS SNMP SPANDSP SPEEX SRTP URIPARSER \
74 OPTIONS_DEFAULT_x86_64= DAHDI XMPP
75 OPTIONS_DEFAULT_i386= DAHDI XMPP
76 OPTIONS_DEFAULT_powerpc= DAHDI XMPP
77 OPTIONS_DEFAULT_powerpc64= DAHDI XMPP
78 OPTIONS_DEFAULT_powerpc64le= DAHDI XMPP
79 OPTIONS_DEFAULT_sparc64= DAHDI XMPP
81 OPTIONS_GROUP= CODECS DATABASE
82 OPTIONS_GROUP_CODECS= GSM NEWG711 OPUS SPEEX VORBIS
83 OPTIONS_GROUP_DATABASE= MYSQL ODBC PGSQL
86 OPTIONS_MULTI_MENU= NCURSES NEWT
89 ASTVERSION_DESC?= Install astversion (requires bash)
90 BACKTRACE_DESC?= Stack backtrace support via (lib)execinfo
91 CODECS_DESC= Encoder/Decoder (Codec) Support
92 DAHDI_DESC?= DAHDI support
93 DATABASE_DESC= Database Support
94 EXCHANGE_DESC?= Exchange calendar support
95 G729_DESC?= Install G.729 format sounds for Music-on-Hold (MoH)
96 GEOLOCATION_DESC?= Enable SIP Geolocation support
97 MACRO_DESC?= Enable app_macro (deprecated)
98 MENU_DESC= Menuselect Interface Backend
99 MP3PLAYER_DESC= Install MP3 Player for Music-On-Hold (mpg123)
100 NEWG711_DESC?= New G711 Codec
101 NEWT_DESC= Newt User Interface
102 OOH323_DESC?= ooh323 support
103 OPUS_DESC?= Opus Codec
104 PJSIP_DESC?= Build the PJSIP based SIP channel
105 SRTP_DESC?= SecureRTP support
106 SYSINFO_DESC?= Use devel/libsysinfo to get system information
107 URIPARSER_DESC?= Use RFC 3986 compliant uriparser library
108 XMLDOC_DESC?= Build and install XML documentation
109 XMPP_DESC?= XMPP/GTALK support
111 ASTVERSION_RUN_DEPENDS= bash:shells/bash
113 BACKTRACE_CONFIGURE_WITH= execinfo
115 CURL_LIB_DEPENDS= libcurl.so:ftp/curl
116 CURL_CONFIGURE_WITH= libcurl
118 DAHDI_LIB_DEPENDS= libpri.so:misc/libpri \
119 libopenr2.so:misc/openr2 \
120 libtonezone.so:misc/dahdi
121 DAHDI_CONFIGURE_WITH= dahdi openr2
123 EXCHANGE_LIB_DEPENDS= libneon.so:www/neon \
124 libexpat.so:textproc/expat2
125 EXCHANGE_USES= gettext-runtime
126 EXCHANGE_CONFIGURE_OFF= --without-neon --without-neon29
128 FREETDS_LIB_DEPENDS= libsybdb.so:databases/freetds
129 FREETDS_CONFIGURE_ON= --with-tds=${LOCALBASE}
130 FREETDS_CONFIGURE_OFF= --without-tds
132 G729_DISTFILES= ${ASTERISK_CORE_G729_SOUNDS}:g729 \
133 ${ASTERISK_MOH_G729_SOUNDS}:g729
135 GEOLOCATION_USE= GNOME=libxslt
137 GSM_LIB_DEPENDS= libgsm.so:audio/gsm
138 GSM_CONFIGURE_WITH= gsm
141 LDAP_CONFIGURE_WITH= ldap
144 LUA_CONFIGURE_WITH= lua
145 LUA_CFLAGS= -I${LUA_INCDIR}
146 LUA_LDFLAGS= -L${LUA_LIBDIR}
148 MP3PLAYER_RUN_DEPENDS= mpg123:audio/mpg123
150 MYSQL_LIB_DEPENDS= libzstd.so:archivers/zstd \
151 libunwind.so:devel/libunwind
153 MYSQL_CONFIGURE_WITH= mysqlclient
155 NCURSES_USES= ncurses
157 NEWT_LIB_DEPENDS= libnewt.so:devel/newt
159 ODBC_LIB_DEPENDS= libodbc.so:databases/unixODBC \
160 libltdl.so:devel/libltdl
161 ODBC_CONFIGURE_ON= --with-ltdl
162 ODBC_CONFIGURE_WITH= unixodbc
164 OPUS_EXTRACT_ONLY= ${DISTFILE_opus}
165 OPUS_LIB_DEPENDS= libopus.so:audio/opus
166 OPUS_GH_TUPLE= traud:asterisk-opus:83e1b458c77e0e287adeca494eeb79edb077b0ff:opus
169 PGSQL_CONFIGURE_WITH= postgres
171 PJSIP_LIB_DEPENDS= libsrtp2.so:net/libsrtp2 \
172 libspeex.so:audio/speex \
173 libspeexdsp.so:audio/speexdsp
174 PJSIP_GH_TUPLE= pjsip:pjproject:${PJSIP_VERSION}:pjsip
175 PJSIP_CONFIGURE_WITH= pjproject pjproject-bundled
177 PORTAUDIO_LIB_DEPENDS= libportaudio.so:audio/portaudio
178 PORTAUDIO_CONFIGURE_WITH= portaudio
180 RADIUS_LIB_DEPENDS= libradiusclient-ng.so:net/radiusclient
181 RADIUS_CONFIGURE_WITH= radius
183 SNMP_LIB_DEPENDS= libnetsnmp.so:net-mgmt/net-snmp \
184 libpkg.so:${PKG_ORIGIN}
185 SNMP_CONFIGURE_WITH= netsnmp
187 SPANDSP_LIB_DEPENDS= libspandsp.so:comms/spandsp \
188 libtiff.so:graphics/tiff
189 SPANDSP_CONFIGURE_WITH= spandsp
191 SPEEX_LIB_DEPENDS= libspeex.so:audio/speex \
192 libspeexdsp.so:audio/speexdsp
193 SPEEX_CONFIGURE_WITH= speex
195 SRTP_LIB_DEPENDS= libsrtp2.so:net/libsrtp2
196 SRTP_CONFIGURE_WITH= srtp
198 SYSINFO_LIB_DEPENDS= libsysinfo.so:devel/libsysinfo
200 URIPARSER_LIB_DEPENDS= liburiparser.so:net/uriparser
201 URIPARSER_CONFIGURE_WITH= uriparser
203 VORBIS_LIB_DEPENDS= libvorbis.so:audio/libvorbis \
204 libogg.so:audio/libogg
205 VORBIS_CONFIGURE_WITH= ogg
207 XMLDOC_CONFIGURE_ENABLE= xmldoc
209 XMPP_LIB_DEPENDS= libiksemel.so:textproc/iksemel
210 XMPP_CONFIGURE_WITH= iksemel
212 ASTERISK_CORE_G729_SOUNDS= asterisk-core-sounds-en-g729-1.5.tar.gz
213 ASTERISK_MOH_G729_SOUNDS= asterisk-moh-opsound-g729-2.03.tar.gz
214 ASTERISK_USER?= asterisk
215 ASTERISK_GROUP?= asterisk
217 PJSIP_VERSION= 2.13.1
219 .include <bsd.port.options.mk>
221 .if ${OPSYS} == FreeBSD && ( ${OSVERSION} >= 1400079 || ( ${OSVERSION} >= 1302505 && ${OSVERSION} < 1400000 ))
225 .include <bsd.port.pre.mk>
227 .if ( ${OPSYS} == FreeBSD && ${OSVERSION} >= 1400092 && ${SSL_DEFAULT} == base ) || ${SSL_DEFAULT:Mopenssl3*}
228 LIB_DEPENDS+= libgnutls.so:security/gnutls
229 CFLAGS+= -DOPENSSL_API_COMPAT=0x10100000L
234 CONFIGURE_ARGS+=ac_cv_lib_iconv_iconv_open=no \
235 ac_cv_lib_iconv_libiconv_open=no
238 .if ${PREFIX} == ${LOCALBASE}
244 SUB_LIST+= ASTERISK_USER=${ASTERISK_USER}
245 PLIST_SUB+= ASTERISK_USER=${ASTERISK_USER} \
246 ASTERISK_GROUP=${ASTERISK_GROUP} \
249 .if ${PORT_OPTIONS:MGEOLOCATION}
251 LLD_EMULATION= elf_i386
252 .elif ${ARCH} == x86_64
253 LLD_EMULATION= elf_x86_64
254 .elif ${ARCH} == aarch64
255 LLD_EMULATION= aarch64elf
260 @${FIND} ${WRKSRC} -name '*.d' -delete
262 post-extract-G729-on:
263 ${CP} ${DISTDIR}/${DIST_SUBDIR}/${ASTERISK_CORE_G729_SOUNDS} ${WRKSRC}/sounds
264 ${CP} ${DISTDIR}/${DIST_SUBDIR}/${ASTERISK_MOH_G729_SOUNDS} ${WRKSRC}/sounds
266 post-extract-OPUS-on:
267 ${CP} ${WRKSRC_opus}/include/asterisk/* ${WRKSRC}/include/asterisk
268 ${CP} ${WRKSRC_opus}/codecs/* ${WRKSRC}/codecs
269 ${CP} ${WRKSRC_opus}/res/* ${WRKSRC}/res
272 @${REINPLACE_CMD} -e 's|/var/lib|${PREFIX}/share|g' ${WRKSRC}/configs/samples/musiconhold.conf.sample
273 @${REINPLACE_CMD} -e 's/@XMLSTARLET@//' ${WRKSRC}/makeopts.in
274 @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/main/term.c
275 .if exists(${FILESDIR}/.asterisk.makeopts)
276 ${CP} ${FILESDIR}/.asterisk.makeopts ${WRKSRC}/menuselect.makeopts
279 post-patch-GEOLOCATION-on:
280 @${REINPLACE_CMD} -e 's/%%LLD_EMULATION%%/${LLD_EMULATION}/' ${WRKSRC}/Makefile.rules
282 post-patch-SYSINFO-on:
283 @${REINPLACE_CMD} -e 's/%%LIBSYSINFO%%/-lsysinfo/' ${WRKSRC}/main/Makefile
285 post-patch-SYSINFO-off:
286 @${REINPLACE_CMD} -e '/#define HAVE_SYSINFO 1/d' ${WRKSRC}/configure
287 @${REINPLACE_CMD} -e '/%%LIBSYSINFO%%/d' ${WRKSRC}/main/Makefile
290 @cd ${WRKSRC} && ${MAKE_CMD} menuselect.makeopts
291 @cd ${WRKSRC} && ./menuselect/menuselect --disable res_timing_kqueue menuselect.makeopts
292 @cd ${WRKSRC} && ./menuselect/menuselect --enable chan_mgcp menuselect.makeopts
293 @cd ${WRKSRC} && ./menuselect/menuselect --enable res_pktccops menuselect.makeopts
295 post-configure-GEOLOCATION-on:
296 @cd ${WRKSRC} && ./menuselect/menuselect --enable res_geolocation menuselect.makeopts
298 post-configure-GEOLOCATION-off:
299 @cd ${WRKSRC} && ./menuselect/menuselect --disable res_geolocation menuselect.makeopts
301 post-configure-MACRO-on:
302 @cd ${WRKSRC} && ./menuselect/menuselect --enable app_macro menuselect.makeopts
304 post-configure-MYSQL-on:
305 @cd ${WRKSRC} && ./menuselect/menuselect --enable res_config_mysql menuselect.makeopts
306 @cd ${WRKSRC} && ./menuselect/menuselect --enable app_mysql menuselect.makeopts
307 @cd ${WRKSRC} && ./menuselect/menuselect --enable cdr_mysql menuselect.makeopts
309 post-configure-OOH323-on:
310 @cd ${WRKSRC} && ./menuselect/menuselect --enable chan_ooh323 menuselect.makeopts
312 post-configure-NEWG711-on:
313 @cd ${WRKSRC} && ./menuselect/menuselect --enable G711_NEW_ALGORITHM menuselect.makeopts
315 post-configure-OPTIMIZED_CFLAGS-off:
316 @cd ${WRKSRC} && ./menuselect/menuselect --disable BUILD_NATIVE menuselect.makeopts
318 post-configure-OPUS-on:
319 @cd ${WRKSRC} && ./menuselect/menuselect --enable codec_opus_open_source menuselect.makeopts
322 @${RM} ${STAGEDIR}${ETCDIR}/*.conf ${STAGEDIR}${ETCDIR}/extensions.ael ${STAGEDIR}${ETCDIR}/extensions.lua
323 @${STRIP_CMD} ${STAGEDIR}${PREFIX}/sbin/ast[a-f]* ${STAGEDIR}${PREFIX}/lib/*.so.* ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/modules/*.so ${STAGEDIR}${DATADIR}/agi-bin/eagi-*
324 ${FIND} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/modules -type f -name '*.so' | ${SED} "s,^${STAGEDIR}${PREFIX}/,," >> ${TMPPLIST}
325 ${FIND} ${STAGEDIR}${DATADIR}/sounds -type f | ${SED} "s,^${STAGEDIR}${DATADIR},${DATADIR}," >> ${TMPPLIST}
326 ${FIND} ${STAGEDIR}${DATADIR}/moh -type f | ${SED} "s,^${STAGEDIR}${DATADIR},${DATADIR}," >> ${TMPPLIST}
329 ${ECHO} "@owner ${ASTERISK_USER}" >> ${TMPPLIST} && \
330 ${ECHO} "@group ${ASTERISK_GROUP}" >> ${TMPPLIST} && \
331 ${FIND} var/spool/${PORTNAME}/voicemail/default -type f | ${SED} "s,^,/," >> ${TMPPLIST} && \
332 ${FIND} var/spool/${PORTNAME}/voicemail/ -type d | ${SED} "s,^,@dir /," >> ${TMPPLIST} && \
333 ${ECHO} "@owner" >> ${TMPPLIST} && \
334 ${ECHO} "@group" >> ${TMPPLIST});
336 post-install-ASTVERSION-off:
337 @${RM} ${STAGEDIR}${PREFIX}/sbin/astversion
339 .include <bsd.port.post.mk>