1 # Process this file with autoconf to produce a configure script.
3 # Make sure we use autoconf 2.60 to generate the "configure" script,
4 # in case we want to commit it. Other than that, version 2.59 is
5 # perfectly fine for our purposes, so people who want to modify
6 # this file just have to remember to set the AC_PREREQ argument
7 # to something that suits their needs.
11 AC_INIT(asterisk, 1.6, www.asterisk.org)
13 # cross-compile macros
17 # check existence of the package
18 AC_CONFIG_SRCDIR([main/asterisk.c])
20 AC_COPYRIGHT("Asterisk")
21 AC_REVISION($Revision$)
23 # preserve any CFLAGS or LDFLAGS that may be set
24 # NOTE: This must be done before calling any macros that end up
25 # calling AC_PROG_CC or the like, since they will set a default
26 # set of CFLAGS ("-g -O2") if the user did not supply any, and
27 # we don't want those default flags to be carried over into the
28 # rest of the build system since we have other means of controlling
29 # debugging symbol generation and optimization.
30 CONFIG_CFLAGS="${CFLAGS}"
31 CONFIG_LDFLAGS="${LDFLAGS}"
32 AC_SUBST(CONFIG_CFLAGS)
33 AC_SUBST(CONFIG_LDFLAGS)
35 # specify output header file
36 AC_CONFIG_HEADER(include/asterisk/autoconfig.h)
38 AC_USE_SYSTEM_EXTENSIONS # note- does not work on FreeBSD
42 ac_default_prefix=/usr/local
43 CPPFLAGS=-I/usr/local/include
44 LDFLAGS=-L/usr/local/lib
47 ac_default_prefix=/usr/local
48 if test ${prefix} = '/usr/local' || test ${prefix} = 'NONE'; then
49 if test ${sysconfdir} = '${prefix}/etc'; then
52 if test ${mandir} = '${prefix}/man'; then
56 CPPFLAGS=-I/usr/local/include
57 LDFLAGS=-L/usr/local/lib
60 AC_DEFINE([AST_POLL_COMPAT], 1, [Define to 1 if internal poll should be used.])
63 ac_default_prefix=/usr
64 if test ${prefix} = '/usr' || test ${prefix} = 'NONE'; then
65 if test ${sysconfdir} = '${prefix}/etc'; then
68 if test ${mandir} = '${prefix}/man'; then
75 if test ${prefix} = ${ac_default_prefix} || test ${prefix} = 'NONE'; then
76 if test ${localstatedir} = '${prefix}/var'; then
81 BUILD_PLATFORM=${build}
82 BUILD_CPU=${build_cpu}
83 BUILD_VENDOR=${build_vendor}
86 AC_SUBST(BUILD_PLATFORM)
88 AC_SUBST(BUILD_VENDOR)
93 HOST_VENDOR=${host_vendor}
96 AC_SUBST(HOST_PLATFORM)
130 AC_SUBST(PBX_WINARCH)
133 AC_PATH_TOOL([UNAME], [uname], No)
134 if test ! x"${UNAME}" = xNo; then
135 PBX_OSREV=$(${UNAME} -r)
140 #ifndef ASTERISK_AUTOCONFIG_H
141 #define ASTERISK_AUTOCONFIG_H
143 #include "asterisk/buildopts.h"
151 # cross-compile checks
152 if test "${cross_compiling}" = "yes";
154 AC_CHECK_TOOL(CC, gcc, :)
155 AC_CHECK_TOOL(CXX, g++, :)
156 AC_CHECK_TOOL(LD, ld, :)
157 AC_CHECK_TOOL(RANLIB, ranlib, :)
160 # Checks for programs.
165 # This macro is just copied into our local acinclude.m4 from libtool.m4 so that
166 # the developers regenerating the configure script don't have to install libtool.
167 AST_PROG_LD # note, does not work on FreeBSD
174 AC_PATH_TOOL([STRIP], [strip], :)
175 AC_PATH_TOOL([AR], [ar], :)
178 if test "x$with_gnu_ld" = "xyes" ; then
183 AC_PATH_PROG([GREP], [grep], :)
184 AC_PATH_PROG([FIND], [find], :)
185 AC_PATH_PROG([COMPRESS], [compress], :)
186 AC_PATH_PROG([BASENAME], [basename], :)
187 AC_PATH_PROG([ID], [id], :)
188 AC_PATH_PROG([DIRNAME], [dirname], :)
189 AC_PATH_PROG([SHELL], [sh], :)
190 AC_PATH_PROG([LN], [ln], :)
191 AC_PATH_PROG([DOT], [dot], :)
192 AC_PATH_PROG([WGET], [wget], :)
193 AC_PATH_PROG([CURL], [curl], :)
194 AC_PATH_PROG([RUBBER], [rubber], :)
195 AC_PATH_PROG([KPATHSEA], [kpsewhich], :)
196 AC_PATH_PROG([XMLSTARLET], [xmlstarlet], :)
197 if test "${WGET}" != ":" ; then
199 else if test "${CURL}" != ":" ; then
200 DOWNLOAD="${CURL} -O --progress-bar -w \"%{url_effective}\n\""
202 AC_PATH_PROG([FETCH], [fetch], [:])
208 AC_CHECK_TOOL([SOXMIX], [soxmix], [:])
209 if test "${SOXMIX}" != ":" ; then
210 AC_DEFINE([HAVE_SOXMIX], 1, [Define to 1 if your system has soxmix application.])
213 AC_CHECK_PROGS([MD5], [md5 md5sum gmd5sum digest])
215 if test "${MD5}" = "digest" ; then
223 AC_ARG_ENABLE([dev-mode],
224 [AS_HELP_STRING([--enable-dev-mode],
225 [Turn on developer mode])],
226 [case "${enableval}" in
227 y|ye|yes) AST_DEVMODE=yes ;;
228 n|no) AST_DEVMODE=no ;;
233 *) AC_MSG_ERROR(bad value ${enableval} for --enable-dev-mode) ;;
235 AC_SUBST(NOISY_BUILD)
236 AC_SUBST(AST_DEVMODE)
238 # AST_EXT_LIB_SETUP is used to tell configure to handle variables for
240 # $1 is the prefix for the variables in makeopts and autoconfig.h
241 # $2 is the short comment, $4 is the long comment
242 # $3 is the name used in --with- or --without- flags for configure.
244 # Package option names should be in alphabetical order
245 # by the --with option name (the third field),
246 # to make things easier for the users.
248 AST_EXT_LIB_SETUP([ALSA], [Advanced Linux Sound Architecture], [asound])
250 # BKTR is used for backtrace support on platforms that do not
252 AST_EXT_LIB_SETUP([BKTR], [Stack Backtrace support], [execinfo])
253 AST_EXT_LIB_SETUP([BLUETOOTH], [Bluetooth Support], [bluetooth])
254 AST_EXT_LIB_SETUP([CAP], [POSIX 1.e capabilities], [cap])
255 AST_EXT_LIB_SETUP([CURL], [cURL], [curl])
256 AST_EXT_LIB_SETUP([CURSES], [curses], [curses])
257 AST_EXT_LIB_SETUP([CRYPTO], [OpenSSL Cryptography support], [crypto])
258 AST_EXT_LIB_SETUP([DAHDI], [DAHDI], [dahdi])
259 AST_EXT_LIB_SETUP([FFMPEG], [Ffmpeg and avcodec library], [avcodec])
260 AST_EXT_LIB_SETUP([GSM], [External GSM library], [gsm], [, use 'internal' GSM otherwise])
261 AST_EXT_LIB_SETUP([GTK], [gtk libraries], [gtk])
262 AST_EXT_LIB_SETUP([GTK2], [gtk2 libraries], [gtk2])
263 AST_EXT_LIB_SETUP([GMIME], [GMime library], [gmime])
264 AST_EXT_LIB_SETUP([HOARD], [Hoard Memory Allocator], [hoard])
265 AST_EXT_LIB_SETUP([ICAL], [ical libraries], [ical])
266 AST_EXT_LIB_SETUP([ICONV], [Iconv Library], [iconv])
267 AST_EXT_LIB_SETUP([IKSEMEL], [Iksemel Jabber Library], [iksemel])
268 AST_EXT_LIB_SETUP([IMAP_TK], [UW IMAP Toolkit], [imap])
269 AST_EXT_LIB_SETUP([INOTIFY], [inotify support], [inotify])
270 AST_EXT_LIB_SETUP([IODBC], [iODBC], [iodbc])
271 AST_EXT_LIB_SETUP([ISDNNET], [ISDN4Linux Library], [isdnnet])
272 AST_EXT_LIB_SETUP([JACK], [Jack Audio Connection Kit], [jack])
273 AST_EXT_LIB_SETUP([LDAP], [OpenLDAP], [ldap])
274 AST_EXT_LIB_SETUP([LIBXML2], [LibXML2], [libxml2])
275 AST_EXT_LIB_SETUP([LTDL], [libtool], [ltdl])
276 AST_EXT_LIB_SETUP([LUA], [Lua], [lua])
277 AST_EXT_LIB_SETUP([MISDN], [mISDN User Library], [misdn])
278 AST_EXT_LIB_SETUP([MYSQLCLIENT], [mysqlclient], [mysqlclient])
279 AST_EXT_LIB_SETUP([NBS], [Network Broadcast Sound], [nbs])
280 AST_EXT_LIB_SETUP([NCURSES], [ncurses], [ncurses])
281 AST_EXT_LIB_SETUP([NEON], [neon], [neon])
282 AST_EXT_LIB_SETUP([NETSNMP], [Net-SNMP], [netsnmp])
283 AST_EXT_LIB_SETUP([NEWT], [newt], [newt])
284 AST_EXT_LIB_SETUP([OGG], [OGG], [ogg])
285 AST_EXT_LIB_SETUP([OSPTK], [OSP Toolkit], [osptk])
286 AST_EXT_LIB_SETUP([OSS], [Open Sound System], [oss])
287 AST_EXT_LIB_SETUP([PGSQL], [PostgreSQL], [postgres])
288 AST_EXT_LIB_SETUP([POPT], [popt], [popt])
289 AST_EXT_LIB_SETUP([PORTAUDIO], [PortAudio], [portaudio])
290 AST_EXT_LIB_SETUP([PRI], [ISDN PRI], [pri])
291 AST_EXT_LIB_SETUP_DEPENDENT([PRI_VERSION], [ISDN PRI get_version], [PRI], [pri])
292 AST_EXT_LIB_SETUP_DEPENDENT([PRI_INBANDDISCONNECT], [ISDN PRI set_inbanddisconnect], [PRI], [pri])
293 AST_EXT_LIB_SETUP_DEPENDENT([PRI_PROG_W_CAUSE], [ISDN progress with cause], [PRI], [pri])
294 AST_EXT_LIB_SETUP_DEPENDENT([PRI_SERVICE_MESSAGES], [ISDN service messages], [PRI], [pri])
295 AST_EXT_LIB_SETUP_DEPENDENT([PRI_REVERSE_CHARGE], [ISDN reverse charge], [PRI], [pri])
296 AST_EXT_LIB_SETUP([RESAMPLE], [LIBRESAMPLE], [resample])
297 AST_EXT_LIB_SETUP([SPANDSP], [SPANDSP], [spandsp])
298 AST_EXT_LIB_SETUP([SS7], [ISDN SS7], [ss7])
299 AST_EXT_LIB_SETUP([OPENR2], [MFR2], [openr2])
300 AST_EXT_LIB_SETUP([PWLIB], [PWlib], [pwlib])
301 AST_EXT_LIB_SETUP([OPENH323], [OpenH323], [h323])
302 AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
303 AST_EXT_LIB_SETUP([SDL], [Sdl], [sdl])
304 AST_EXT_LIB_SETUP([SDL_IMAGE], [Sdl Image library], [SDL_image])
305 AST_EXT_LIB_SETUP([OPENAIS], [OpenAIS], [openais])
306 AST_EXT_LIB_SETUP([SPEEX], [Speex], [speex])
307 AST_EXT_LIB_SETUP([SPEEX_PREPROCESS], [Speex preprocess routines], [speex])
308 AST_EXT_LIB_SETUP([SPEEXDSP], [Speexdsp], [speexdsp])
309 AST_EXT_LIB_SETUP_DEPENDENT([SPEEX_PREPROCESS], [speex_preprocess_ctl], [], [speex])
310 AST_EXT_LIB_SETUP([SQLITE], [SQLite], [sqlite])
311 AST_EXT_LIB_SETUP([SQLITE3], [SQLite], [sqlite3])
312 AST_EXT_LIB_SETUP([SUPPSERV], [mISDN Supplemental Services], [suppserv])
313 AST_EXT_LIB_SETUP([OPENSSL], [OpenSSL Secure Sockets Layer support], [ssl])
314 AST_EXT_LIB_SETUP([FREETDS], [FreeTDS], [tds])
315 AST_EXT_LIB_SETUP([TERMCAP], [Termcap], [termcap])
316 AST_EXT_LIB_SETUP([TINFO], [Term Info], [tinfo])
317 AST_EXT_LIB_SETUP([TONEZONE], [tonezone], [tonezone])
318 AST_EXT_LIB_SETUP([UNIXODBC], [unixODBC], [unixodbc])
319 AST_EXT_LIB_SETUP([USB], [usb], [usb])
320 AST_EXT_LIB_SETUP([VORBIS], [Vorbis], [vorbis])
321 AST_EXT_LIB_SETUP([VPB], [Voicetronix API], [vpb])
322 AST_EXT_LIB_SETUP([X11], [X11 support], [x11])
323 AST_EXT_LIB_SETUP([ZLIB], [zlib], [z])
324 AST_EXT_LIB_SETUP([TIMERFD], [timerfd], [timerfd])
326 # check for basic system features and functionality before
327 # checking for package libraries
333 AC_CHECK_HEADERS([arpa/inet.h fcntl.h inttypes.h libintl.h limits.h locale.h malloc.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/file.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h termios.h unistd.h utime.h arpa/nameser.h sys/io.h])
335 AC_CHECK_HEADERS([winsock.h winsock2.h])
337 AC_CHECK_HEADER([sys/poll.h],
339 AC_DEFINE([AST_POLL_COMPAT], 1, [Define to 1 if internal poll should be used.]))
343 # Checks for typedefs, structures, and compiler characteristics.
352 AC_CHECK_MEMBERS([struct stat.st_blksize])
356 AC_CHECK_TYPES([ptrdiff_t])
358 # Checks for library functions.
360 AC_FUNC_CLOSEDIR_VOID
361 AC_FUNC_ERROR_AT_LINE
364 AC_PROG_GCC_TRADITIONAL
365 # XXX: these are commented out until we determine whether it matters if our malloc()
366 # acts exactly like glibc's or not
371 AC_FUNC_SELECT_ARGTYPES
372 AC_FUNC_SETVBUF_REVERSED
381 AC_CHECK_FUNCS([asprintf atexit closefrom dup2 eaccess endpwent euidaccess ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday glob ioperm inet_ntoa isascii localtime_r memchr memmove memset mkdir munmap putenv re_comp regcomp select setenv socket strcasecmp strcasestr strchr strcspn strdup strerror strlcat strlcpy strncasecmp strndup strnlen strrchr strsep strspn strstr strtod strtol strtold strtoq unsetenv utime vasprintf getpeereid sysctl swapctl])
383 # BSD might not have exp2, and/or log2
384 AC_CHECK_LIB([m], [sqrt])
385 AC_CHECK_FUNCS([exp2l log2l exp10l log10l sinl cosl tanl asinl acosl atanl atan2l powl sqrtl rintl expl logl remainderl fmodl roundl truncl floorl ceill exp2 log2 exp10 log10 sin cos tan asin acos atan atan2 pow rint exp log remainder fmod round trunc floor ceil])
387 AC_MSG_CHECKING(for timersub in time.h)
389 AC_LANG_PROGRAM([#include <sys/time.h>],
390 [struct timeval *a; timersub(a, a, a);]),
392 AC_DEFINE([HAVE_TIMERSUB], 1, [Define to 1 if your system defines timersub.]),
396 AC_CHECK_HEADER([sys/poll.h],
398 AC_DEFINE([HAVE_SYS_POLL_H], 1, [Define to 1 if your system has working sys/poll.h]),
401 AC_ARG_ENABLE([internal-poll],
402 [AS_HELP_STRING([--enable-internal-poll],
403 [Use Asterisk's poll implementation])],
404 [case "${enableval}" in
405 y|ye|yes) HAS_POLL="";;
406 n|no) HAS_POLL="${HAS_POLL}" ;;
407 *) AC_MSG_ERROR(bad value ${enableval} for --enable-internal-poll) ;;
413 # https support (in main/http.c) uses funopen on BSD systems,
414 # fopencookie on linux
415 AC_CHECK_FUNCS([funopen fopencookie])
417 AC_CHECK_FUNCS([inet_aton])
419 # check if we have IP_PKTINFO constant defined
420 AC_MSG_CHECKING(for IP_PKTINFO)
422 AC_LANG_PROGRAM([#include <netinet/in.h>],
423 [int pi = IP_PKTINFO;]),
425 AC_DEFINE([HAVE_PKTINFO], 1, [Define to 1 if your system defines IP_PKTINFO.]),
429 # some systems already have gethostbyname_r so we don't need to build ours in main/utils.c
430 AC_SEARCH_LIBS(gethostbyname_r, [socket nsl])
432 AC_MSG_CHECKING(for gethostbyname_r with 6 arguments)
434 AC_LANG_PROGRAM([#include <stdlib.h>
436 [struct hostent *he = gethostbyname_r((const char *)NULL, (struct hostent *)NULL, (char *)NULL, (int)0, (struct hostent **)NULL, (int *)NULL);]),
438 AC_DEFINE([HAVE_GETHOSTBYNAME_R_6], 1, [Define to 1 if your system has gethostbyname_r with 6 arguments.]),
442 AC_MSG_CHECKING(for gethostbyname_r with 5 arguments)
444 AC_LANG_PROGRAM([#include <stdlib.h>
446 [struct hostent *he = gethostbyname_r((const char *)NULL, (struct hostent *)NULL, (char *)NULL, (int)0, (int *)NULL);]),
448 AC_DEFINE([HAVE_GETHOSTBYNAME_R_5], 1, [Define to 1 if your system has gethostbyname_r with 5 arguments.]),
452 AC_CHECK_HEADER([byteswap.h], [AC_DEFINE_UNQUOTED([HAVE_BYTESWAP_H], 1, [Define to 1 if byteswap.h macros are available.])])
454 AC_MSG_CHECKING(for __swap16 variant of <sys/endian.h> byteswapping macros)
456 AC_LANG_PROGRAM([#include <sys/endian.h>], [int a = 1; int b = __swap16(a);]),
458 AC_DEFINE([HAVE_SYS_ENDIAN_SWAP16], 1, [Define to 1 if your sys/endian.h header file provides the __swap16 macro.]),
462 AC_MSG_CHECKING(for bswap16 variant of <sys/endian.h> byteswapping macros)
464 AC_LANG_PROGRAM([#include <sys/endian.h>], [int a = 1; int b = bswap16(a);]),
466 AC_DEFINE([HAVE_SYS_ENDIAN_BSWAP16], 1, [Define to 1 if your sys/endian.h header file provides the bswap16 macro.]),
470 if test "${cross_compiling}" = "no";
472 AC_CHECK_FILE(/dev/urandom, AC_DEFINE([HAVE_DEV_URANDOM], 1, [Define to 1 if your system has /dev/urandom.]))
475 AST_C_DEFINE_CHECK([PTHREAD_RWLOCK_INITIALIZER], [PTHREAD_RWLOCK_INITIALIZER], [pthread.h])
477 AC_MSG_CHECKING(for PTHREAD_RWLOCK_PREFER_WRITER_NP in pthread.h)
479 AC_LANG_PROGRAM([#include <pthread.h>], [int a = PTHREAD_RWLOCK_PREFER_WRITER_NP;]),
481 AC_DEFINE([HAVE_PTHREAD_RWLOCK_PREFER_WRITER_NP], 1, [Define to 1 if your system defines PTHREAD_RWLOCK_PREFER_WRITER_NP in pthread.h]),
485 AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE_NP in pthread.h)
487 AC_LANG_PROGRAM([#include <pthread.h>], [int a = PTHREAD_MUTEX_RECURSIVE_NP;]),
489 AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE_NP], 1, [Define to 1 if your system defines PTHREAD_MUTEX_RECURSIVE_NP in pthread.h]),
493 AC_MSG_CHECKING(for pthread_rwlock_timedwrlock() in pthread.h)
496 [#include <pthread.h>
498 [pthread_rwlock_t foo; struct timespec bar; pthread_rwlock_timedwrlock(&foo, &bar)])
501 ac_cv_pthread_rwlock_timedwrlock="yes"
504 ac_cv_pthread_rwlock_timedwrlock="no"
507 if test "${ac_cv_pthread_rwlock_timedwrlock}" = "yes"; then
508 AC_DEFINE([HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK], 1, [Define if your system has pthread_rwlock_timedwrlock()])
511 AST_C_DEFINE_CHECK([PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP], [PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP], [pthread.h])
513 #if test "${cross_compiling}" = "no";
515 #AC_MSG_CHECKING(for working epoll support)
517 #AC_LANG_PROGRAM([#include <sys/epoll.h>], [int res = epoll_create(10);
523 #AC_DEFINE([HAVE_EPOLL], 1, [Define to 1 if your system has working epoll support.]),
528 AC_MSG_CHECKING(for compiler atomic operations)
530 AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);]),
532 AC_DEFINE([HAVE_GCC_ATOMICS], 1, [Define to 1 if your GCC C compiler provides atomic operations.]),
536 AST_GCC_ATTRIBUTE(pure)
537 AST_GCC_ATTRIBUTE(malloc)
538 AST_GCC_ATTRIBUTE(const)
539 AST_GCC_ATTRIBUTE(unused)
540 AST_GCC_ATTRIBUTE(always_inline)
541 AST_GCC_ATTRIBUTE(deprecated)
542 AST_GCC_ATTRIBUTE(sentinel)
543 AST_GCC_ATTRIBUTE(warn_unused_result)
544 AST_GCC_ATTRIBUTE(weakref, [weakref("foo")], static)
545 AST_GCC_ATTRIBUTE(weak_import)
547 AC_MSG_CHECKING(for -ffunction-sections support)
548 saved_CFLAGS="${CFLAGS}"
549 CFLAGS="${CFLAGS} -ffunction-sections"
551 AC_LANG_PROGRAM([], [int x = 1;]),
553 [saved_LDFLAGS="${LDFLAGS}"]
554 [LDFLAGS="${LDFLAGS} -Wl,--gc-sections"]
555 AC_MSG_CHECKING(for --gc-sections support)
557 AC_LANG_PROGRAM([], [int x = 1;]),
559 [GC_CFLAGS="-ffunction-sections"]
560 [[GC_LDFLAGS="-Wl,--gc-sections"]],
563 [LDFLAGS="${saved_LDFLAGS}"],
566 CFLAGS="${saved_CFLAGS}"
570 AC_MSG_CHECKING(for -Wdeclaration-after-statement support)
571 if $(${CC} -Wdeclaration-after-statement -S -o /dev/null -xc /dev/null > /dev/null 2>&1); then
573 AST_DECLARATION_AFTER_STATEMENT=-Wdeclaration-after-statement
576 AST_DECLARATION_AFTER_STATEMENT=
578 AC_SUBST(AST_DECLARATION_AFTER_STATEMENT)
580 AC_MSG_CHECKING(for _FORTIFY_SOURCE support)
581 if $(${CC} -D_FORTIFY_SOURCE=2 -S -o /dev/null -xc /dev/null > /dev/null 2>&1); then
583 AST_FORTIFY_SOURCE=-D_FORTIFY_SOURCE=2
588 AC_SUBST(AST_FORTIFY_SOURCE)
590 AC_MSG_CHECKING(for -fno-strict-overflow)
591 if $(${CC} -O2 -fno-strict-overflow -S -o /dev/null -xc /dev/null > /dev/null 2>&1); then
593 AST_NO_STRICT_OVERFLOW=-fno-strict-overflow
596 AST_NO_STRICT_OVERFLOW=
598 AC_SUBST(AST_NO_STRICT_OVERFLOW)
600 AC_MSG_CHECKING(for -Wshadow)
601 if $(${CC} -Wshadow -S -o /dev/null -xc /dev/null > /dev/null 2>&1); then
603 AST_SHADOW_WARNINGS=-Wshadow
608 AC_SUBST(AST_SHADOW_WARNINGS)
610 AC_MSG_CHECKING(for sysinfo)
612 AC_LANG_PROGRAM([#include <sys/sysinfo.h>],
613 [struct sysinfo sys_info; int uptime = sys_info.uptime]),
615 AC_DEFINE([HAVE_SYSINFO], 1, [Define to 1 if your system has sysinfo support]),
619 AC_SEARCH_LIBS(res_9_ninit, resolv)
620 AC_MSG_CHECKING(for res_ninit)
623 #ifdef HAVE_SYS_SOCKET_H
624 #include <sys/socket.h>
626 #ifdef HAVE_NETINET_IN_H
627 #include <netinet/in.h>
629 #ifdef HAVE_ARPA_NAMESER_H
630 #include <arpa/nameser.h>
632 #include <resolv.h>],
633 [int foo = res_ninit(NULL);]),
635 AC_DEFINE([HAVE_RES_NINIT], 1, [Define to 1 if your system has the re-entrant resolver functions.])
636 AC_SEARCH_LIBS(res_9_ndestroy, resolv)
637 AC_MSG_CHECKING(for res_ndestroy)
640 #ifdef HAVE_SYS_SOCKET_H
641 #include <sys/socket.h>
643 #ifdef HAVE_NETINET_IN_H
644 #include <netinet/in.h>
646 #ifdef HAVE_ARPA_NAMESER_H
647 #include <arpa/nameser.h>
649 #include <resolv.h>],
650 [res_ndestroy(NULL);]),
652 AC_DEFINE([HAVE_RES_NDESTROY], 1, [Define to 1 if your system has the ndestroy resolver function.]),
655 AC_SEARCH_LIBS(res_9_close, resolv)
656 AC_MSG_CHECKING(for res_close)
659 #ifdef HAVE_SYS_SOCKET_H
660 #include <sys/socket.h>
662 #ifdef HAVE_NETINET_IN_H
663 #include <netinet/in.h>
665 #ifdef HAVE_ARPA_NAMESER_H
666 #include <arpa/nameser.h>
668 #include <resolv.h>],
671 AC_DEFINE([HAVE_RES_CLOSE], 1, [Define to 1 if your system has the close resolver function.]),
677 AST_C_DEFINE_CHECK([GLOB_NOMAGIC], [GLOB_NOMAGIC], [glob.h])
679 AST_C_DEFINE_CHECK([GLOB_BRACE], [GLOB_BRACE], [glob.h])
681 AST_C_DEFINE_CHECK([IP_MTU_DISCOVER], [IP_MTU_DISCOVER], [netinet/in.h])
683 AC_CHECK_HEADER([libkern/OSAtomic.h],
684 [AC_DEFINE_UNQUOTED([HAVE_OSX_ATOMICS], 1, [Define to 1 if OSX atomic operations are supported.])])
688 # do the package library checks now
690 AST_EXT_LIB_CHECK([ALSA], [asound], [snd_spcm_init], [alsa/asoundlib.h], [-lm -ldl])
692 AST_EXT_LIB_CHECK([CURSES], [curses], [initscr], [curses.h])
694 if test "x${host_os}" = "xlinux-gnu" ; then
695 AST_EXT_LIB_CHECK([CAP], [cap], [cap_from_text], [sys/capability.h])
698 AST_C_DEFINE_CHECK([DAHDI], [DAHDI_CODE], [dahdi/user.h])
700 AST_C_DEFINE_CHECK([DAHDI_HALF_FULL], [DAHDI_POLICY_HALF_FULL], [dahdi/user.h])
702 AST_C_COMPILE_CHECK([DAHDI_LINEREVERSE_VMWI], [struct dahdi_vmwi_info booger], [dahdi/user.h], , [enhanced dahdi vmwi support])
704 AST_C_COMPILE_CHECK([DAHDI_ECHOCANCEL_FAX_MODE], [int foo = DAHDI_ECHOCANCEL_FAX_MODE], [dahdi/user.h])
706 AST_C_COMPILE_CHECK([GETIFADDRS], [struct ifaddrs *p; getifaddrs(&p)], [ifaddrs.h], , [getifaddrs() support])
707 AST_C_COMPILE_CHECK([TIMERFD], [timerfd_create(0,0); timerfd_settime(0,0,NULL,NULL);], [sys/timerfd.h], , [timerfd support])
710 AC_SUBST(GSM_INTERNAL)
712 if test "${USE_GSM}" != "no"; then
713 if test "${GSM_DIR}" = "internal"; then
715 elif test "${GSM_DIR}" != ""; then
718 if test "${GSM_SYSTEM}" = "yes"; then
720 if test "x${GSM_DIR}" != "x"; then
721 if test -d ${GSM_DIR}/lib; then
722 gsmlibdir="-L${GSM_DIR}/lib"
724 gsmlibdir="-L${GSM_DIR}"
727 AC_CHECK_LIB([gsm], [gsm_create], AC_DEFINE_UNQUOTED([HAVE_GSM], 1,
728 [Define to indicate the GSM library]), [], ${gsmlibdir})
729 if test "${ac_cv_lib_gsm_gsm_create}" = "yes"; then
730 if test "x${GSM_DIR}" != "x" ; then
731 AC_CHECK_HEADER([${GSM_DIR}/include/gsm.h], [GSM_HEADER_FOUND=1], [GSM_HEADER_FOUND=0])
732 AC_CHECK_HEADER([${GSM_DIR}/include/gsm/gsm.h], [GSM_GSM_HEADER_FOUND=1], [GSM_GSM_HEADER_FOUND=0])
734 AC_CHECK_HEADER([gsm.h], [GSM_HEADER_FOUND=1], [GSM_HEADER_FOUND=0])
735 AC_CHECK_HEADER([gsm/gsm.h], [GSM_GSM_HEADER_FOUND=1], [GSM_GSM_HEADER_FOUND=0])
737 if test "${GSM_HEADER_FOUND}" = "0" ; then
738 if test "{GSM_GSM_HEADER_FOUND}" = "0" ; then
739 if test "x${GSM_MANDATORY}" = "xyes" ; then
741 AC_MSG_NOTICE([*** It appears that you do not have the gsm development package installed.])
742 AC_MSG_NOTICE([*** Please install it to include ${GSM_DESCRIP} support, or re-run configure])
743 AC_MSG_NOTICE([*** without explicitly specifying --with-${GSM_OPTION}])
749 if test "${GSM_HEADER_FOUND}" = "1" ; then
750 AC_DEFINE_UNQUOTED([HAVE_GSM_HEADER], 1, [Define to indicate that gsm.h has no prefix for its location])
753 if test "${GSM_GSM_HEADER_FOUND}" = "1" ; then
754 AC_DEFINE_UNQUOTED([HAVE_GSM_GSM_HEADER], 1, [Define to indicate that gsm.h is in gsm/gsm.h])
758 if test "${GSM_OK}" = "1" ; then
760 if test "x${GSM_DIR}" != "x"; then
761 GSM_LIB="${gsmlibdir} ${GSM_LIB}"
762 GSM_INCLUDE="-I${GSM_DIR}/include"
769 if test "${GSM_INTERNAL}" = "yes"; then
771 AC_DEFINE_UNQUOTED([HAVE_GSM_HEADER], 1, [Define to indicate that gsm.h has no prefix for its location])
775 AST_EXT_LIB_CHECK([ICONV], [iconv], [iconv_open], [iconv.h])
776 # Some versions of Linux package iconv in glibc
777 AST_EXT_LIB_CHECK([ICONV], [c], [iconv_close], [iconv.h])
779 AST_EXT_LIB_CHECK([ICAL], [ical], [icaltimezone_new], [libical/ical.h], [-lpthread])
781 AST_EXT_LIB_CHECK([IKSEMEL], [iksemel], [iks_start_sasl], [iksemel.h])
783 if test "${USE_IMAP_TK}" != "no"; then
784 saved_cppflags="${CPPFLAGS}"
786 switch_to_system_on_failure="no"
787 if test "${IMAP_TK_DIR}" = ""; then
788 IMAP_TK_DIR=`pwd`"/../imap-2004g"
789 switch_to_system_on_failure="yes"
791 if test "${IMAP_TK_DIR}" != "system"; then
792 AC_MSG_CHECKING(for UW IMAP Toolkit c-client library)
793 if test -f "${IMAP_TK_DIR}/c-client/LDFLAGS"; then
794 imap_ldflags=`cat ${IMAP_TK_DIR}/c-client/LDFLAGS`
796 imap_libs="${IMAP_TK_DIR}/c-client/c-client.a"
797 imap_include="-I${IMAP_TK_DIR}/c-client"
798 CPPFLAGS="${CPPFLAGS} ${imap_include}"
799 LIBS="${LIBS} ${imap_libs} "`echo ${imap_ldflags}`
802 [#include "c-client.h"
803 void mm_searched (MAILSTREAM *stream,unsigned long number)
806 void mm_exists (MAILSTREAM *stream,unsigned long number)
809 void mm_expunged (MAILSTREAM *stream,unsigned long number)
812 void mm_flags (MAILSTREAM *stream,unsigned long number)
815 void mm_notify (MAILSTREAM *stream,char *string,long errflg)
818 void mm_list (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
821 void mm_lsub (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
824 void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
827 void mm_log (char *string,long errflg)
830 void mm_dlog (char *string)
833 void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
836 void mm_critical (MAILSTREAM *stream)
839 void mm_nocritical (MAILSTREAM *stream)
842 long mm_diskerror (MAILSTREAM *stream,long errcode,long serious)
845 void mm_fatal (char *string)
849 MAILSTREAM *foo = mail_open(NULL, "", 0);
852 [ac_cv_imap_tk="yes"],
855 if test "${ac_cv_imap_tk}" = "yes"; then
858 [#include "c-client.h"
859 void mm_searched (MAILSTREAM *stream,unsigned long number)
862 void mm_exists (MAILSTREAM *stream,unsigned long number)
865 void mm_expunged (MAILSTREAM *stream,unsigned long number)
868 void mm_flags (MAILSTREAM *stream,unsigned long number)
871 void mm_notify (MAILSTREAM *stream,char *string,long errflg)
874 void mm_list (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
877 void mm_lsub (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
880 void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
883 void mm_log (char *string,long errflg)
886 void mm_dlog (char *string)
889 void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
892 void mm_critical (MAILSTREAM *stream)
895 void mm_nocritical (MAILSTREAM *stream)
898 long mm_diskerror (MAILSTREAM *stream,long errcode,long serious)
901 void mm_fatal (char *string)
905 long check = mail_expunge_full(NULL, "", 0);
908 [ac_cv_imap_tk2006="yes"],
909 [ac_cv_imap_tk2006="no"]
912 CPPFLAGS="${saved_cppflags}"
914 if test "${ac_cv_imap_tk}" = "no"; then
916 if test "${switch_to_system_on_failure}" = "yes"; then
918 else #This means they specified a directory. Search for a package installation there too
919 AC_MSG_CHECKING([for system c-client library...])
920 CPPFLAGS="${saved_cppflags}"
922 imap_include="-I${IMAP_TK_DIR}/include"
923 imap_ldflags="-L${IMAP_TK_DIR}/lib"
924 imap_libs="-lc-client"
925 CPPFLAGS="${CPPFLAGS} ${imap_include}"
926 LIBS="${LIBS} ${imap_libs} ${imap_ldflags}"
929 [#include "c-client.h"
930 void mm_searched (MAILSTREAM *stream,unsigned long number)
933 void mm_exists (MAILSTREAM *stream,unsigned long number)
936 void mm_expunged (MAILSTREAM *stream,unsigned long number)
939 void mm_flags (MAILSTREAM *stream,unsigned long number)
942 void mm_notify (MAILSTREAM *stream,char *string,long errflg)
945 void mm_list (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
948 void mm_lsub (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
951 void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
954 void mm_log (char *string,long errflg)
957 void mm_dlog (char *string)
960 void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
963 void mm_critical (MAILSTREAM *stream)
966 void mm_nocritical (MAILSTREAM *stream)
969 long mm_diskerror (MAILSTREAM *stream,long errcode,long serious)
972 void mm_fatal (char *string)
976 MAILSTREAM *foo = mail_open(NULL, "", 0);
979 [ac_cv_imap_tk="yes"],
982 if test "${ac_cv_imap_tk}" = "yes"; then
985 [#include "c-client.h"
986 void mm_searched (MAILSTREAM *stream,unsigned long number)
989 void mm_exists (MAILSTREAM *stream,unsigned long number)
992 void mm_expunged (MAILSTREAM *stream,unsigned long number)
995 void mm_flags (MAILSTREAM *stream,unsigned long number)
998 void mm_notify (MAILSTREAM *stream,char *string,long errflg)
1001 void mm_list (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1004 void mm_lsub (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1007 void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
1010 void mm_log (char *string,long errflg)
1013 void mm_dlog (char *string)
1016 void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
1019 void mm_critical (MAILSTREAM *stream)
1022 void mm_nocritical (MAILSTREAM *stream)
1025 long mm_diskerror (MAILSTREAM *stream,long errcode,long serious)
1028 void mm_fatal (char *string)
1032 long check = mail_expunge_full(NULL, "", 0);
1035 [ac_cv_imap_tk2006="yes"],
1036 [ac_cv_imap_tk2006="no"]
1042 if test "${IMAP_TK_DIR}" = "system"; then
1043 #We will enter here if user specified "system" or if any of above checks failed
1044 AC_MSG_CHECKING([for system c-client library...])
1045 CPPFLAGS="${saved_cppflags}"
1046 LIBS="${saved_libs}"
1048 imap_libs="-lc-client"
1049 imap_include="-DUSE_SYSTEM_IMAP" #Try the imap directory first
1050 CPPFLAGS="${CPPFLAGS} ${imap_include}"
1051 LIBS="${LIBS} ${imap_libs} "`echo ${imap_ldflags}`
1055 #include <imap/c-client.h>
1056 void mm_searched (MAILSTREAM *stream,unsigned long number)
1059 void mm_exists (MAILSTREAM *stream,unsigned long number)
1062 void mm_expunged (MAILSTREAM *stream,unsigned long number)
1065 void mm_flags (MAILSTREAM *stream,unsigned long number)
1068 void mm_notify (MAILSTREAM *stream,char *string,long errflg)
1071 void mm_list (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1074 void mm_lsub (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1077 void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
1080 void mm_log (char *string,long errflg)
1083 void mm_dlog (char *string)
1086 void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
1089 void mm_critical (MAILSTREAM *stream)
1092 void mm_nocritical (MAILSTREAM *stream)
1095 long mm_diskerror (MAILSTREAM *stream,long errcode,long serious)
1098 void mm_fatal (char *string)
1102 MAILSTREAM *foo = mail_open(NULL, "", 0);
1105 [ac_cv_imap_tk="yes"],
1106 [ac_cv_imap_tk="no"]
1108 if test "${ac_cv_imap_tk}" = "yes"; then
1112 #include <imap/c-client.h>
1113 void mm_searched (MAILSTREAM *stream,unsigned long number)
1116 void mm_exists (MAILSTREAM *stream,unsigned long number)
1119 void mm_expunged (MAILSTREAM *stream,unsigned long number)
1122 void mm_flags (MAILSTREAM *stream,unsigned long number)
1125 void mm_notify (MAILSTREAM *stream,char *string,long errflg)
1128 void mm_list (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1131 void mm_lsub (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1134 void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
1137 void mm_log (char *string,long errflg)
1140 void mm_dlog (char *string)
1143 void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
1146 void mm_critical (MAILSTREAM *stream)
1149 void mm_nocritical (MAILSTREAM *stream)
1152 long mm_diskerror (MAILSTREAM *stream,long errcode,long serious)
1155 void mm_fatal (char *string)
1159 long check = mail_expunge_full(NULL, "", 0);
1162 [ac_cv_imap_tk2006="yes"],
1163 [ac_cv_imap_tk2006="no"]
1165 else #looking in imap directory didn't work, try c-client
1167 imap_libs="-lc-client"
1168 imap_include="-DUSE_SYSTEM_CCLIENT"
1169 CPPFLAGS="${saved_cppflags}"
1170 LIBS="${saved_libs}"
1171 CPPFLAGS="${CPPFLAGS} ${imap_include}"
1172 LIBS="${LIBS} ${imap_libs} "`echo ${imap_ldflags}`
1176 #include <c-client/c-client.h>
1177 void mm_searched (MAILSTREAM *stream,unsigned long number)
1180 void mm_exists (MAILSTREAM *stream,unsigned long number)
1183 void mm_expunged (MAILSTREAM *stream,unsigned long number)
1186 void mm_flags (MAILSTREAM *stream,unsigned long number)
1189 void mm_notify (MAILSTREAM *stream,char *string,long errflg)
1192 void mm_list (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1195 void mm_lsub (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1198 void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
1201 void mm_log (char *string,long errflg)
1204 void mm_dlog (char *string)
1207 void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
1210 void mm_critical (MAILSTREAM *stream)
1213 void mm_nocritical (MAILSTREAM *stream)
1216 long mm_diskerror (MAILSTREAM *stream,long errcode,long serious)
1219 void mm_fatal (char *string)
1223 MAILSTREAM *foo = mail_open(NULL, "", 0);
1226 [ac_cv_imap_tk="yes"],
1227 [ac_cv_imap_tk="no"]
1229 if test "${ac_cv_imap_tk}" = "yes"; then
1233 #include <c-client/c-client.h>
1234 void mm_searched (MAILSTREAM *stream,unsigned long number)
1237 void mm_exists (MAILSTREAM *stream,unsigned long number)
1240 void mm_expunged (MAILSTREAM *stream,unsigned long number)
1243 void mm_flags (MAILSTREAM *stream,unsigned long number)
1246 void mm_notify (MAILSTREAM *stream,char *string,long errflg)
1249 void mm_list (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1252 void mm_lsub (MAILSTREAM *stream,int delimiter,char *mailbox,long attributes)
1255 void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
1258 void mm_log (char *string,long errflg)
1261 void mm_dlog (char *string)
1264 void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
1267 void mm_critical (MAILSTREAM *stream)
1270 void mm_nocritical (MAILSTREAM *stream)
1273 long mm_diskerror (MAILSTREAM *stream,long errcode,long serious)
1276 void mm_fatal (char *string)
1280 long check = mail_expunge_full(NULL, "", 0);
1283 [ac_cv_imap_tk2006="yes"],
1284 [ac_cv_imap_tk2006="no"]
1289 if test "${ac_cv_imap_tk}" = "yes"; then
1291 IMAP_TK_LIB="${imap_libs} "`echo ${imap_ldflags}`
1292 IMAP_TK_INCLUDE="${imap_include}"
1294 AC_DEFINE([HAVE_IMAP_TK], 1, [Define if your system has the UW IMAP Toolkit c-client library.])
1295 if test "${ac_cv_imap_tk2006}" = "yes"; then
1296 AC_DEFINE([HAVE_IMAP_TK2006], 1, [Define if your system has the UW IMAP Toolkit c-client library version 2006 or greater.])
1301 CPPFLAGS="${saved_cppflags}"
1302 LIBS="${saved_libs}"
1305 AST_EXT_LIB_CHECK([IODBC], [iodbc], [SQLConnect], [sql.h], [-lpthread])
1307 AST_EXT_LIB_CHECK([INOTIFY], [c], [inotify_init], [sys/inotify.h])
1309 AST_EXT_LIB_CHECK([JACK], [jack], [jack_activate], [jack/jack.h])
1311 # Needed by unixodbc
1312 AST_EXT_LIB_CHECK([LTDL], [ltdl], [lt_dlinit], [ltdl.h], [])
1314 AST_EXT_LIB_CHECK([LDAP], [ldap], [ldap_initialize], [ldap.h])
1316 AC_ARG_ENABLE([xmldoc],
1317 [AS_HELP_STRING([--disable-xmldoc],
1318 [Explicity disable XML documentation])],
1319 [case "${enableval}" in
1320 y|ye|yes) disable_xmldoc=no ;;
1321 n|no) disable_xmldoc=yes ;;
1322 *) AC_MSG_ERROR(bad value ${enableval} for --disable-xmldoc) ;;
1323 esac], [disable_xmldoc=no])
1325 if test "${disable_xmldoc}" != "yes"; then
1326 AST_EXT_TOOL_CHECK([LIBXML2], [xml2-config], , ,
1327 [#include <libxml/tree.h>
1328 #include <libxml/parser.h>],
1329 [LIBXML_TEST_VERSION])
1330 if test "${PBX_LIBXML2}" != 1; then
1331 AC_MSG_NOTICE(*** XML documentation will not be available because the 'libxml2' development package is missing.)
1332 AC_MSG_NOTICE(*** Please run the 'configure' script with the '--disable-xmldoc' parameter option)
1333 AC_MSG_NOTICE(*** or install the 'libxml2' development package.)
1338 AST_EXT_LIB_CHECK([MISDN], [mISDN], [mISDN_open], [mISDNuser/mISDNlib.h])
1340 if test "${PBX_MISDN}" = 1; then
1341 AST_EXT_LIB_CHECK([ISDNNET], [isdnnet], [init_manager], [mISDNuser/isdn_net.h], [-lmISDN -lpthread])
1342 AST_EXT_LIB_CHECK([SUPPSERV], [suppserv], [encodeFac], [mISDNuser/suppserv.h])
1343 AST_C_DEFINE_CHECK([MISDN_FAC_RESULT], [Fac_RESULT], [mISDNuser/suppserv.h])
1344 AST_C_DEFINE_CHECK([MISDN_FAC_ERROR], [Fac_ERROR], [mISDNuser/suppserv.h])
1345 AC_CHECK_HEADER([linux/mISDNdsp.h], [AC_DEFINE_UNQUOTED([MISDN_1_2], 1, [Build chan_misdn for mISDN 1.2 or later.])])
1348 AST_EXT_TOOL_CHECK([MYSQLCLIENT], [mysql_config])
1350 AST_EXT_LIB_CHECK([NBS], [nbs], [nbs_connect], [nbs.h])
1352 AST_EXT_LIB_CHECK([NCURSES], [ncurses], [initscr], [curses.h])
1354 AST_EXT_TOOL_CHECK([NEON], [neon-config])
1356 AST_EXT_TOOL_CHECK([NETSNMP], [net-snmp-config], , [--agent-libs],
1357 [#include <net-snmp/net-snmp-config.h>
1358 #include <net-snmp/net-snmp-includes.h>
1359 #include <net-snmp/agent/net-snmp-agent-includes.h>],
1360 [int callback = snmp_register_callback(0, 0, NULL, NULL)])
1362 AST_EXT_LIB_CHECK([NEWT], [newt], [newtBell], [newt.h])
1364 AST_EXT_LIB_CHECK([UNIXODBC], [odbc], [SQLConnect], [sql.h], [])
1366 AST_EXT_LIB_CHECK([OGG], [ogg], [ogg_sync_init], [])
1368 # Non-glibc platforms require libexecinfo for backtrace support
1369 AST_EXT_LIB_CHECK([BKTR], [execinfo], [backtrace], [execinfo.h])
1370 # Linux, however, has backtrace directly in glibc
1371 AST_EXT_LIB_CHECK([BKTR], [c], [backtrace], [execinfo.h])
1373 AST_EXT_LIB_CHECK([BLUETOOTH], [bluetooth], [ba2str], [bluetooth/bluetooth.h])
1375 # possible places for oss definitions
1376 AST_EXT_LIB_CHECK([OSS], [ossaudio], [], [linux/soundcard.h])
1377 AST_EXT_LIB_CHECK([OSS], [ossaudio], [], [sys/soundcard.h])
1378 AST_EXT_LIB_CHECK([OSS], [ossaudio], [oss_ioctl_mixer], [soundcard.h])
1381 if test "${USE_PGSQL}" != "no"; then
1382 if test "x${PGSQL_DIR}" != "x"; then
1383 AC_PATH_TOOL([PG_CONFIG], [pg_config], No, [${PGSQL_DIR}/bin])
1384 if test x"${PG_CONFIG}" = xNo; then
1385 AC_MSG_NOTICE([***])
1386 AC_MSG_NOTICE([*** pg_config was not found in the path you specified:])
1387 AC_MSG_NOTICE([*** ${PGSQL_DIR}/bin])
1388 AC_MSG_NOTICE([*** Either correct the installation, or run configure])
1389 AC_MSG_NOTICE([*** including --without-postgres])
1393 AC_PATH_TOOL([PG_CONFIG], [pg_config], No)
1396 if test "${PG_CONFIG}" != No; then
1397 PGSQL_libdir=`${PG_CONFIG} --libdir`
1398 PGSQL_includedir=`${PG_CONFIG} --includedir`
1399 if test "x$?" != "x0" ; then
1400 if test -n "${PGSQL_MANDATORY}" ; then
1401 AC_MSG_NOTICE([***])
1402 AC_MSG_NOTICE([*** The PostgreSQL installation on this system appears to be broken.])
1403 AC_MSG_NOTICE([*** Either correct the installation, or run configure])
1404 AC_MSG_NOTICE([*** including --without-postgres])
1408 AC_CHECK_LIB([pq], [PQescapeStringConn], AC_DEFINE_UNQUOTED([HAVE_PGSQL], 1,
1409 [Define to indicate the PostgreSQL library]), [], -L${PGSQL_libdir} -lz)
1411 if test "${ac_cv_lib_pq_PQescapeStringConn}" = "yes"; then
1412 PGSQL_LIB="-L${PGSQL_libdir} -lpq -lz"
1413 PGSQL_INCLUDE="-I${PGSQL_includedir}"
1415 elif test -n "${PGSQL_MANDATORY}";
1417 AC_MSG_NOTICE([***])
1418 AC_MSG_NOTICE([*** The PostgreSQL installation on this system appears to be broken.])
1419 AC_MSG_NOTICE([*** Either correct the installation, or run configure])
1420 AC_MSG_NOTICE([*** including --without-postgres])
1426 AST_EXT_LIB_CHECK([POPT], [popt], [poptStrerror], [popt.h])
1428 AST_EXT_LIB_CHECK([PORTAUDIO], [portaudio], [Pa_GetDeviceCount], [portaudio.h])
1430 AST_EXT_LIB_CHECK([PRI], [pri], [pri_connected_line_update], [libpri.h])
1432 # ------------------------------------v
1433 # TODO: The code can be changed to always include these features now.
1434 # These features will always be present if pri_connected_line_update is available.
1435 AST_EXT_LIB_CHECK([PRI_PROG_W_CAUSE], [pri], [pri_progress_with_cause], [libpri.h])
1436 AST_EXT_LIB_CHECK([PRI_INBANDDISCONNECT], [pri], [pri_set_inbanddisconnect], [libpri.h])
1437 AST_EXT_LIB_CHECK([PRI_SERVICE_MESSAGES], [pri], [pri_maintenance_service], [libpri.h])
1438 AST_EXT_LIB_CHECK([PRI_REVERSE_CHARGE], [pri], [pri_sr_set_reversecharge], [libpri.h])
1439 # ------------------------------------^
1441 AST_EXT_LIB_CHECK([RESAMPLE], [resample], [resample_open], [libresample.h], [-lm])
1443 AST_C_COMPILE_CHECK([SPANDSP], [
1444 #if SPANDSP_RELEASE_DATE < 20080516
1445 #error "spandsp 0.0.5 or greater is required"
1447 ], [spandsp/version.h], , [minimum version of SpanDSP])
1449 if test "x${PBX_SPANDSP}" = "x1" ; then
1450 # We found the correct version in the header, now let's make sure it links
1451 # properly, and that libtiff is available
1453 AST_EXT_LIB_CHECK([SPANDSP], [spandsp], [span_set_message_handler], [spandsp.h], [-ltiff])
1456 if test "x${PBX_SPANDSP}" = "x1" ; then
1457 # We also need t38_terminal_init()
1459 AST_EXT_LIB_CHECK([SPANDSP], [spandsp], [t38_terminal_init], [spandsp.h], [-ltiff])
1462 AST_EXT_LIB_CHECK([SS7], [ss7], [ss7_pollflags], [libss7.h])
1464 AST_EXT_LIB_CHECK([OPENR2], [openr2], [openr2_chan_new], [openr2.h])
1466 if test "${USE_PWLIB}" != "no"; then
1467 if test -n "${PWLIB_DIR}"; then
1468 PWLIBDIR="${PWLIB_DIR}"
1471 AST_CHECK_PWLIB_VERSION([PWLib], [PWLIB], [ptbuildopts.h], [1], [9], [2], [P[[WT]]LIB_VERSION])
1473 if test "${HAS_PWLIB:-unset}" != "unset"; then
1474 AST_CHECK_PWLIB_PLATFORM()
1476 PLATFORM_PWLIB="pt_${PWLIB_PLATFORM}_r"
1478 AST_CHECK_PWLIB_BUILD([PWLib], [PWLIB],
1479 [Define if your system has the PWLib libraries.],
1480 [#include "ptlib.h"],
1481 [int q = (int) PTime::IsDaylightSavings();])
1485 if test "${PBX_PWLIB}" = "1" -a "${USE_OPENH323}" != "no" ; then
1486 if test -n "${OPENH323_DIR}"; then
1487 OPENH323DIR="${OPENH323_DIR}"
1489 AST_CHECK_OPENH323()
1490 AST_CHECK_PWLIB_VERSION([OpenH323], [OPENH323], [openh323buildopts.h], [1], [17], [3])
1491 AST_CHECK_OPENH323_BUILD()
1492 PLATFORM_OPENH323="h323_${PWLIB_PLATFORM}_${OPENH323_SUFFIX}"
1493 AST_CHECK_PWLIB_BUILD([OpenH323], [OPENH323],
1494 [Define if your system has the OpenH323 libraries.],
1497 #include "h323ep.h"],
1498 [H323EndPoint ep = H323EndPoint();],
1499 [${PWLIB_INCLUDE}], [${PWLIB_LIB}])
1502 AST_EXT_LIB_CHECK([LUA], [lua5.1], [luaL_newstate], [lua5.1/lua.h], [-lm])
1503 if test "x${PBX_LUA}" = "x1" ; then
1504 AC_DEFINE_UNQUOTED([LUA51_PREFIX], [1], [Define to 1 if lua is found with a lua5.1 prefix])
1507 # Some distributions (like SuSE) remove the 5.1 suffix.
1508 AST_EXT_LIB_CHECK([LUA], [lua], [luaL_register], [lua.h], [-lm])
1510 AST_EXT_LIB_CHECK([RADIUS], [radiusclient-ng], [rc_read_config], [radiusclient-ng.h])
1512 # This is a bit complex... in reality, Asterisk's AIS support is dependent on finding
1513 # *any* implementation of AIS, not just OpenAIS. However, the configure script needs
1514 # to know the specifics of each possible implementation, and then represent the one
1515 # that was found as 'AIS'.
1519 # OpenAIS installs its libraries into /usr/lib/openais by default, so check there
1521 AST_EXT_LIB_CHECK([OPENAIS], [SaClm], [saClmInitialize], [openais/saClm.h], [-L/usr/lib/openais -L/usr/lib64/openais])
1523 if test "${PBX_OPENAIS}" = 1; then
1525 if test -n "${OPENAIS_DIR}"; then
1526 AIS_INCLUDE="${OPENAIS_INCLUDE}/openais"
1527 AIS_LIB="-lSaEvt ${OPENAIS_LIB}"
1529 AIS_INCLUDE="-I/usr/include/openais"
1530 AIS_LIB="-lSaClm -lSaEvt -L/usr/lib/openais -L/usr/lib64/openais"
1535 AC_SUBST(AIS_INCLUDE)
1538 AST_EXT_LIB_CHECK([SPEEX], [speex], [speex_encode], [speex/speex.h], [-lm])
1540 # See if the main speex library contains the preprocess functions
1541 AST_EXT_LIB_CHECK([SPEEX_PREPROCESS], [speex], [speex_preprocess_ctl], [speex/speex.h], [-lm])
1542 if test "${PBX_SPEEX_PREPROCESS}" = 1; then
1543 PBX_SPEEX_PREPROCESS=1
1546 AST_EXT_LIB_CHECK([SPEEXDSP], [speexdsp], [speex_preprocess_ctl], [speex/speex.h], [-lm])
1547 if test "${PBX_SPEEXDSP}" = 1; then
1548 PBX_SPEEX_PREPROCESS=1
1551 AC_SUBST(PBX_SPEEX_PREPROCESS)
1553 AST_EXT_LIB_CHECK([SQLITE], [sqlite], [sqlite_exec], [sqlite.h])
1555 AST_EXT_LIB_CHECK([SQLITE3], [sqlite3], [sqlite3_open], [sqlite3.h])
1557 AST_EXT_LIB_CHECK([CRYPTO], [crypto], [AES_encrypt], [openssl/aes.h])
1559 if test "$PBX_CRYPTO" = "1";
1561 AST_EXT_LIB_CHECK([OPENSSL], [ssl], [ssl2_connect], [openssl/ssl.h], [-lcrypto])
1564 if test "$PBX_OPENSSL" = "1";
1566 AST_CHECK_OSPTK([3], [5], [0])
1569 AST_EXT_TOOL_CHECK([GMIME], [gmime-config], [], [], [#include <gmime/gmime.h>], [gboolean q = g_mime_check_version(0,0,0);])
1571 AST_EXT_LIB_CHECK([HOARD], [hoard], [malloc], [])
1573 AST_EXT_LIB_CHECK([FREETDS], [sybdb], [dbinit], [sybdb.h])
1575 AST_EXT_LIB_CHECK([TERMCAP], [termcap], [tgetent], [])
1577 AST_EXT_LIB_CHECK([TINFO], [tinfo], [tgetent], [])
1579 AC_CHECK_LIB([tonezone], [tone_zone_find_by_num], tonezone_does_not_need_lm=yes, tonezone_does_not_need_lm=no)
1581 if test "${tonezone_does_not_need_lm}" = "no" ; then
1582 tonezone_extra="-lm"
1585 AST_EXT_LIB_CHECK([TONEZONE], [tonezone], [tone_zone_find], [dahdi/tonezone.h], [${tonezone_extra} ${DAHDI_INCLUDE}])
1587 AST_EXT_LIB_CHECK([USB], [usb], [usb_init], [usb.h], [])
1589 if test "${OSARCH}" = "OpenBSD";
1591 AST_EXT_LIB_CHECK([VORBIS], [vorbis], [vorbis_info_init], [vorbis/codec.h], [-lm -lvorbisenc -logg])
1593 AST_EXT_LIB_CHECK([VORBIS], [vorbis], [vorbis_info_init], [vorbis/codec.h], [-lm -lvorbisenc])
1598 if test "${USE_VPB}" != "no"; then
1599 AC_MSG_CHECKING(for vpb_open in -lvpb)
1600 saved_libs="${LIBS}"
1601 saved_cppflags="${CPPFLAGS}"
1602 if test "x${VPB_DIR}" != "x"; then
1603 if test -d ${VPB_DIR}/lib; then
1604 vpblibdir=${VPB_DIR}/lib
1606 vpblibdir=${VPB_DIR}
1608 LIBS="${LIBS} -L${vpblibdir}"
1609 CPPFLAGS="${CPPFLAGS} -I${VPB_DIR}/include"
1611 LIBS="${LIBS} -lvpb -lpthread"
1615 [#include <vpbapi.h>],
1616 [int q = vpb_open(0,0);])
1618 [ AC_MSG_RESULT(yes)
1619 ac_cv_lib_vpb_vpb_open="yes"
1622 ac_cv_lib_vpb_vpb_open="no"
1625 LIBS="${saved_libs}"
1626 CPPFLAGS="${saved_cppflags}"
1627 if test "${ac_cv_lib_vpb_vpb_open}" = "yes"; then
1629 if test "${VPB_DIR}" != ""; then
1630 VPB_LIB="-L${vpblibdir} ${VPB_LIB}"
1631 VPB_INCLUDE="-I${VPB_DIR}/include"
1634 AC_DEFINE([HAVE_VPB], 1, [Define if your system has the VoiceTronix API libraries.])
1640 AST_EXT_LIB_CHECK([ZLIB], [z], [compress], [zlib.h])
1643 if test "x$TERMCAP_LIB" != "x" ; then
1644 EDITLINE_LIB="$TERMCAP_LIB"
1645 elif test "x$TINFO_LIB" != "x" ; then
1646 EDITLINE_LIB="$TINFO_LIB"
1647 elif test "x$CURSES_LIB" != "x" ; then
1648 EDITLINE_LIB="$CURSES_LIB"
1649 elif test "x$NCURSES_LIB" != "x" ; then
1650 EDITLINE_LIB="$NCURSES_LIB"
1652 AC_MSG_ERROR(*** termcap support not found)
1654 AC_SUBST(EDITLINE_LIB)
1656 if test "x${PBX_UNIXODBC}" = "x1" -o "x${PBX_IODBC}" = "x1"; then
1657 # Does ODBC support wide characters?
1658 AC_MSG_CHECKING(whether ODBC has support for Unicode types)
1662 #include <sqlext.h>],
1663 [int foo = SQL_WCHAR]),
1665 AC_DEFINE([HAVE_ODBC_WCHAR], [1], [Define to 1 if your ODBC library has wide (Unicode) types.]),
1670 AC_CHECK_HEADER([h323.h], [PBX_H323=1], [PBX_H323=0])
1673 AC_CHECK_HEADER([linux/compiler.h],
1674 [AC_DEFINE_UNQUOTED([HAVE_LINUX_COMPILER_H], 1, [Define to 1 if your system has linux/compiler.h.])])
1676 AC_CHECK_HEADER([linux/ixjuser.h], [PBX_IXJUSER=1], [PBX_IXJUSER=0], [
1677 #include <linux/version.h>
1678 #ifdef HAVE_LINUX_COMPILER_H
1679 #include <linux/compiler.h>
1682 AC_SUBST(PBX_IXJUSER)
1684 AST_EXT_TOOL_CHECK([SDL], [sdl-config])
1685 AST_EXT_LIB_CHECK([SDL_IMAGE], [SDL_image], [IMG_Load], [SDL_image.h], [${SDL_LIB}], [${SDL_INCLUDE}])
1686 AST_EXT_LIB_CHECK([FFMPEG], [avcodec], [sws_getContext], [ffmpeg/avcodec.h], [-lpthread -lz -lm])
1688 # possible places for video4linux version 1
1689 AC_CHECK_HEADER([linux/videodev.h],
1690 [AC_DEFINE_UNQUOTED([HAVE_VIDEODEV_H], 1, [Define to 1 if your system has linux/videodev.h.])])
1692 # possible places for X11
1693 AST_EXT_LIB_CHECK([X11], [X11], [XOpenDisplay], [X11/Xlib.h],,, [standard_path])
1694 AST_EXT_LIB_CHECK([X11], [X11], [XOpenDisplay], [X11/Xlib.h],, [-I/usr/X11R6/include], [X11R6])
1696 if test "${cross_compiling}" = "no";
1698 AC_CHECK_FILE(/sbin/launchd, AC_DEFINE([HAVE_SBIN_LAUNCHD], 1, [Define to 1 if your system has /sbin/launchd.]))
1702 AST_EXT_TOOL_CHECK([GTK], [gtk-config], [--cflags gthread], [--libs gthread])
1705 AC_CHECK_TOOL(PKGCONFIG, pkg-config, No)
1706 if test ! "x${PKGCONFIG}" = xNo; then
1707 GTK2_INCLUDE=$(${PKGCONFIG} gtk+-2.0 --cflags 2>/dev/null)
1708 GTK2_LIB=$(${PKGCONFIG} gtk+-2.0 --libs)
1710 AC_DEFINE([HAVE_GTK2], 1, [Define if your system has the GTK2 libraries.])
1713 AC_SUBST(GTK2_INCLUDE)
1716 AST_LIBCURL_CHECK_CONFIG([], [7.10.1])
1718 # build a GENERIC_ODBC result based on the presence of either UnixODBC (preferred)
1723 if test "${PBX_UNIXODBC}" = 1; then
1725 GENERIC_ODBC_LIB="${UNIXODBC_LIB}"
1726 GENERIC_ODBC_INCLUDE="${UNIXODBC_INCLUDE}"
1727 elif test "${PBX_IODBC}" = 1; then
1729 GENERIC_ODBC_LIB="${IODBC_LIB}"
1730 GENERIC_ODBC_INCLUDE="${IODBC_INCLUDE}"
1733 AC_SUBST([GENERIC_ODBC_LIB])
1734 AC_SUBST([GENERIC_ODBC_INCLUDE])
1735 AC_SUBST([PBX_GENERIC_ODBC])
1739 if test "${ac_cv_header_syslog_h}" = "yes"; then
1741 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_AUTH], [LOG_AUTH], [syslog.h])
1742 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_AUTHPRIV], [LOG_AUTHPRIV], [syslog.h])
1743 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_CRON], [LOG_CRON], [syslog.h])
1744 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_DAEMON], [LOG_DAEMON], [syslog.h])
1745 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_FTP], [LOG_FTP], [syslog.h])
1746 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_KERN], [LOG_KERN], [syslog.h])
1747 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_LPR], [LOG_LPR], [syslog.h])
1748 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_MAIL], [LOG_MAIL], [syslog.h])
1749 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_NEWS], [LOG_NEWS], [syslog.h])
1750 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_SYSLOG], [LOG_SYSLOG], [syslog.h])
1751 AST_C_DEFINE_CHECK([SYSLOG_FACILITY_LOG_UUCP], [LOG_UUCP], [syslog.h])
1755 AC_SUBST([PBX_SYSLOG])
1757 AC_CONFIG_FILES([build_tools/menuselect-deps makeopts channels/h323/Makefile])
1760 if test -f build_tools/menuselect-deps; then
1761 # extract old values of all PBX_ variables from menuselect-deps
1762 # and preserve them so that menuselect can determine whether
1763 # any previously-met dependencies are no longer met and warn
1764 # the user appropriately
1765 while IFS="=:" read var val old_val; do
1766 eval "PBX_${var}=\${PBX_${var}}:${val}"
1767 done < build_tools/menuselect-deps
1772 if test "x${silent}" != "xyes" ; then
1774 echo " .\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$=.. "
1775 echo " .\$7\$7.. .7\$\$7:. "
1776 echo " .\$\$:. ,\$7.7 "
1777 echo " .\$7. 7\$\$\$\$ .\$\$77 "
1778 echo " ..\$\$. \$\$\$\$\$ .\$\$\$7 "
1779 echo " ..7\$ .?. \$\$\$\$\$ .?. 7\$\$\$."
1780 echo " \$.\$. .\$\$\$7. \$\$\$\$7 .7\$\$\$. .\$\$\$."
1781 echo " .777. .\$\$\$\$\$\$77\$\$\$77\$\$\$\$\$7. \$\$\$,"
1782 echo " \$\$\$~ .7\$\$\$\$\$\$\$\$\$\$\$\$\$7. .\$\$\$."
1783 echo ".\$\$7 .7\$\$\$\$\$\$\$7: ?\$\$\$."
1784 echo "\$\$\$ ?7\$\$\$\$\$\$\$\$\$\$I .\$\$\$7 "
1785 echo "\$\$\$ .7\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ :\$\$\$. "
1786 echo "\$\$\$ \$\$\$\$\$\$7\$\$\$\$\$\$\$\$\$\$\$\$ .\$\$\$. "
1787 echo "\$\$\$ \$\$\$ 7\$\$\$7 .\$\$\$ .\$\$\$. "
1788 echo "\$\$\$\$ \$\$\$\$7 .\$\$\$. "
1789 echo "7\$\$\$7 7\$\$\$\$ 7\$\$\$ "
1790 echo " \$\$\$\$\$ \$\$\$ "
1791 echo " \$\$\$\$7. \$\$ (TM) "
1792 echo " \$\$\$\$\$\$\$. .7\$\$\$\$\$\$ \$\$ "
1793 echo " \$\$\$\$\$\$\$\$\$\$\$\$7\$\$\$\$\$\$\$\$\$.\$\$\$\$\$\$ "
1794 echo " \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$. "
1798 AC_MSG_NOTICE(Package configured for: )
1799 AC_MSG_NOTICE( OS type : $host_os)
1800 AC_MSG_NOTICE( Host CPU : $host_cpu)
1801 AC_MSG_NOTICE( build-cpu:vendor:os: $build_cpu : $build_vendor : $build_os :)
1802 AC_MSG_NOTICE( host-cpu:vendor:os: $host_cpu : $host_vendor : $host_os :)
1803 if test "${cross_compiling}" = "yes"; then
1804 AC_MSG_NOTICE( Cross Compilation = YES)