]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - libratbox/configure.ac
libratbox sync - r25796
[irc/rqf/shadowircd.git] / libratbox / configure.ac
index fe64285628e4932d3d7ded93523c8e935f930120..86588c89636375d059ca00ae2e66c762e1d71d17 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: configure.ac 23020 2006-09-01 18:20:19Z androsyn $
+dnl $Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $
 dnl Process this file with autoconf to produce a configure script.
 
 dnl TODO: clean up all the OpenSSL and shared module checking stuff;
@@ -8,7 +8,7 @@ dnl said functions need to be just about as complex as they already are.
 AC_PREREQ(2.60)
 AUTOMAKE_OPTIONS = 1.10
 dnl Sneaky way to get an Id tag into the configure script
-AC_COPYRIGHT([$Id: configure.ac 23020 2006-09-01 18:20:19Z androsyn $])
+AC_COPYRIGHT([$Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $])
 AC_INIT([libratbox],[devel])
 AM_INIT_AUTOMAKE(AC_PACKAGE_TARNAME, AC_PACKAGE_VERSION, -)
 
@@ -99,20 +99,6 @@ if test "$libexecdir" = '${exec_prefix}/libexec' &&
        localstatedir='${prefix}'
 fi
 
-AC_TYPE_INT8_T
-AC_TYPE_INT16_T
-AC_TYPE_INT32_T
-AC_TYPE_INT64_T
-AC_TYPE_UINT8_T
-AC_TYPE_UINT16_T
-AC_TYPE_UINT32_T
-AC_TYPE_UINT64_T
-
-RB_TYPE_INTPTR_T
-RB_TYPE_INTMAX_T
-RB_TYPE_UINTMAX_T
-RB_TYPE_UINTPTR_T
-
 AC_TYPE_PID_T
 AC_TYPE_SIZE_T
 AC_TYPE_SSIZE_T
@@ -144,21 +130,41 @@ member.])],,[[
 #endif
 ]])
 
-AC_CHECK_TYPE(socklen_t, ,
-[AC_DEFINE([socklen_t], [unsigned int],
-[If we don't have a real socklen_t, unsigned int is good enough.])],
-[
-#ifdef HAVE_SYS_TYPES_H
+AC_CHECK_TYPE([socklen_t], rb_socklen_t=socklen_t,[
+       AC_MSG_CHECKING([for socklen_t equivalent])
+       AC_CACHE_VAL([rb_socklen_t],
+       [
+       # Systems have either "struct sockaddr *" or
+       # "void *" as the second argument to getpeername
+       rb_socklen_t=
+       for arg2 in "struct sockaddr" void; do
+               for t in int size_t unsigned long "unsigned long"; do
+                       AC_TRY_COMPILE([
 #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"
+       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])
+       fi
+       ])
+       AC_MSG_RESULT($rb_socklen_t)],
+       [#include <sys/types.h>
+#include <sys/socket.h>])
+
+
+
+
 
 AC_ARG_ENABLE(ipv6,AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),[ipv6=$enableval],[ipv6=yes])
 
@@ -203,7 +209,7 @@ elif test "$CRYPT_LIB" = no; then
        unset CRYPT_LIB
 fi
 
-AM_CONDITIONAL([NEED_CRYPT], [test x"$need_crypt" == "xyes"])
+AM_CONDITIONAL([NEED_CRYPT], [test x"$need_crypt" = "xyes"])
 
 
 AC_SUBST(CRYPT_LIB)
@@ -218,7 +224,7 @@ 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])  
+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_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]))
@@ -241,25 +247,6 @@ if test "$is_mingw" = "yes"; then
        AC_DEFINE(HAVE_WIN32, [1], [Define to 1 if you are on windows])
 fi
 
-dnl GnuTLS support
-AC_MSG_CHECKING(for GnuTLS)
-AC_ARG_ENABLE(gnutls,
-[AC_HELP_STRING([--enable-gnutls],[Enable GnuTLS support.])
-AC_HELP_STRING([--disable-gnutls],[Disable GnuTLS support.])],
-[cf_enable_gnutls=$enableval],
-[cf_enable_gnutls="auto"])
-
-if test "$cf_enable_gnutls" != no; then
-       PKG_CHECK_MODULES(GNUTLS, [gnutls], [
-               CPPFLAGS="$CPPFLAGS $GNUTLS_CFLAGS"
-               LIBS="$LIBS $GNUTLS_LIBS"
-               cf_enable_gnutls="yes"
-       ], [cf_enable_gnutls="no"])
-fi
-
-if test "$cf_enable_gnutls" != no; then
-       AC_DEFINE(HAVE_GNUTLS, 1, [Has GNUTLS])
-fi
 
 dnl OpenSSL support
 AC_MSG_CHECKING(for OpenSSL)
@@ -269,11 +256,6 @@ AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
 [cf_enable_openssl=$enableval],
 [cf_enable_openssl="auto"])
 
