move the declaration of struct ast_channel ast_frame and ast_module
[asterisk/asterisk.git] / configure.ac
index d223ca1..63702a3 100644 (file)
@@ -6,7 +6,7 @@
 # this file just have to remember to set the AC_PREREQ argument
 # to something that suits their needs.
 
-AC_PREREQ(2.59)
+AC_PREREQ(2.60)
 
 m4_define([PBX_VERSION],
           m4_bpatsubst(m4_esyscmd([build_tools/make_version .]),
@@ -86,7 +86,7 @@ case "${host_os}" in
      OSARCH=SunOS
      ;;
      *)
-     OSARCH=${HOST_OS}
+     OSARCH=${host_os}
      ;;
 esac
 
@@ -187,13 +187,13 @@ AST_EXT_LIB_SETUP([CAP], [POSIX 1.e capabilities], [cap])
 AST_EXT_LIB_SETUP([CURL], [cURL], [curl])
 AST_EXT_LIB_SETUP([CURSES], [curses], [curses])
 AST_EXT_LIB_SETUP([CRYPTO], [OpenSSL Cryptography support], [crypto])
-AST_EXT_LIB_SETUP([GNUTLS], [GNU TLS support (used for iksemel only)], [gnutls])
 AST_EXT_LIB_SETUP([GSM], [GSM], [gsm], [, or 'internal'])
 AST_EXT_LIB_SETUP([IKSEMEL], [Iksemel Jabber Library], [iksemel])
 AST_EXT_LIB_SETUP([IMAP_TK], [UW IMAP Toolkit], [imap])
 AST_EXT_LIB_SETUP([ISDNNET], [ISDN4Linux Library], [isdnnet])
 AST_EXT_LIB_SETUP([KDE], [KDE], [kde])
 AST_EXT_LIB_SETUP([LTDL], [libtool], [ltdl])
+AST_EXT_LIB_SETUP([LUA], [Lua], [lua])
 AST_EXT_LIB_SETUP([MISDN], [mISDN User Library], [misdn])
 AST_EXT_LIB_SETUP([NBS], [Network Broadcast Sound], [nbs])
 AST_EXT_LIB_SETUP([NCURSES], [ncurses], [ncurses])
@@ -220,6 +220,7 @@ AST_EXT_LIB_SETUP([FREETDS], [FreeTDS], [tds])
 AST_EXT_LIB_SETUP([TERMCAP], [Termcap], [termcap])
 AST_EXT_LIB_SETUP([TINFO], [Term Info], [tinfo])
 AST_EXT_LIB_SETUP([TONEZONE], [tonezone], [tonezone])
+AST_EXT_LIB_SETUP([USB], [usb], [usb])
 AST_EXT_LIB_SETUP([VORBIS], [Vorbis], [vorbis])
 AST_EXT_LIB_SETUP([VPB], [Voicetronix API], [vpb])
 AST_EXT_LIB_SETUP([ZLIB], [zlib], [z])
@@ -227,6 +228,10 @@ AST_EXT_LIB_SETUP([ZAPTEL], [Zaptel], [zaptel])
 AST_EXT_LIB_SETUP([ZAPTEL_TRANSCODE], [Zaptel_transcode], [zaptel_transcode])
 AST_EXT_LIB_SETUP([ZAPTEL_VLDTMF], [Zaptel_vldtmf], [zaptel_vldtmf])
 
+AST_EXT_LIB_SETUP([SDL], [Sdl], [sdl])
+AST_EXT_LIB_SETUP([SDL_IMAGE], [Sdl Image library], [SDL_image])
+AST_EXT_LIB_SETUP([FFMPEG], [Ffmpeg and avcodec library], [avcodec])
+
 # check for basic system features and functionality before
 # checking for package libraries
 
@@ -236,6 +241,8 @@ AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
 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])
 
+AC_CHECK_HEADERS([winsock.h winsock2.h])
+
 AC_SYS_LARGEFILE
 
 # Checks for typedefs, structures, and compiler characteristics.
@@ -277,17 +284,106 @@ AC_FUNC_STRNLEN
 AC_FUNC_STRTOD
 AC_FUNC_UTIME_NULL
 AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([asprintf atexit bzero dup2 endpwent floor ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday inet_ntoa isascii localtime_r memchr memmove memset mkdir munmap pow putenv re_comp regcomp rint select setenv socket sqrt strcasecmp strcasestr strchr strcspn strdup strerror strlcat strlcpy strncasecmp strndup strnlen strrchr strsep strspn strstr strtol strtoq unsetenv utime vasprintf])
