]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - libratbox/configure.ac
re-order the chary-3.3 news
[irc/rqf/shadowircd.git] / libratbox / configure.ac
index 45f6940f588d6c9d373bf1ff7c9dd8d5d7772e41..599e1f78026f39932d1dde93c282936704144a9d 100644 (file)
@@ -1,14 +1,14 @@
-dnl $Id: configure.ac 23020 2006-09-01 18:20:19Z 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 23020 2006-09-01 18:20:19Z 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, -)
 
@@ -50,9 +50,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 +57,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 +67,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,7 +76,7 @@ case "$host_os" in
      CPPFLAGS="$CFLAGS -D_ALL_SOURCE -D_XOPEN_SOURCE=500"
      ;;
 *solaris*)
-     CPPFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS"
+     CPPFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_XPG4_2"
      ;;
 *)
      ;;
@@ -90,7 +86,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' &&
@@ -99,20 +95,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
@@ -122,7 +104,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])
 AC_HEADER_TIME
 
 dnl Networking Functions
@@ -144,10 +126,16 @@ 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.])],
-[
+AC_CHECK_TYPE([socklen_t], rb_cv_socklen_t=socklen_t,[
+       AC_MSG_CHECKING([for socklen_t equivalent])
+       AC_CACHE_VAL([rb_cv_socklen_t],
+       [
+       # Systems have either "struct sockaddr *" or
+       # "void *" as the second argument to getpeername
+       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
@@ -157,8 +145,31 @@ AC_CHECK_TYPE(socklen_t, ,
 #ifdef HAVE_WINSOCK2_H
 #include <winsock2.h>
 #endif
-
+int getpeername (int, $arg2 *, $t *);
+],[
+$t len;
+getpeername(0,0,&len);
+],[
+       rb_cv_socklen_t="$t"
+       break
 ])
+               done
+       done
+
+       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_cv_socklen_t)],
+       [#include <sys/types.h>
+#include <sys/socket.h>])
+
+rb_socklen_t=$rb_cv_socklen_t
+
+
+
+
 
 AC_ARG_ENABLE(ipv6,AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),[ipv6=$enableval],[ipv6=yes])
 
@@ -203,7 +214,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,11 +229,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])  
+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
@@ -241,25 +253,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 +262,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 +282,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 +317,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
@@ -361,19 +349,48 @@ 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
 
-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 +448,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 +468,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 +552,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 +577,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 +638,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
@@ -675,11 +657,12 @@ fi
 
 )
 
-AC_CONFIG_FILES([
-       src/Makefile
-       Makefile
+
+AC_CONFIG_FILES(               \
+       src/Makefile            \
+       Makefile                \
        libratbox.pc
-])
+)
 
 AC_OUTPUT
 
@@ -694,7 +677,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