-dnl Prefer GnuTLS over OpenSSL due to licensing issues, this could use improvement
-if test "$cf_enable_gnutls" = "yes" -a "$cf_enable_openssl" = "auto"; then
-       cf_enable_openssl="no"
-fi
-       
 if test "$cf_enable_openssl" != "no" ; then
        cf_openssl_basedir=""
        if test "$cf_enable_openssl" != "auto" &&
@@ -294,7 +276,7 @@ if test "$cf_enable_openssl" != "no" ; then
        dnl Now check cf_openssl_found to see if we found anything.
        if test ! -z "$cf_openssl_basedir"; then
                if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
-                       SSL_INCLUDES="-I${cf_openssl_basedir}/include"
+                       SSL_CFLAGS="-I${cf_openssl_basedir}/include"
                        SSL_LIBS="-L${cf_openssl_basedir}/lib"
                else
                dnl OpenSSL wasn't found in the directory specified.  Naughty
@@ -329,7 +311,7 @@ else
 fi
 
 save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
+CPPFLAGS="$CPPFLAGS $SSL_CFLAGS"
 save_LIBS="$LIBS"
 LIBS="$LIBS $SSL_LIBS"
 if test "$cf_enable_openssl" != no; then
@@ -369,11 +351,41 @@ if test "$cf_enable_openssl" != no; then
                [cf_enable_openssl=no], [-lcrypto])
 fi
 
-if test "$cf_enable_openssl" != no; then
+
+
+dnl GnuTLS support
+AC_MSG_CHECKING(for GnuTLS)
+AC_ARG_ENABLE(gnutls,
+[AC_HELP_STRING([--enable-gnutls],[Enable GnuTLS support.])
+AC_HELP_STRING([--disable-gnutls],[Disable GnuTLS support.])],
+[cf_enable_gnutls=$enableval],
+[cf_enable_gnutls="auto"])
+if test "$cf_enable_gnutls" != no; then
+       PKG_CHECK_MODULES(GNUTLS, [gnutls], [
+               cf_enable_gnutls="yes"   
+       ], [cf_enable_gnutls="no"])      
+fi
+
+if test "$cf_enable_gnutls" = "auto" -a "$cf_enable_openssl" = "yes"; then
+       cf_enable_gnutls="no"
+fi
+
+if test x"$cf_enable_openssl" != xno; then
        AC_DEFINE(HAVE_OPENSSL,1,[Has OpenSSL])
+       GNUTLS_CFLAGS=""
+       GNUTLS_LIBS=""
+       SSL_TYPE="openssl"
+elif test x"$cf_enable_gnutls" != xno; then
+       AC_DEFINE(HAVE_GNUTLS, 1, [Has GnuTLS])
+       SSL_LIBS=""
+       SSL_CFLAGS=""   
+       SSL_TYPE="gnutls"
 fi
 
 
+
+
 CPPFLAGS="$save_CPPFLAGS"
 LIBS="$save_LIBS"
 
@@ -431,9 +443,10 @@ AC_SUBST(LDFLAGS)
 AC_SUBST(PICFLAGS)
 AC_SUBST(CFLAGS)
 AC_SUBST(SEDOBJ)
-AC_SUBST(SSL_INCLUDES)
+AC_SUBST(SSL_CFLAGS)
 AC_SUBST(SSL_LIBS)
-
+AC_SUBST(GNUTLS_CFLAGS)
+AC_SUBST(GNUTLS_LIBS)
 
 if test "$prefix" = "NONE"; then 
        AC_DEFINE_UNQUOTED(RB_PREFIX, "$ac_default_prefix", [Prefix where libratbox is installed.])
@@ -450,17 +463,6 @@ fi
 
 AC_SUBST(RB_PREFIX)
 
