X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=configure.in;h=fd1a4102f065306d3078efdbbc568dcbdc24d786;hp=c3f297455bd9f532aeaaa454487bd7c7b0ceb571;hb=refs%2Fheads%2Fupstream;hpb=5cfab7033a076117f624b31263dffc5476d9096b diff --git a/configure.in b/configure.in index c3f2974..fd1a410 100644 --- a/configure.in +++ b/configure.in @@ -41,8 +41,8 @@ ac_default_prefix=$unet_cv_prefix dnl Define the input and output configuration header file. AC_CONFIG_HEADER([config.h]) -dnl Demand at least version 2.13 of autoconf -AC_PREREQ(2.13) +dnl Demand at least version 2.59 of autoconf (for AS_HELP_STRING) +AC_PREREQ(2.59) dnl Find out what type of system we are AC_CANONICAL_HOST @@ -52,50 +52,6 @@ AC_PROG_CC dnl ANSIfy the C compiler whenever possible. AM_PROG_CC_STDC -dnl Use -O3 instead of -O2. -if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-O2/-O3/'` -fi -dnl Remove -pipe during configure -if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pipe//g'` -fi -dnl Notice the -g flag and deal accordingly -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-g//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -g was already there, force symbols to be enabled - unet_cv_enable_symbols=yes -fi -dnl Notice the -pg flag and deal accordingly -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pg//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -pg was already there, force profiling to be enabled - unet_cv_enable_profile=yes -fi -dnl Notice the -Wall flag and deal accordingly -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wall//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -Wall was already there, force warnings to be enabled - unet_cv_enable_warnings=yes -fi -dnl Notice the -pedantic flag and deal accordingly -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pedantic//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -pedantic was already there, force pedatic to be enabled - unet_cv_enable_pedantic=yes -fi dnl Checks for libraries. @@ -106,14 +62,9 @@ AC_SEARCH_LIBS(crypt, descrypt crypt, , dnl Do all the checks necessary to figure out -lnsl / -lsocket stuff AC_LIBRARY_NET -dnl Look for res_mkquery. Done after AC_LIBRARY_NET in case res_mkquery -dnl is in one of those libraries somewhere. -AC_SEARCH_LIBS(res_mkquery, resolv, , -[AC_MSG_ERROR([Unable to find library containing res_mkquery()])]) - dnl Checks for header files. AC_HEADER_STDC -AC_CHECK_HEADERS(poll.h sys/devpoll.h sys/epoll.h sys/event.h) +AC_CHECK_HEADERS(crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/resource.h sys/socket.h) dnl Checks for typedefs, structures, and compiler characteristics dnl AC_C_CONST @@ -123,6 +74,34 @@ AC_HEADER_TIME AC_STRUCT_TM AC_TYPE_UID_T unet_CHECK_TYPE_SIZES +AC_CHECK_TYPE(struct sockaddr_in6, [unet_have_sockaddr_in6="yes"], [unet_have_sockaddr_in6="no"], [#include +#include ]) + +dnl Check for socklen_t. In traditional BSD this is an int, but some +dnl OSes use a different type. Test until we find something that will +dnl work properly. Test borrowed from a patch submitted for Python. +AC_CHECK_TYPE([socklen_t], ,[ + AC_MSG_CHECKING([for socklen_t equivalent]) + AC_CACHE_VAL([curl_cv_socklen_t_equiv], + [ +dnl Systems have either "struct sockaddr*" or "void*" as second +dnl arg to getpeername. + curl_cv_socklen_t_equiv= + for arg2 in "struct sockaddr" void ; do + for t in int size_t unsigned long "unsigned long" ; do + AC_TRY_COMPILE([#include +#include +int getpeername (int $arg2 *, $t *);],[$t len; + getpeername(0, 0, &len);], [curl_cv_socklen_t_equiv="$t" + break]) + done + done + ]) + AC_MSG_RESULT($curl_cv_socklen_t_equiv) + AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv, + [type to use in place of socklen_t if not defined])], + [#include +#include]) dnl Checks for library functions. AC_CHECK_FUNCS([kqueue setrlimit getrusage times]) @@ -142,19 +121,39 @@ AC_PROG_LN_S AC_PATH_PROGS(RMPROG, rm, /bin/rm) AC_PATH_PROGS(SHPROG, sh, /bin/sh) +dnl (F)LEX - needed for the new conf file parser +AC_PROG_LEX +dnl The autoconf docs say $LEX defaults to 'lex'. They lie. +if test "$LEX" = ":" ; then + AC_MSG_ERROR([Cannot find flex.]) +elif echo "" | $LEX -V -v --version > /dev/null 2>&1 ; then + : +else + AC_MSG_ERROR([Cannot use $LEX as flex.]) +fi + +dnl YACC - ditto +AC_PROG_YACC +dnl The autoconf docs say $YACC defaults to 'yacc'. This seems to be true, +dnl but judging from AC_PROG_LEX, it may not stay true. +if test "$YACC" = ":" ; then + AC_MSG_ERROR([Cannot find yacc.]) +elif echo "" | $YACC -V -v --version > /dev/null 2>&1 ; then + : +else +dnl byacc does not seem to have any way to test for workingness, so only warn. + AC_MSG_WARN([$YACC may not work as yacc.]) +fi + unet_NONBLOCKING unet_SIGNALS -dnl Add -pipe when possible -unet_PIPE_CFLAGS - dnl Check OS for os_dep files. AC_MSG_CHECKING(for OS-dependent information) case "$host" in *-linux*) AC_MSG_RESULT([Linux ($host) found.]) unet_poll_syscall=yes - OSDEP_C=os_linux.c ;; *-solaris*) @@ -164,13 +163,12 @@ case "$host" in else unet_poll_syscall=no fi - OSDEP_C=os_solaris.c + AC_DEFINE([IRCU_SOLARIS], 1, [Define if building on Solaris]) ;; *-sunos*) AC_MSG_RESULT([Solaris ($host) found.]) unet_poll_syscall=no - OSDEP_C=os_solaris.c ;; *-openbsd*) @@ -180,7 +178,6 @@ case "$host" in else unet_poll_syscall=no fi - OSDEP_C=os_openbsd.c ;; *-*bsd*) @@ -190,23 +187,19 @@ case "$host" in else unet_poll_syscall=no fi - OSDEP_C=os_bsd.c ;; *-darwin*) AC_MSG_RESULT([Darwin (Mac OS X) ($host) found.]) unet_poll_syscall=no - OSDEP_C=os_bsd.c ;; *) AC_MSG_RESULT([Unknown system type $host found.]) AC_MSG_WARN([Unknown OS type; using generic routines.]) unet_poll_syscall=no - OSDEP_C=os_generic.c ;; esac -AC_SUBST(OSDEP_C) dnl Check user configuration options dnl Start with --enable-poll @@ -226,7 +219,7 @@ fi AC_MSG_RESULT([$unet_cv_enable_poll]) if test x"$unet_cv_enable_poll" = xyes; then - AC_DEFINE([USE_POLL], , [Specify whether or not to use poll()]) + AC_DEFINE([USE_POLL], 1, [Specify whether or not to use poll()]) ENGINE_C=engine_poll.c else ENGINE_C=engine_select.c @@ -243,7 +236,7 @@ AC_ARG_ENABLE([debug], AC_MSG_RESULT([$unet_cv_enable_debug]) if test x"$unet_cv_enable_debug" = xyes; then - AC_DEFINE([DEBUGMODE], , [Enable debugging code]) + AC_DEFINE([DEBUGMODE], 1, [Enable debugging code]) fi dnl Now look for --enable-leak-detect @@ -263,6 +256,15 @@ if test x"$unet_cv_with_leak_detect" != xno; then fi fi +AC_ARG_WITH([ipv6], + AS_HELP_STRING([--without-ipv6], [disable IPv6 support (default is autodetect)]), + [ac_cv_use_ipv6=$withval], + [ac_cv_use_ipv6=$unet_have_sockaddr_in6]) +AC_CACHE_CHECK([whether to use IPv6], [ac_cv_use_ipv6], [ac_cv_use_ipv6=no]) +if test x"$ac_cv_use_ipv6" != "xno" ; then + AC_DEFINE([IPV6], 1, [Enable IPv6 support]) +fi + dnl And now for --disable-asserts AC_MSG_CHECKING([whether to enable asserts]) AC_ARG_ENABLE([asserts], @@ -273,26 +275,13 @@ AC_ARG_ENABLE([asserts], AC_MSG_RESULT([$unet_cv_enable_asserts]) if test x"$unet_cv_enable_asserts" = xno; then - AC_DEFINE([NDEBUG], , [Disable assertions]) -fi - -dnl Check for --enable-symbols -AC_MSG_CHECKING([whether to enable debugging symbols]) -AC_ARG_ENABLE([symbols], -[ --disable-symbols Disable debugging symbols (remove -g from CFLAGS)], -[unet_cv_enable_symbols=$enable_symbols], -[AC_CACHE_VAL(unet_cv_enable_symbols, -[unet_cv_enable_symbols=yes])]) -AC_MSG_RESULT([$unet_cv_enable_symbols]) - -if test x"$unet_cv_enable_symbols" = xyes; then - CFLAGS="-g $CFLAGS" + AC_DEFINE([NDEBUG], 1, [Disable assertions]) fi dnl Now check for --enable-profile AC_MSG_CHECKING([whether to enable profiling support (gprof)]) AC_ARG_ENABLE([profile], -[ --enable-profile Enable profiling support (add -pg to CFLAGS)], +[ --enable-profile Enable profiling support (add -pg to CFLAGS and LDFLAGS)], [unet_cv_enable_profile=$enable_profile], [AC_CACHE_VAL(unet_cv_enable_profile, [unet_cv_enable_profile=no])]) @@ -300,6 +289,7 @@ AC_MSG_RESULT([$unet_cv_enable_profile]) if test x"$unet_cv_enable_profile" = xyes; then CFLAGS="-pg $CFLAGS" + LDFLAGS="-pg $LDFLAGS" fi dnl Now check for --enable-pedantic @@ -338,7 +328,7 @@ AC_ARG_ENABLE([inlines], AC_MSG_RESULT([$unet_cv_enable_inlines]) if test x"$unet_cv_enable_inlines" = xyes; then - AC_DEFINE([FORCEINLINE], , [Force inlining for a few critical functions]) + AC_DEFINE([FORCEINLINE], 1, [Force inlining for a few critical functions]) fi dnl --disable-devpoll check... @@ -356,7 +346,7 @@ fi AC_MSG_RESULT([$unet_cv_enable_devpoll]) if test x"$unet_cv_enable_devpoll" != xno; then - AC_DEFINE([USE_DEVPOLL], , [Define to enable the /dev/poll engine]) + AC_DEFINE([USE_DEVPOLL], 1, [Define to enable the /dev/poll engine]) ENGINE_C="engine_devpoll.c $ENGINE_C" fi @@ -375,7 +365,7 @@ fi AC_MSG_RESULT([$unet_cv_enable_kqueue]) if test x"$unet_cv_enable_kqueue" != xno; then - AC_DEFINE([USE_KQUEUE], , [Define to enable the kqueue engine]) + AC_DEFINE([USE_KQUEUE], 1, [Define to enable the kqueue engine]) ENGINE_C="engine_kqueue.c $ENGINE_C" fi @@ -400,38 +390,29 @@ if test x"$unet_cv_enable_epoll" != xno; then AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], [epoll_create(10);])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) - AC_DEFINE([EPOLL_NEED_BODY],,[Define to implement epoll system calls])]) - AC_DEFINE([USE_EPOLL], , [Define to enable the epoll engine]) + AC_DEFINE([EPOLL_NEED_BODY], 1, [Define to implement epoll system calls])]) + AC_DEFINE([USE_EPOLL], 1, [Define to enable the epoll engine]) ENGINE_C="engine_epoll.c $ENGINE_C" fi -dnl --disable-adns check... -AC_MSG_CHECKING([whether to enable the adns resolver engine]) -AC_ARG_ENABLE([adns], -[ --disable-adns Disable adns resolver], -[unet_cv_enable_adns=$enable_adns], -[AC_CACHE_VAL(unet_cv_enable_adns, -[unet_cv_enable_adns=yes])]) - -AC_MSG_RESULT([$unet_cv_enable_adns]) - -if test x"$unet_cv_enable_adns" != xno; then - AC_DEFINE([USE_ADNS], , [Define to enable the adns resolver]) - AC_CONFIG_SUBDIRS([adns]) - RES_C="res_adns.c" - LIBS="../adns/src/libadns.a $LIBS" - ADNS_SUBDIR="adns" -else - RES_C="res_libresolv.c" - ADNS_SUBDIR="" +dnl How to copy one va_list to another? +AC_CACHE_CHECK([for va_copy], unet_cv_c_va_copy, [AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include ], [va_list ap1, ap2; va_copy(ap1, ap2);])], + [unet_cv_c_va_copy="yes"], + [unet_cv_c_va_copy="no"] +)]) +if test "$unet_cv_c_va_copy" = "yes" ; then + AC_DEFINE(HAVE_VA_COPY, 1, [Define if we have va_copy]) +fi - dnl Look for res_mkquery. Done after AC_LIBRARY_NET in case res_mkquery - dnl is in one of those libraries somewhere. - AC_SEARCH_LIBS(res_mkquery, resolv, , - [AC_MSG_ERROR([Unable to find library containing res_mkquery()])]) +AC_CACHE_CHECK([for __va_copy], unet_cv_c___va_copy, [AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include ], [va_list ap1, ap2; __va_copy(ap1, ap2);])], + [unet_cv_c___va_copy="yes"], + [unet_cv_c___va_copy="no"] +)]) +if test "$unet_cv_c___va_copy" = "yes" ; then + AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy]) fi -AC_SUBST(RES_C) -AC_SUBST(ADNS_SUBDIR) dnl --with-symlink lets us set the name of the symlink; defaults to "ircd" AC_MSG_CHECKING([what name to give the symlink]) @@ -721,7 +702,12 @@ AC_ARG_WITH([maxcon], [unet_cv_with_maxcon=$unet_maxcon])]) if test x"$unet_cv_with_maxcon" = xyes -o x"$unet_cv_with_maxcon" = xno; then + if test "$unet_maxcon" -lt 32; then + AC_MSG_ERROR([Maximum connections (number of open files minus 4) must be at least 32.]) + fi unet_cv_with_maxcon=$unet_maxcon +elif test "$unet_cv_with_maxcon" -lt 32; then + AC_MSG_ERROR([Maximum connections (--with-maxcon) must be at least 32.]) fi AC_MSG_RESULT([$unet_cv_with_maxcon]) @@ -729,8 +715,55 @@ AC_MSG_RESULT([$unet_cv_with_maxcon]) AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $unet_cv_with_maxcon, [Maximum number of network connections]) +unet_cv_enable_gnutls="no" +unet_cv_enable_openssl="yes" + +AC_MSG_CHECKING([for GnuTLS]) +AC_ARG_ENABLE([gnutls], + [ --enable-gnutls Enables GnuTLS ssl backend.], + [unet_cv_enable_gnutls=$enable_gnutls], +) +AC_MSG_RESULT([$unet_cv_enable_gnutls]) + +AC_MSG_CHECKING([for OpenSSL]) +AC_ARG_ENABLE([openssl], + [ --enable-openssl Enables OpenSSL ssl backend.], + [unet_cv_enable_openssl=$enable_openssl], +) +AC_MSG_RESULT([$unet_cv_enable_openssl]) + +if test x"$unet_cv_enable_gnutls" = xyes; then + unet_cv_enable_gnutls="no"; + AC_CHECK_LIB(gnutls, gnutls_init, [ + AC_CHECK_HEADERS(gnutls/gnutls.h, [ + unet_cv_enable_gnutls="yes"; + ]) + ]) +fi + +if test x"$unet_cv_enable_openssl" = xyes; then + unet_cv_enable_openssl="no"; + AC_CHECK_LIB(ssl, SSL_read, [ + AC_CHECK_LIB(crypto, X509_new, [ + AC_CHECK_HEADERS(openssl/ssl.h openssl/err.h, [ + unet_cv_enable_openssl="yes"; + ]) + ]) + ]) +fi + +if test x"$unet_cv_enable_gnutls" = xyes; then + LIBS="$LIBS -lgnutls" + AC_DEFINE([HAVE_GNUTLS], 1, [Define if you are using GnuTLS]) +fi + +if test x"$unet_cv_enable_openssl" = xyes ; then + LIBS="$LIBS -lssl -lcrypto" + AC_DEFINE([HAVE_OPENSSL], 1, [Define if you are using OpenSSL]) +fi + dnl Finally really generate all output files: -AC_OUTPUT(Makefile ircd/Makefile doc/Makefile, [echo timestamp > stamp-h]) +AC_OUTPUT(Makefile ircd/Makefile ircd/test/Makefile, [echo timestamp > stamp-h]) dnl Report configuration AC_OUTPUT_COMMANDS([echo " @@ -742,18 +775,19 @@ ircu is now hopefully configured for your system. Warnings: $unet_cv_enable_warnings Debug: $unet_cv_enable_debug Profile: $unet_cv_enable_profile - Head-in-sand: $unet_cv_enable_headinsand - ADNS: $unet_cv_enable_adns Owner/mode: $unet_cv_with_owner.$unet_cv_with_group ($unet_cv_with_mode) Chroot: $unet_cv_with_chroot - + OpenSSL: $unet_cv_enable_openssl + GnuTLS: $unet_cv_enable_gnutls + Domain: $unet_cv_with_domain DPath: $unet_cv_with_dpath CPath: $unet_cv_with_cpath LPath: $unet_cv_with_lpath Maximum connections: $unet_cv_with_maxcon - + poll() engine: $unet_cv_enable_poll kqueue() engine: $unet_cv_enable_kqueue /dev/poll engine: $unet_cv_enable_devpoll + epoll() engine: $unet_cv_enable_epoll "])