]> jfr.im git - solanum.git/blobdiff - libratbox/configure.ac
Add .travis.yml
[solanum.git] / libratbox / configure.ac
index c6c40e589d69b87399fc25ac5c72f624bcd1dac3..4168bde4860c0bd41b12f94727845d12c5d8e91c 100644 (file)
@@ -1,16 +1,17 @@
-dnl $Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $
+dnl $Id: configure.ac 26260 2008-12-10 04:08:39Z androsyn $
 dnl Process this file with autoconf to produce a configure script.
 
 dnl TODO: clean up all the OpenSSL and shared module checking stuff;
 dnl the most major changes have already been made and it looks like
 dnl said functions need to be just about as complex as they already are.
 
-AC_PREREQ(2.60)
+AC_PREREQ(2.63)
 AUTOMAKE_OPTIONS = 1.10
 dnl Sneaky way to get an Id tag into the configure script
-AC_COPYRIGHT([$Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $])
+AC_COPYRIGHT([$Id: configure.ac 26260 2008-12-10 04:08:39Z androsyn $])
 AC_INIT([libratbox],[devel])
-AM_INIT_AUTOMAKE(AC_PACKAGE_TARNAME, AC_PACKAGE_VERSION, -)
+AM_INIT_AUTOMAKE([subdir-objects])
+AM_SILENT_RULES([yes])
 
 AM_CONFIG_HEADER(include/libratbox_config.h)
 
@@ -40,6 +41,7 @@ AM_MAINTAINER_MODE
 AC_ISC_POSIX
 AC_C_INLINE
 AC_C_CONST
+AC_C_BIGENDIAN
 AC_PROG_MAKE_SET
 AC_PROG_INSTALL
 AC_PATH_PROG(AUTOMAKE, automake)
@@ -50,9 +52,6 @@ AC_PATH_PROG(RM, rm)
 AC_PATH_PROG(CP, cp)
 AC_PATH_PROG(MV, mv)
 AC_PATH_PROG(LN, ln)
-AC_PATH_PROG(AR, ar)
-AC_PATH_PROG(LD, ld)
-AC_PATH_PROG(RANLIB, ranlib)
 AC_PATH_PROG(TOUCH, touch)
 AC_LANG(C)
 
@@ -60,9 +59,6 @@ AC_PROG_LIBTOOL
 
 LIBTOOL="$LIBTOOL --silent"
 
-AC_CONFIG_SUBDIRS(libltdl)
-
-
 case "$host_os" in
 *cygwin*)
      AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
@@ -73,6 +69,8 @@ case "$host_os" in
      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
      AC_CHECK_HEADER(windows.h, , [AC_MSG_ERROR([** MinGW and no windows.h.  I give up.])])
      AC_CHECK_HEADER(winsock2.h, , [AC_MSG_ERROR([** MinGW and no winsock2.h.  I give up.])])
+     AC_DEFINE_UNQUOTED(HAVE_WINSOCK2_H, 1, [Have WINSOCK2_H])
+     AC_DEFINE_UNQUOTED(HAVE_WINSOCK_H, 1, [Have WINSOCK_H])
      LIBS="$LIBS -lws2_32 -liphlpapi"
      is_mingw="yes"
      ;;
@@ -80,8 +78,7 @@ case "$host_os" in
      CPPFLAGS="$CFLAGS -D_ALL_SOURCE -D_XOPEN_SOURCE=500"
      ;;
 *solaris*)
-*sunos*)
-     CPPFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_XPG4_2 -D__EXTENSIONS__"
+     CPPFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_XPG4_2"
      ;;
 *)
      ;;
@@ -91,7 +88,7 @@ AM_CONDITIONAL([MINGW], [test "$is_mingw" = "yes"])
 
 
 # backwards support for IRC_CFLAGS
-CFLAGS="$IRC_CFLAGS $CFLAGS -O0 -Wall"
+CFLAGS="$IRC_CFLAGS $CFLAGS -Wall"
 
 dnl use directory structure of cached as default (hack)
 if test "$libexecdir" = '${exec_prefix}/libexec' &&
@@ -109,7 +106,7 @@ AC_TYPE_UID_T
 dnl Checks for header files.
 AC_HEADER_STDC
 
-AC_CHECK_HEADERS([crypt.h unistd.h sys/socket.h sys/stat.h sys/time.h time.h netinet/in.h arpa/inet.h errno.h sys/uio.h spawn.h sys/poll.h sys/epoll.h sys/select.h sys/devpoll.h sys/event.h port.h signal.h sys/signalfd.h])
+AC_CHECK_HEADERS([crypt.h unistd.h sys/socket.h sys/stat.h sys/time.h time.h netinet/in.h arpa/inet.h errno.h sys/uio.h spawn.h sys/poll.h sys/epoll.h sys/select.h sys/devpoll.h sys/event.h port.h signal.h sys/signalfd.h sys/timerfd.h linux/tcp.h])
 AC_HEADER_TIME
 
 dnl Networking Functions