-for dtype in uint64_t uint32_t uint16_t uint8_t int64_t int32_t int16_t int8_t intmax_t intptr_t uintmax_t uintptr_t
-do
-       var="\$ac_cv_c_${dtype}"
-       t_type=$(eval echo $var);
-       if test "x$t_type" = "xyes"; then
-               eval rb_$dtype="\"$dtype\""
-       else
-               eval rb_$dtype="\"$t_type\""
-       fi
-done
-
 AC_CONFIG_COMMANDS([include/librb-config.h],
 [
        outfile=include/librb-config.h.tmp
@@ -545,28 +547,17 @@ if test "x$rb_errno_h" = "xyes"; then
        echo '#include <errno.h>' >> $outfile
 fi
 
+echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
+
+
 if test "x$rb_sockaddr_sa_len" = "xyes"; then
        echo '#define RB_SOCKADDR_HAS_SA_LEN 1' >> $outfile
 fi
 
-echo "typedef $rb_uint64_t rb_uint64_t;"  >> $outfile
-echo "typedef $rb_uint32_t rb_uint32_t;"  >> $outfile
-echo "typedef $rb_uint16_t rb_uint16_t;"  >> $outfile
-echo "typedef $rb_uint8_t rb_uint8_t;"  >> $outfile
-echo "typedef $rb_int64_t rb_int64_t;"  >> $outfile
-echo "typedef $rb_int32_t rb_int32_t;"  >> $outfile
-echo "typedef $rb_int16_t rb_int16_t;"  >> $outfile
-echo "typedef $rb_int8_t rb_int8_t;"  >> $outfile
-echo "typedef $rb_intmax_t rb_intmax_t;"  >> $outfile
-echo "typedef $rb_intptr_t rb_intptr_t;"  >> $outfile
-echo "typedef $rb_uintmax_t rb_uintmax_t;"  >> $outfile
-echo "typedef $rb_uintptr_t rb_uintptr_t;"  >> $outfile
-echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
-
 if test "x$rb_sockaddr_storage" = "xyes"; then
        echo '#define rb_sockaddr_storage sockaddr_storage' >> $outfile
 else
-       echo 'struct rb_sockaddr_storage { rb_uint8_t _padding[128]; };' >> $outfile
+       echo 'struct rb_sockaddr_storage { uint8_t _padding[128]; };' >> $outfile
 fi
 
 cat >> $outfile <<\_______EOF
@@ -581,18 +572,6 @@ else
 fi
 
 ],[
-       rb_uint64_t="$rb_uint64_t"
-       rb_uint32_t="$rb_uint32_t"
-       rb_uint16_t="$rb_uint16_t"
-       rb_uint8_t="$rb_uint8_t"
-       rb_int64_t="$rb_int64_t"
-       rb_int32_t="$rb_int32_t"
-       rb_int16_t="$rb_int16_t"
-       rb_int8_t="$rb_int8_t"
-       rb_intmax_t="$rb_intmax_t"
-       rb_intptr_t="$rb_intptr_t"
-       rb_uintmax_t="$rb_uintmax_t"
-       rb_uintptr_t="$rb_uintptr_t"
        if test x$ac_cv_header_stdc = xyes; then
                rb_header_stdc=yes
        fi
@@ -654,11 +633,9 @@ fi
        if test x$ac_cv_header_winsock2_h = xyes; then
                rb_winsock2_h=yes
        fi
-       if test x$ac_cv_type_socklen_t = xyes; then
-               rb_socklen_t="socklen_t"
-       else
-               rb_socklen_t="unsigned int"
-       fi
+
+       rb_socklen_t=$rb_socklen_t
+
        if test "x$rb_have_sockaddr_storage" = "xyes"; then
                rb_sockaddr_storage="yes" 
        else
@@ -679,6 +656,7 @@ fi
 AC_CONFIG_FILES(               \
        src/Makefile            \
        Makefile                \
+       libratbox.pc            \
 )
 
 AC_OUTPUT
@@ -694,7 +672,6 @@ echo "Installing into: $prefix"
 echo "IPv6 support ................... $have_v6"
 echo "Assert debugging ............... $assert"
 echo "Block allocator ................ $balloc"
-echo "OpenSSL ........................ $cf_enable_openssl"
-echo "GnuTLS ......................... $cf_enable_gnutls"
+echo "SSL Type........................ $SSL_TYPE"
 echo