X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/1e320728f3b0c49c6dfdd42ee6ae99d6478bdb77..7b52cd51d5ec1d1ca0b6f1a79d99d7b4f0dd67aa:/libratbox/configure.ac diff --git a/libratbox/configure.ac b/libratbox/configure.ac index fe64285..599e1f7 100644 --- a/libratbox/configure.ac +++ b/libratbox/configure.ac @@ -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 #endif @@ -157,8 +145,31 @@ AC_CHECK_TYPE(socklen_t, , #ifdef HAVE_WINSOCK2_H #include #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 +#include ]) + +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 ' >> $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 @@ -679,6 +661,7 @@ fi 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