@@ -131,38 +128,47 @@ member.])],,[[
 #endif
 ]])
 
-AC_CHECK_TYPE([socklen_t], rb_socklen_t=socklen_t,[
+AC_CHECK_TYPE([socklen_t], rb_cv_socklen_t=socklen_t,[
        AC_MSG_CHECKING([for socklen_t equivalent])
-       AC_CACHE_VAL([rb_socklen_t],
+       AC_CACHE_VAL([rb_cv_socklen_t],
        [
        # Systems have either "struct sockaddr *" or
        # "void *" as the second argument to getpeername
-       rb_socklen_t=
+       rb_cv_socklen_t=
        for arg2 in "struct sockaddr" void; do
                for t in int size_t unsigned long "unsigned long"; do
                        AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
-
+#endif
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
 int getpeername (int, $arg2 *, $t *);
 ],[
 $t len;
 getpeername(0,0,&len);
 ],[
-       rb_socklen_t="$t"
+       rb_cv_socklen_t="$t"
        break
 ])
                done
        done
 
-       if test "x$rb_socklen_t" = x; then
-               AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
+       if test "x$rb_cv_socklen_t" = x; then
+               AC_MSG_WARN([Cannot find a type to use in place of socklen_t using int])
+               rb_cv_socklen_t=int
        fi
        ])
-       AC_MSG_RESULT($rb_socklen_t)],
+       AC_MSG_RESULT($rb_cv_socklen_t)],
        [#include <sys/types.h>
 #include <sys/socket.h>])
 
+rb_socklen_t=$rb_cv_socklen_t
+
 
 
 
@@ -196,25 +202,6 @@ AC_CHECK_TYPES([struct sockaddr_storage],[
        ])
                 
 
-save_LIBS=$LIBS
-AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
-LIBS=$save_LIBS
-
-CRYPT_LIB=$ac_cv_search_crypt
-
-if test "$CRYPT_LIB" = "none required"; then
-       unset CRYPT_LIB
-elif test "$CRYPT_LIB" = no; then
-       need_crypt=yes;
-       AC_DEFINE(NEED_CRYPT, 1, [Define if your system needs crypt.])
-       unset CRYPT_LIB
-fi
-
-AM_CONDITIONAL([NEED_CRYPT], [test x"$need_crypt" = "xyes"])
-
-
-AC_SUBST(CRYPT_LIB)
-
 dnl Check for stdarg.h - if we cant find it, halt configure
 AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - libratbox will not compile without it **])])
 
@@ -225,11 +212,12 @@ AC_CHECK_TYPE([sa_family_t], [],
 
 
 dnl check for various functions...
-AC_CHECK_FUNCS([socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl arc4random getrusage])     
+AC_CHECK_FUNCS([socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl arc4random getrusage timerfd_create])      
 
 AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if you have nanosleep]))
 AC_SEARCH_LIBS(timer_create, rt, AC_DEFINE(HAVE_TIMER_CREATE, 1, [Define if you have timer_create]))
 RB_CHECK_TIMER_CREATE
+RB_CHECK_TIMERFD_CREATE
 
 AC_FUNC_ALLOCA
 AC_FUNC_VFORK
@@ -319,11 +307,11 @@ if test "$cf_enable_openssl" != no; then
        dnl Check OpenSSL version (must be 0.9.7 or above!)
        AC_MSG_CHECKING(for OpenSSL 0.9.7 or above)
        AC_RUN_IFELSE(
-               AC_LANG_PROGRAM(
+               [AC_LANG_PROGRAM(
                [#include <openssl/opensslv.h>
                #include <stdlib.h>],
                [[if (OPENSSL_VERSION_NUMBER >= 0x00907000)
-               exit(0); else exit(1);]]),
+               exit(0); else exit(1);]])],
        cf_enable_openssl=yes,
        cf_enable_openssl=no,
        cf_enable_openssl=no)
@@ -344,15 +332,30 @@ if test "$cf_enable_openssl" != no; then
                [cf_enable_openssl=no])
 fi
 
-
 if test "$cf_enable_openssl" != no; then
        CPPFLAGS="$CPPFLAGS $SSL_LIBS"
        AC_CHECK_LIB(ssl, SSL_read, 
-               [SSL_LIBS="-lssl -lcrypto"],
+               [SSL_LIBS="$SSL_LIBS -lssl -lcrypto"],
                [cf_enable_openssl=no], [-lcrypto])
 fi
 
 