+AC_CHECK_FUNCS([asprintf atexit bzero dup2 endpwent ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday 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 strtol strtoq unsetenv utime vasprintf])
+
+AC_CHECK_FUNCS([glob])
+
+AC_MSG_CHECKING(for timersub in time.h)
+AC_LINK_IFELSE(
+       AC_LANG_PROGRAM([#include <sys/time.h>],
+               [struct timeval *a; timersub(a, a, a);]),
+       AC_MSG_RESULT(yes)
+               AC_DEFINE([HAVE_TIMERSUB], 1, [Define to 1 if your system defines timersub.]),
+       AC_MSG_RESULT(no)
+)
+
+AC_CHECK_HEADER([sys/poll.h], 
+   [HAS_POLL=1]
+   AC_DEFINE([HAVE_SYS_POLL_H], 1, [Define to 1 if your system has working sys/poll.h]),
+   )
+AC_SUBST(HAS_POLL)
 
 # https support (in main/http.c) uses funopen on BSD systems,
 # fopencookie on linux
 AC_CHECK_FUNCS([funopen fopencookie])
 
+AC_CHECK_FUNCS([inet_aton])
+
+# check if we have IP_PKTINFO constant defined
+AC_MSG_CHECKING(for IP_PKTINFO)
+AC_LINK_IFELSE(
+               AC_LANG_PROGRAM([#include <netinet/in.h>],
+                                               [int pi = IP_PKTINFO;]),
+               AC_MSG_RESULT(yes)
+               AC_DEFINE([HAVE_PKTINFO], 1, [Define to 1 if your system defines IP_PKTINFO.]),
+               AC_MSG_RESULT(no)
+)
+
 # some systems already have gethostbyname_r so we don't need to build ours in main/utils.c
-AC_CHECK_FUNCS([gethostbyname_r])
+AC_SEARCH_LIBS(gethostbyname_r, [socket nsl])
+
+AC_MSG_CHECKING(for gethostbyname_r with 6 arguments)
+AC_LINK_IFELSE(
+        AC_LANG_PROGRAM([#include <stdlib.h>
+                         #include <netdb.h>],
+                        [struct hostent *he = gethostbyname_r((const char *)NULL, (struct hostent *)NULL, (char *)NULL, (int)0, (struct hostent **)NULL, (int *)NULL);]),
+        AC_MSG_RESULT(yes)
+        AC_DEFINE([HAVE_GETHOSTBYNAME_R_6], 1, [Define to 1 if your system has gethostbyname_r with 6 arguments.]),
+        AC_MSG_RESULT(no)
+)
+
+AC_MSG_CHECKING(for gethostbyname_r with 5 arguments)
+AC_LINK_IFELSE(
+        AC_LANG_PROGRAM([#include <stdlib.h>
+                        #include <netdb.h>],
+                        [struct hostent *he = gethostbyname_r((const char *)NULL, (struct hostent *)NULL, (char *)NULL, (int)0, (int *)NULL);]),
+        AC_MSG_RESULT(yes)
+        AC_DEFINE([HAVE_GETHOSTBYNAME_R_5], 1, [Define to 1 if your system has gethostbyname_r with 5 arguments.]),
+        AC_MSG_RESULT(no)
+)
+
+AC_CHECK_HEADER([byteswap.h], [AC_DEFINE_UNQUOTED([HAVE_BYTESWAP_H], 1, [Define to 1 if byteswap.h macros are available.])])
+
+AC_MSG_CHECKING(for __swap16 variant of <sys/endian.h> byteswapping macros)
+AC_LINK_IFELSE(
+AC_LANG_PROGRAM([#include <sys/endian.h>], [int a = 1; int b = __swap16(a);]),
+AC_MSG_RESULT(yes)
+AC_DEFINE([HAVE_SYS_ENDIAN_SWAP16], 1, [Define to 1 if your sys/endian.h header file provides the __swap16 macro.]),
+AC_MSG_RESULT(no)
+)
+
+AC_MSG_CHECKING(for bswap16 variant of <sys/endian.h> byteswapping macros)
+AC_LINK_IFELSE(
+AC_LANG_PROGRAM([#include <sys/endian.h>], [int a = 1; int b = bswap16(a);]),
+AC_MSG_RESULT(yes)
+AC_DEFINE([HAVE_SYS_ENDIAN_BSWAP16], 1, [Define to 1 if your sys/endian.h header file provides the bswap16 macro.]),
+AC_MSG_RESULT(no)
+)
+
+if test "${cross_compiling}" = "no";
+then
+  AC_CHECK_FILE(/dev/urandom, AC_DEFINE([HAVE_DEV_URANDOM], 1, [Define to 1 if your system has /dev/urandom.]))
+fi
 
 AST_C_DEFINE_CHECK([PTHREAD_RWLOCK_INITIALIZER], [PTHREAD_RWLOCK_INITIALIZER], [pthread.h])
 AST_C_DEFINE_CHECK([PTHREAD_RWLOCK_PREFER_WRITER_NP], [PTHREAD_RWLOCK_PREFER_WRITER_NP], [pthread.h])
+AST_C_DEFINE_CHECK([PTHREAD_MUTEX_RECURSIVE_NP], [PTHREAD_MUTEX_RECURSIVE_NP], [pthread.h])
+AST_C_DEFINE_CHECK([PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP], [PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP], [pthread.h])
+
+if test "${cross_compiling}" = "no";
+then
+AC_MSG_CHECKING(for working epoll support)
+AC_LINK_IFELSE(
+AC_LANG_PROGRAM([#include <sys/epoll.h>], [int res = epoll_create(10);
+                                         if (res < 0)
+                                            return 1;
+                                         close (res);
+                                         return 0;]),
+AC_MSG_RESULT(yes)
+AC_DEFINE([HAVE_EPOLL], 1, [Define to 1 if your system has working epoll support.]),
+AC_MSG_RESULT(no)
+)
+fi
 
 AC_MSG_CHECKING(for compiler atomic operations)
 AC_LINK_IFELSE(
@@ -302,6 +398,7 @@ AST_GCC_ATTRIBUTE(malloc)
 AST_GCC_ATTRIBUTE(const)
 AST_GCC_ATTRIBUTE(unused)
 AST_GCC_ATTRIBUTE(always_inline)
+AST_GCC_ATTRIBUTE(deprecated)
 
 AC_MSG_CHECKING(for -ffunction-sections support)
 saved_CFLAGS="${CFLAGS}"
@@ -340,7 +437,7 @@ AC_SUBST(AST_DECLARATION_AFTER_STATEMENT)
 AC_MSG_CHECKING(for sysinfo)
 AC_LINK_IFELSE(
         AC_LANG_PROGRAM([#include <sys/sysinfo.h>],
-                        [struct sysinfo sys_info;]),
+                        [struct sysinfo sys_info; int uptime = sys_info.uptime]),
         AC_MSG_RESULT(yes)
         AC_DEFINE([HAVE_SYSINFO], 1, [Define to 1 if your system has sysinfo support]),
         AC_MSG_RESULT(no)
@@ -351,7 +448,15 @@ AC_LINK_IFELSE(
        AC_LANG_PROGRAM([#include <resolv.h>],
                        [int foo = res_ninit(NULL);]),
        AC_MSG_RESULT(yes)
-       AC_DEFINE([HAVE_RES_NINIT], 1, [Define to 1 if your system has the re-entrant resolver functions.]),
+       AC_DEFINE([HAVE_RES_NINIT], 1, [Define to 1 if your system has the re-entrant resolver functions.])
+       AC_MSG_CHECKING(for res_ndestroy)
+       AC_LINK_IFELSE(
+               AC_LANG_PROGRAM([#include <resolv.h>],
+                               [int foo = res_ndestroy(NULL);]),
+               AC_MSG_RESULT(yes)
+               AC_DEFINE([HAVE_RES_NDESTROY], 1, [Define to 1 if your system has the ndestroy resolver function.]),
+               AC_MSG_RESULT(no)
+       ),
        AC_MSG_RESULT(no)
 )
 
@@ -375,8 +480,52 @@ if test "x${host_os}" = "xlinux-gnu" ; then
 fi
 
 # BSD might not have exp2, and/or log2
+AST_EXT_LIB_CHECK([EXP2L], [m], [exp2l])
+AST_EXT_LIB_CHECK([LOG2L], [m], [log2l])
+AST_EXT_LIB_CHECK([EXP10L], [m], [exp10l])
+AST_EXT_LIB_CHECK([LOG10L], [m], [log10l])
+AST_EXT_LIB_CHECK([SINL], [m], [sinl])
+AST_EXT_LIB_CHECK([COSL], [m], [cosl])
+AST_EXT_LIB_CHECK([TANL], [m], [tanl])
+AST_EXT_LIB_CHECK([ASINL], [m], [asinl])
+AST_EXT_LIB_CHECK([ACOSL], [m], [acosl])
+AST_EXT_LIB_CHECK([ATANL], [m], [atanl])
+AST_EXT_LIB_CHECK([ATAN2L], [m], [atan2l])
+AST_EXT_LIB_CHECK([POWL], [m], [powl])
+AST_EXT_LIB_CHECK([SQRTL], [m], [sqrtl])
+AST_EXT_LIB_CHECK([RINTL], [m], [rintl])
+AST_EXT_LIB_CHECK([EXPL], [m], [expl])
+AST_EXT_LIB_CHECK([LOGL], [m], [logl])
+AST_EXT_LIB_CHECK([REMAINDERL], [m], [remainderl])
+AST_EXT_LIB_CHECK([FMODL], [m], [fmodl])
+AST_EXT_LIB_CHECK([ROUNDL], [m], [roundl])
+AST_EXT_LIB_CHECK([TRUNCL], [m], [truncl])
+AST_EXT_LIB_CHECK([STRTOLD], [c], [strtold], [stdlib.h])
+AST_EXT_LIB_CHECK([FLOORL], [m], [floorl])
+AST_EXT_LIB_CHECK([CEILL], [m], [ceill])
 AST_EXT_LIB_CHECK([EXP2], [m], [exp2])
 AST_EXT_LIB_CHECK([LOG2], [m], [log2])
+AST_EXT_LIB_CHECK([EXP10], [m], [exp10])
+AST_EXT_LIB_CHECK([LOG10], [m], [log10])
+AST_EXT_LIB_CHECK([SIN], [m], [sin])
+AST_EXT_LIB_CHECK([COS], [m], [cos])
+AST_EXT_LIB_CHECK([TAN], [m], [tan])
+AST_EXT_LIB_CHECK([ASIN], [m], [asin])
+AST_EXT_LIB_CHECK([ACOS], [m], [acos])
+AST_EXT_LIB_CHECK([ATAN], [m], [atan])
+AST_EXT_LIB_CHECK([ATAN2], [m], [atan2])
+AST_EXT_LIB_CHECK([POW], [m], [pow])
+AST_EXT_LIB_CHECK([SQRT], [m], [sqrt])
+AST_EXT_LIB_CHECK([RINT], [m], [rint])
+AST_EXT_LIB_CHECK([EXP], [m], [exp])
+AST_EXT_LIB_CHECK([LOG], [m], [log])
+AST_EXT_LIB_CHECK([REMAINDER], [m], [remainder])
+AST_EXT_LIB_CHECK([FMOD], [m], [fmod])
+AST_EXT_LIB_CHECK([ROUND], [m], [round])
+AST_EXT_LIB_CHECK([TRUNC], [m], [trunc])
+AST_EXT_LIB_CHECK([STRTOD], [c], [strtod], [stdlib.h])
+AST_EXT_LIB_CHECK([FLOOR], [m], [floor])
+AST_EXT_LIB_CHECK([CEIL], [m], [ceil])
 
 GSM_INTERNAL="yes"
 AC_SUBST(GSM_INTERNAL)
@@ -446,10 +595,6 @@ fi
 
 AST_EXT_LIB_CHECK([IKSEMEL], [iksemel], [iks_start_sasl], [iksemel.h])
 
-if test "${PBX_IKSEMEL}" = 1; then
-   AST_EXT_LIB_CHECK([GNUTLS], [gnutls], [gnutls_bye], [gnutls/gnutls.h], [-lz -lgcrypt -lgpg-error])
-fi
-
 if test "${USE_IMAP_TK}" != "no"; then
    if test "${IMAP_TK_DIR}" = "system" ; then
       AC_MSG_NOTICE([Checking for system c-client library...])
@@ -671,6 +816,8 @@ AST_EXT_LIB_CHECK([MISDN], [mISDN], [mISDN_open], [mISDNuser/mISDNlib.h])
 if test "${PBX_MISDN}" = 1; then
    AST_EXT_LIB_CHECK([ISDNNET], [isdnnet], [init_manager], [mISDNuser/isdn_net.h], [-lmISDN -lpthread])
    AST_EXT_LIB_CHECK([SUPPSERV], [suppserv], [encodeFac], [mISDNuser/suppserv.h])
+   AST_C_DEFINE_CHECK([MISDN_FAC_RESULT], [Fac_RESULT], [mISDNuser/suppserv.h])
+   AST_C_DEFINE_CHECK([MISDN_FAC_ERROR], [Fac_ERROR], [mISDNuser/suppserv.h])
    AC_CHECK_HEADER([linux/mISDNdsp.h], [AC_DEFINE_UNQUOTED([MISDN_1_2], 1, [Build chan_misdn for mISDN 1.2 or later.])])
 fi
 
@@ -767,9 +914,9 @@ fi
 
 AST_EXT_LIB_CHECK([POPT], [popt], [poptStrerror], [popt.h])
 
-AST_EXT_LIB_CHECK([PRI], [pri], [pri_call], [libpri.h])
+AST_EXT_LIB_CHECK([PRI], [pri], [pri_keypad_facility], [libpri.h])
 
-AST_EXT_LIB_CHECK([SS7], [ss7], [ss7_new], [libss7.h])
+AST_EXT_LIB_CHECK([SS7], [ss7], [isup_cqr], [libss7.h])
 
 if test "${USE_PWLIB}" != "no"; then
        if test -n "${PWLIB_DIR}"; then
@@ -871,6 +1018,10 @@ fi
 
 AC_LANG_POP
 
+LUA_INCLUDE="-I/usr/include/lua5.1"
+LUA_LIB="-llua5.1"
+AST_EXT_LIB_CHECK([LUA], [lua5.1], [luaL_newstate], [lua5.1/lua.h]) 
+
 AST_EXT_LIB_CHECK([RADIUS], [radiusclient-ng], [rc_read_config], [radiusclient-ng.h])
 
 AST_EXT_LIB_CHECK([SPEEX], [speex], [speex_encode], [speex/speex.h], [-lm])
@@ -923,6 +1074,8 @@ AST_EXT_LIB_CHECK([TONEZONE], [tonezone], [tone_zone_find], [zaptel/tonezone.h],
 # other case, old tonezone (0.80)
 AST_EXT_LIB_CHECK([TONEZONE], [tonezone], [tone_zone_find], [zaptel/zaptel.h], [${tonezone_extra}], [80])
 
+AST_EXT_LIB_CHECK([USB], [usb], [usb_init], [usb.h], [])
+
 AST_EXT_LIB_CHECK([VORBIS], [vorbis], [vorbis_info_init], [vorbis/codec.h], [-lm -lvorbisenc])
 
 AC_LANG_PUSH(C++)
@@ -1014,14 +1167,21 @@ AC_SUBST(EDITLINE_LIB)
 AC_CHECK_HEADER([h323.h], [PBX_H323=1], [PBX_H323=0])
 AC_SUBST(PBX_H323)
 
+AC_CHECK_HEADER([linux/compiler.h],
+                [AC_DEFINE_UNQUOTED([HAVE_LINUX_COMPILER_H], 1, [Define to 1 if your system has linux/compiler.h.])])
+
 AC_CHECK_HEADER([linux/ixjuser.h], [PBX_IXJUSER=1], [PBX_IXJUSER=0], [
                                   #include <linux/version.h>
-                                  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
+                                  #ifdef HAVE_LINUX_COMPILER_H
                                   #include <linux/compiler.h>
                                   #endif
                                   ])
 AC_SUBST(PBX_IXJUSER)
 
+AST_EXT_TOOL_CHECK([SDL], [sdl])
+AST_EXT_LIB_CHECK([SDL_IMAGE], [SDL_image], [IMG_Load], [SDL/SDL_image.h], [${SDL_LIB}])
+AST_EXT_LIB_CHECK([FFMPEG], [avcodec], [sws_getContext], [ffmpeg/avcodec.h], [-lpthread -lz -lm])
+
 PBX_GTK=0
 AC_CHECK_TOOL(GTKCONFIG, gtk-config, No)
 if test ! "x${GTKCONFIG}" = xNo; then
@@ -1112,6 +1272,8 @@ fi
 AC_MSG_NOTICE(Package configured for: )
 AC_MSG_NOTICE( OS type  : $host_os)
 AC_MSG_NOTICE( Host CPU : $host_cpu)
+AC_MSG_NOTICE( build-cpu:vendor:os: $build_cpu : $build_vendor : $build_os :) 
+AC_MSG_NOTICE( host-cpu:vendor:os: $host_cpu : $host_vendor : $host_os :) 
 if test "${cross_compiling}" = "yes"; then
    AC_MSG_NOTICE( Cross Compilation = YES)
 fi