+dnl mbedTLS support
+AC_ARG_ENABLE(mbedtls,
+[AC_HELP_STRING([--enable-mbedtls], [Enable mbedTLS support.])
+AC_HELP_STRING([--disable-mbedtls], [Disable mbedTLS support.])],
+[cf_enable_mbedtls=$enableval],
+[cf_enable_mbedtls="auto"])
+
+if test "$cf_enable_mbedtls" != no; then
+       save_CPPFLAGS="$CPPFLAGS"
+       save_LIBS="$LIBS"
+       LIBS="$LIBS $MBEDTLS_LIBS"
+       AC_CHECK_LIB(mbedtls, mbedtls_ssl_init, [
+               MBEDTLS_LIBS="$MBEDTLS_LIBS -lmbedtls -lmbedcrypto -lmbedx509"
+               cf_enable_mbedtls=yes
+       ], [cf_enable_mbedtls=no], [-lmbedcrypto -lmbedx509])
+fi
 
 dnl GnuTLS support
 AC_MSG_CHECKING(for GnuTLS)
@@ -368,7 +371,12 @@ if test "$cf_enable_gnutls" != no; then
        ], [cf_enable_gnutls="no"])      
 fi
 
-if test "$cf_enable_gnutls" = "auto" -a "$cf_enable_openssl" = "yes"; then
+dnl mbed TLS is given highest preference when no specified TLS library is provided
+if test "$cf_enable_openssl" = "auto" -a "$cf_enable_mbedtls" = "yes"; then
+       cf_enable_openssl="no"
+fi
+
+if test "$cf_enable_gnutls" = "auto" -a "$cf_enable_openssl" = "yes" -a "$cf_enable_mbedtls" = "yes"; then
        cf_enable_gnutls="no"
 fi
 
@@ -376,11 +384,22 @@ if test x"$cf_enable_openssl" != xno; then
        AC_DEFINE(HAVE_OPENSSL,1,[Has OpenSSL])
        GNUTLS_CFLAGS=""
        GNUTLS_LIBS=""
+       MBEDTLS_LIBS=""
+       MBEDTLS_CFLAGS=""
        SSL_TYPE="openssl"
+elif test x"$cf_enable_mbedtls" != xno; then
+       AC_DEFINE(HAVE_MBEDTLS, 1, [Has mbedTLS])
+       SSL_LIBS=""
+       SSL_CFLAGS=""   
+       GNUTLS_CFLAGS=""
+       GNUTLS_LIBS=""
+       SSL_TYPE="mbedtls"      
 elif test x"$cf_enable_gnutls" != xno; then
        AC_DEFINE(HAVE_GNUTLS, 1, [Has GnuTLS])
        SSL_LIBS=""
-       SSL_CFLAGS=""   
+       SSL_CFLAGS=""
+       MBEDTLS_LIBS=""
+       MBEDTLS_CFLAGS=""
        SSL_TYPE="gnutls"
 fi
 
@@ -428,14 +447,6 @@ else
        AC_MSG_RESULT(no)
 fi
 
-AC_ARG_ENABLE(balloc,
-AC_HELP_STRING([--disable-balloc],[Disable the block allocator.]),
-[balloc=$enableval], [balloc=yes])
-
-if test "$balloc" = no; then
-       AC_DEFINE([NOBALLOC], 1, [Define to 1 if you wish to disable the block allocator.])
-fi
-
 AC_ARG_ENABLE(warnings,
 AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]),
 [CFLAGS="$CFLAGS -Wall -Werror -Wcast-qual -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings -W -Wno-unused -Wunused-function -Wunused-variable"],[])
@@ -448,6 +459,8 @@ AC_SUBST(SSL_CFLAGS)
 AC_SUBST(SSL_LIBS)
 AC_SUBST(GNUTLS_CFLAGS)
 AC_SUBST(GNUTLS_LIBS)
+AC_SUBST(MBEDTLS_CFLAGS)
+AC_SUBST(MBEDTLS_LIBS)
 
 if test "$prefix" = "NONE"; then 
        AC_DEFINE_UNQUOTED(RB_PREFIX, "$ac_default_prefix", [Prefix where libratbox is installed.])
@@ -558,7 +571,7 @@ fi
 if test "x$rb_sockaddr_storage" = "xyes"; then
        echo '#define rb_sockaddr_storage sockaddr_storage' >> $outfile
 else
-       echo 'struct rb_sockaddr_storage { uint8_t _padding[128]; };' >> $outfile
+       echo 'struct rb_sockaddr_storage { uint8_t _padding[[128]]; };' >> $outfile
 fi
 
 cat >> $outfile <<\_______EOF
@@ -657,7 +670,7 @@ fi
 AC_CONFIG_FILES(               \
        src/Makefile            \
        Makefile                \
-       libratbox.pc            \
+       libratbox.pc
 )
 
 AC_OUTPUT
@@ -672,7 +685,6 @@ echo "Installing into: $prefix"
 
 echo "IPv6 support ................... $have_v6"
 echo "Assert debugging ............... $assert"
-echo "Block allocator ................ $balloc"
 echo "SSL Type........................ $SSL_TYPE"
 echo