]> jfr.im git - solanum.git/blobdiff - configure.ac
Test some edge cases of valid_temp_time
[solanum.git] / configure.ac
index 24fc5406e8b2344d7d9dc73bbde71c14b6fbac08..4906ff6fc6bc3b1608e6e33a9209c83f7beacfc6 100644 (file)
@@ -4,33 +4,35 @@ dnl said functions need to be just about as complex as they already are.
 
 AC_PREREQ(2.60)
 
-AC_INIT([charybdis], [3.6.0-dev])
+AC_INIT([solanum], [1.0-dev])
 
 AC_LANG(C)
-AC_PROG_CC_C99
 AC_USE_SYSTEM_EXTENSIONS
 AC_GNU_SOURCE
 
+AC_PROG_CC_C99
+
+if test x"$ac_cv_prog_cc_c99" = "xno"; then
+       AC_ERROR([solanum requires a C99 capable compiler])
+fi
+
 AC_PREFIX_DEFAULT($HOME/ircd)
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_HEADER(include/setup.h)
-AC_CONFIG_SUBDIRS([libratbox])
+
+AC_CONFIG_SUBDIRS([librb])
 AC_CONFIG_AUX_DIR([libltdl/config])
-AC_CONFIG_MACRO_DIR([libltdl/m4])
 
 AM_INIT_AUTOMAKE([subdir-objects])
 AM_SILENT_RULES([yes])
 AM_PROG_AR
 
 LT_INIT([dlopen disable-static])
-LT_CONFIG_LTDL_DIR([extra/libltdl])
+LT_CONFIG_LTDL_DIR([libltdl])
 LTDL_INIT
 
 build_ltdl=$with_included_ltdl
-if test x"$build_ltdl" = x"yes"; then
-       AM_CONDITIONAL([BUILD_LTDL], [1])
-       AC_CONFIG_SUBDIRS([libltdl])
-fi
+AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"])
 
 if test "$ac_cv_c_compiler_gnu" = yes; then
        IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall"
@@ -101,7 +103,8 @@ AS_IF([test "x$enable_fhs_paths" = "xyes"],
        pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}'
        rundir=${rundir-'${prefix}/run'}
        pkgrundir='${rundir}/${PACKAGE_TARNAME}'
-       pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}'],
+       pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}'
+       AC_DEFINE([ENABLE_FHS_PATHS], [1], [Uncomment if FHS pathnames are enabled])],
        [libexecdir='${bindir}'
        pkglibexecdir='${libexecdir}'
        rundir='${sysconfdir}'
@@ -119,6 +122,7 @@ AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IR
 
 dnl Checks for header files.
 AC_HEADER_STDC
+AC_HEADER_STDBOOL
 
 AC_CHECK_HEADERS([crypt.h sys/resource.h sys/param.h errno.h sys/syslog.h stddef.h sys/wait.h wait.h sys/epoll.h sys/uio.h machine/endian.h])
 
@@ -139,22 +143,13 @@ AC_CHECK_SIZEOF(long long)
 dnl Networking Functions
 dnl ====================
 
-AC_SEARCH_LIBS(socket, socket, , [AC_MSG_ERROR([You have no socket()! Aborting.])])
+AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])])
 
 dnl SunOS/Solaris required libnsl for inet_ntoa()
 if test x"$SUN" = xyes; then
        AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
 fi
 
-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.])],
-[#include <sys/types.h>
-#include <sys/socket.h>])
-
-AC_ARG_ENABLE(ipv6,
-AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
-
 AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
 
 CRYPT_LIB=$ac_cv_search_crypt
@@ -167,111 +162,14 @@ fi
 
 AC_SUBST(CRYPT_LIB)
 
-if test "$ac_cv_header_sys_wait_h" = yes -o "$ac_cv_header_wait_h" = yes; then
-       VICONF=viconf
-       dnl We need one of the above to build viconf. Just a sanity check,
-       dnl we don't want to stop people from building the rest of ircd
-       dnl just because they can't build viconf.
-else
-       VICONF=""
-fi
-
-AC_SUBST(VICONF)
-
-dnl See whether we can include both string.h and strings.h.
-AC_CACHE_CHECK([whether string.h and strings.h may both be included],
-gcc_cv_header_string,
-[
-       AC_COMPILE_IFELSE(
-       [#include <string.h>
-       #include <strings.h>], 
-       [gcc_cv_header_string=yes],
-       [gcc_cv_header_string=no])
-])
-
-if test "$gcc_cv_header_string" = "yes"; then
-       AC_DEFINE(STRING_WITH_STRINGS, 1, [Define to 1 if string.h may be included along with strings.h])
-fi
-
 AC_C_BIGENDIAN
 
 dnl Check for stdarg.h - if we can't find it, halt configure
-AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])])
-
-dnl Checks for the existence of strlcat, strlcpy, basename...
-dnl This more reliable test only works with gcc though.
-
-if test "$ac_cv_c_compiler_gnu" = yes; then
-
-AC_MSG_CHECKING(for strlcpy)
-save_CFLAGS=$CFLAGS
-CFLAGS="$CFLAGS -Wimplicit -Werror"
-
-AC_LINK_IFELSE(
-       [AC_LANG_PROGRAM(
-               [[#include <string.h>
-               #include <stdlib.h>]],
-               [[char *a = malloc(6);
-               strlcpy(a, "hello", 6);]]
-       )],
-       [AC_MSG_RESULT(yes)
-       AC_DEFINE(HAVE_STRLCPY, 1, [Define if strlcpy is available (most BSDs.)])],
-       [AC_MSG_RESULT(no)]
-)
-
-AC_MSG_CHECKING(for strlcat)
-AC_LINK_IFELSE(
-       [AC_LANG_PROGRAM(
-               [[#include <string.h>
-               #include <stdlib.h>]],
-               [[char *a = malloc(6);
-               a[0] = '\0';
-               strlcat(a, "hello", 6);]]
-       )],
-       [AC_MSG_RESULT(yes)
-       AC_DEFINE(HAVE_STRLCAT, 1, [Define if strlcat is available (most BSDs.)])],
-       [AC_MSG_RESULT(no)]
-)
-
-CFLAGS=$save_CFLAGS
-
-else
-
-dnl Better than nothing. The more complicated test above probably fixes powerpc,
-dnl so who cares.
-
+AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - solanum will not compile without it **])])
 AC_CHECK_FUNCS([strlcat strlcpy])
 
-fi
-
-AC_CHECK_TYPE([u_int32_t], [],
-[
-       AC_CHECK_TYPE([uint32_t],
-       [
-               AC_DEFINE(u_int32_t, [uint32_t], [If system does not define u_int32_t, define a reasonable substitute.])
-       ],
-       [
-               AC_MSG_WARN([system has no u_int32_t or uint32_t, default to unsigned long int])
-               AC_DEFINE(u_int32_t, [unsigned long int], [If system does not define u_int32_t, define to unsigned long int here.])
-       ])
-])
-
-AC_CHECK_TYPE([u_int16_t], [],
-[
-       AC_CHECK_TYPE([uint16_t],
-       [
-               AC_DEFINE(u_int16_t, [uint16_t], [If system does not define u_int16_t, define a usable substitute])
-       ],
-       [
-               AC_MSG_WARN([system has no u_int16_t or uint16_t, default to unsigned short int])
-               AC_DEFINE(u_int16_t, [unsigned short int], [If system does not define u_int16_t, define a usable substitute.])
-       ])
-])
-
-AC_CHECK_TYPE([in_port_t], [],
-[AC_DEFINE(in_port_t, [u_int16_t], [If system does not define in_port_t, define it to what it should be.])],
-[[#include <sys/types.h>
-#include <netinet/in.h>]])
+AC_TYPE_INT16_T
+AC_TYPE_INT32_T
 
 AC_CHECK_TYPE([sa_family_t], [],
 [AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])],
@@ -281,22 +179,22 @@ AC_CHECK_TYPE([sa_family_t], [],
 AC_CHECK_TYPES([uintptr_t])
 
 dnl check for various functions...
-AC_CHECK_FUNCS([socketpair vsnprintf mmap gettimeofday strdup strndup ])
+AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
 
 AC_FUNC_ALLOCA
 
 dnl Specialized functions checks
 dnl ============================
 
-dnl check for nanosleep          
+dnl check for nanosleep
 AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
                  LIBS="${LIBS} -lrt",
                  [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
                  )])])
 if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno  && test x$ac_cv_lib_rt_nanosleep = xno
-then     
+then
          AC_MSG_RESULT("nanosleep not found..using select for delay")
-else     
+else
         AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
 fi
 
@@ -370,11 +268,11 @@ if test "$cf_enable_openssl" != no; then
        dnl Check OpenSSL version (must be 0.9.6 or above!)
        AC_MSG_CHECKING(for OpenSSL 0.9.6 or above)
        AC_RUN_IFELSE(
-               AC_LANG_PROGRAM(
+               [AC_LANG_PROGRAM(
                [#include <openssl/opensslv.h>
                #include <stdlib.h>],
                [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
-               exit(0); else exit(1);]]),
+               exit(0); else exit(1);]])],
        cf_openssl_version_ok=yes,
        cf_openssl_version_ok=no,
        cf_openssl_version_ok=no)
@@ -384,7 +282,7 @@ if test "$cf_enable_openssl" != no; then
 
                dnl Work around pmake/gmake conditional incompatibilities
                AC_SUBST(ENCSPEED, encspeed)
-               
+
                dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
                CPPFLAGS="$CPPFLAGS $SSL_LIBS"
                AC_CHECK_LIB(crypto, RSA_free)
@@ -404,90 +302,54 @@ dnl End OpenSSL detection
 dnl Specialized functions and libraries
 dnl ===================================
 
-AC_ARG_WITH(zlib-path,
-AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]),
+AC_ARG_ENABLE(hyperscan,
+AC_HELP_STRING([--disable-hyperscan],[Disable hyperscan support]),
+[hyperscan=$enableval],[hyperscan=yes])
+
+AS_IF([test "$hyperscan" = yes], [
+       save_CPPFLAGS="$CPPFLAGS"
+       save_LIBS="$LIBS"
+       PKG_CHECK_MODULES([HS], [libhs >= 4], [], [hyperscan=no])
+       CPPFLAGS="$CPPFLAGS $HS_CFLAGS"
+       LIBS="$LIBS $HS_LIBS"
+       AC_CHECK_HEADER([hs_common.h], [], [hyperscan=no])
+       AC_CHECK_FUNC([hs_scan], [], [hyperscan=no])
+])
+
+AS_IF([test "$hyperscan" = no], [
+       CPPFLAGS="$save_CPPFLAGS"
+       LIBS="$save_LIBS"
+])
+
+AM_CONDITIONAL([HAVE_HYPERSCAN], [test "$hyperscan" = "yes"])
+
+
+AC_ARG_WITH(sctp-path,
+AC_HELP_STRING([--with-sctp-path=DIR],[Path to libsctp.so for SCTP support.]),
 [LIBS="$LIBS -L$withval"],)
 
-AC_ARG_ENABLE(zlib,
-AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
-[zlib=$enableval],[zlib=yes])
+AC_ARG_ENABLE(sctp,
+AC_HELP_STRING([--disable-sctp],[Disable SCTP support]),
+[sctp=$enableval],[sctp=yes])
 
-if test "$zlib" = yes; then
+if test "$sctp" = yes; then
 
-AC_CHECK_HEADER(zlib.h, [
-       AC_CHECK_LIB(z, zlibVersion,
+AC_CHECK_HEADER(netinet/sctp.h, [
+       AC_CHECK_LIB(sctp, sctp_bindx,
        [
-               AC_SUBST(ZLIB_LD, -lz)
-               AC_DEFINE(HAVE_LIBZ, 1, [Define to 1 if zlib (-lz) is available.])
-       ], zlib=no)
-], zlib=no)
+               AC_SUBST(LIBSCTP_LD, -lsctp)
+               AC_DEFINE(HAVE_LIBSCTP, 1, [Define to 1 if libsctp (-lsctp) is available.])
+       ], sctp=no)
+], sctp=no)
 
 fi
 
 dnl Check for shared sqlite
 dnl ======================
-AC_ARG_WITH(shared-sqlite,
-AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]),
-[shared_sqlite=$withval],[shared_sqlite=no])
-
-if test "$shared_sqlite" = yes; then
-       PKG_CHECK_MODULES(SQLITE, [sqlite3],
-       [
-               shared_sqlite=yes
-       ], shared_sqlite=no)
-fi
-
-if test "$shared_sqlite" = no; then
-       SQLITE_OBJ='sqlite3.$(OBJEXT)'
-fi
+PKG_CHECK_MODULES(SQLITE, [sqlite3], [], AC_ERROR([sqlite3 is required]))
 
 AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
 AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
-AC_SUBST(SQLITE_OBJ)
-
-dnl IO Loop Selection
-dnl =================
-
-AC_ARG_ENABLE(ports, AC_HELP_STRING([--enable-ports],[Force solaris I/O ports subsystem usage.]),
-[ if test $enableval = yes; then 
-       SELECT_TYPE_EXPLICIT="ports"
-  else
-       use_ports=no
-  fi
-],)
-
-AC_ARG_ENABLE(poll, AC_HELP_STRING([--enable-poll],[Force poll() usage.]),
-[ if test $enableval = yes; then 
-       SELECT_TYPE_EXPLICIT="poll"
-  else
-       use_poll=no
-  fi
-],)
-
-AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select],[Force select() usage.]),
-[ if test $enableval = yes; then 
-       SELECT_TYPE_EXPLICIT="select" 
-  else
-       use_select=no
-  fi
-],)
-
-AC_ARG_ENABLE(kqueue, AC_HELP_STRING([--enable-kqueue],[Force kqueue() usage.]),
-[ if test $enableval = yes; then 
-       SELECT_TYPE_EXPLICIT="kqueue"
-  else
-       use_kqueue=no
-  fi
-],)
-
-AC_ARG_ENABLE(epoll, AC_HELP_STRING([--enable-epoll],[Force sys_epoll usage (Linux only).]),
-[ if test $enableval = yes; then 
-       SELECT_TYPE_EXPLICIT="epoll"
-       AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], [haveepoll=no])
-  else
-       use_epoll=no
-  fi
-],)
 
 dnl **********************************************************************
 dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
@@ -505,7 +367,7 @@ dnl Check for --with-logdir
 dnl **********************************************************************
 
 AC_MSG_CHECKING([whether to modify logdir])
-AC_ARG_WITH(logdir, 
+AC_ARG_WITH(logdir,
 AC_HELP_STRING([--with-logdir=DIR],
               [Directory where to write logfiles.]),
               [ logdir=`echo $withval | sed 's/\/$//'`
@@ -522,7 +384,7 @@ dnl Check for --with-helpdir
 dnl **********************************************************************
 
 AC_MSG_CHECKING([whether to modify helpdir])
-AC_ARG_WITH(helpdir, 
+AC_ARG_WITH(helpdir,
 AC_HELP_STRING([--with-helpdir=DIR],
               [Directory to install help files.]),
               [ helpdir=`echo $withval | sed 's/\/$//'`
@@ -539,7 +401,7 @@ dnl Check for --with-moduledir
 dnl **********************************************************************
 
 AC_MSG_CHECKING([whether to modify moduledir])
-AC_ARG_WITH(moduledir, 
+AC_ARG_WITH(moduledir,
        [AC_HELP_STRING([--with-moduledir=DIR],
               [Directory to install modules.])],
               [ moduledir=`echo $withval | sed 's/\/$//'`
@@ -610,115 +472,18 @@ if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
        AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
 fi
 
-if test ! -z "$SELECT_TYPE_EXPLICIT"; then
-       SELECT_TYPE="$SELECT_TYPE_EXPLICIT";
-       echo "Forcing $SELECT_TYPE to be enabled"
-else
-
-if test ! "x$use_ports" = "xno"; then
-       AC_CHECK_FUNCS(port_getn, [haveports=yes], [haveports=no])
-       if test "x$haveports" = "xyes" ; then
-               SELECT_TYPE="ports"
-       fi
-fi
-
-if test ! "x$use_select" = "xno"; then
-       AC_CHECK_FUNCS(select, [haveselect=yes], [haveselect=no])
-       if test "x$haveselect" = "xyes" ; then
-               SELECT_TYPE="select"
-       fi
-fi
-
-if test ! "x$use_poll" = "xno"; then
-       AC_CHECK_FUNCS(poll, [havepoll=yes], [havepoll=no])
-       if test "x$havepoll" = "xyes" ; then
-               SELECT_TYPE="poll"
-       fi
-fi
-
-if test ! "x$use_kqueue" = "xno"; then
-       AC_CHECK_FUNCS(kevent, [havekqueue=yes], [havekqueue=no])
-       if test "x$havekqueue" = "xyes" ; then
-               SELECT_TYPE="kqueue"
-       fi
-fi
-
-if test ! "x$use_epoll" = "xno"; then
-       AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], [haveepoll=no])
-       if test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
-               if test "x$haveepoll" = "xyes" ; then
-                       AC_MSG_CHECKING(for epoll support in kernel)
-                       AC_TRY_RUN(
-#include <stdint.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/epoll.h>
-#include <sys/syscall.h>
-#include <unistd.h>     
-
-int
-main(int argc, char **argv)
-{
-        int epfd;
-
-        epfd = epoll_create(256);
-        return (epfd == -1 ? 1 : 0);
-}, [AC_MSG_RESULT(yes)
-           AC_DEFINE(HAVE_EPOLL, 1,
-               [Define if your system supports the epoll system calls])
-           SELECT_TYPE="epoll"], 
-           AC_MSG_RESULT(no), AC_MSG_RESULT(no))
-               fi
-       fi
-
-haveepollsyscall=no
-
-if test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
-       if test "x$haveepoll" = "xno" ; then
-                AC_MSG_CHECKING(for epoll system call)
-                AC_TRY_RUN(
-#include <stdint.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/epoll.h>
-#include <sys/syscall.h>
-#include <unistd.h>     
-
-int
-epoll_create(int size)
-{
-        return (syscall(__NR_epoll_create, size));
-}
-int
-main(int argc, char **argv)
-{
-        int epfd;
-
-        epfd = epoll_create(256);
-        exit (epfd == -1 ? 1 : 0);
-}, [AC_MSG_RESULT(yes)
-    AC_DEFINE(HAVE_EPOLL, 1,
-        [Define if your system supports the epoll system calls])
-    SELECT_TYPE="epoll"], 
-    AC_MSG_RESULT(no), AC_MSG_RESULT(no))
-       fi
-fi
-
-fi
+dnl **********************************************************************
+dnl Enable oper chghost
+dnl **********************************************************************
 
-fi
+AC_ARG_ENABLE(oper-chghost,
+AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
+[operchghost=$enableval],[operchghost=no])
 
-if test -z "$SELECT_TYPE"; then
-       AC_MSG_ERROR([Unable to find a usable IO interface],)
+if test "$operchghost" = yes; then
+       AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.])
 fi
 
-echo "Using $SELECT_TYPE for select loop."
-
-AC_DEFINE_UNQUOTED(SELECT_TYPE, "$SELECT_TYPE", [This is the type of IO loop we are using])
-AC_SUBST(SELECT_TYPE)
-
-
 dnl Debug-related options
 dnl =====================
 
@@ -735,19 +500,6 @@ elif test "$assert" = yes; then
        assert = "hard";
 fi
 
-AC_MSG_CHECKING(if you want IO Debugging hooks)
-AC_ARG_ENABLE(iodebug,
-AC_HELP_STRING([--enable-iodebug],[Enable IO Debugging hooks]),
-[iodebug=$enableval], [iodebug=no])
-
-if test "$iodebug" = yes; then
-       AC_DEFINE(USE_IODEBUG_HOOKS, 1, [Define this to enable IO Debug hooks.])
-       AC_MSG_RESULT(yes)
-else
-       AC_MSG_RESULT(no)
-fi
-
-
 AC_MSG_CHECKING(if you want to do a profile build)
 AC_ARG_ENABLE(profile,
 AC_HELP_STRING([--enable-profile],[Enable profiling]),
@@ -757,7 +509,7 @@ if test "$profile" = yes; then
        if test "$ac_cv_c_compiler_gnu" = yes; then
                IRC_CFLAGS="$IRC_CFLAGS -pg"
                AC_MSG_RESULT([yes, adding -pg])
-               AC_DEFINE(CHARYBDIS_PROFILE, 1, [Define this if you are profiling.])
+               AC_DEFINE(SOLANUM_PROFILE, 1, [Define this if you are profiling.])
        else
                AC_MSG_RESULT([no, profile builds only work with gcc])
        fi
@@ -765,63 +517,29 @@ 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(small-net,
-AC_HELP_STRING([--enable-small-net],[Enable small network support.]),
-[small_net=$enableval], [small_net=no])
-
-if test "$small_net" = yes; then
-dnl    AC_DEFINE([HASHSIZE], 4096, [Max number of buckets in hash tables.])
-       AC_DEFINE([NICKNAMEHISTORYLENGTH], 1500, [Size of the WHOWAS array.])
-       AC_DEFINE([CHANNEL_HEAP_SIZE], 256, [Size of the channel heap.])
-       AC_DEFINE([BAN_HEAP_SIZE], 128, [Size of the ban heap.])
-       AC_DEFINE([CLIENT_HEAP_SIZE], 256, [Size of the client heap.])
-       AC_DEFINE([LCLIENT_HEAP_SIZE], 128, [Size of the local client heap.])
-       AC_DEFINE([PCLIENT_HEAP_SIZE], 32, [Size of the pre-client heap.])
-       AC_DEFINE([USER_HEAP_SIZE], 128, [Size of the user heap.])
-       AC_DEFINE([DNODE_HEAP_SIZE], 256, [Size of the dlink_node heap.])
-       AC_DEFINE([TOPIC_HEAP_SIZE], 256, [Size of the topic heap.])
-       AC_DEFINE([LINEBUF_HEAP_SIZE], 128, [Size of the linebuf heap.])
-       AC_DEFINE([MEMBER_HEAP_SIZE], 256, [Sizeof member heap.])
-       AC_DEFINE([ND_HEAP_SIZE], 128, [Size of the nick delay heap.])
-       AC_DEFINE([CONFITEM_HEAP_SIZE], 128, [Size of the confitem heap.])
-       AC_DEFINE([MONITOR_HEAP_SIZE], 128, [Size of the monitor heap.])
-       AC_DEFINE([FD_HEAP_SIZE], 128, [Size of fd heap.])
-       AC_DEFINE([AWAY_HEAP_SIZE], 128, [Size of away heap.])
-else
-dnl These settings are for a large network like efnet..they will use lots of memory
-dnl so enable small net unless you really need this much support
-        AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
-        AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
-        AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
-        AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
-        AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
-       AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
-        AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
-        AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
-        AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
-        AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
-        AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
-        AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
-        AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
-       AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
-       AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
-       AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
-fi
+AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
+AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
+AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
+AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
+AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
+AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
+AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
+AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
+AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
+AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
+AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
+AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
+AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
+AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
+AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
+AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
 
 AC_ARG_WITH(nicklen,
 AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
 [
-  if ! expr "$withval" + 0 >/dev/null 2>&1; then 
+  if ! expr "$withval" + 0 >/dev/null 2>&1; then
        AC_ERROR([NICKLEN must be a numeric value])
-  fi 
+  fi
   if test $withval -gt 50; then
        NICKLEN=50
        AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
@@ -833,10 +551,10 @@ AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGT
   fi
 ], [NICKLEN=31])
 
-AC_ARG_WITH(topiclen,           
+AC_ARG_WITH(topiclen,
 AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
 [
- if test $withval -ge 390; then
+ if test $withval -gt 390; then
        TOPICLEN=390
        AC_MSG_WARN([TOPICLEN has a hard limit of 390. Setting TOPICLEN=390])
  else
@@ -847,11 +565,19 @@ AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (def
 AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
 AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
 
-# rpath, for finding libratbox.so at run time
+
+AC_ARG_WITH(asan,
+AC_HELP_STRING([--with-asan],[Build with Address Sanitizer]),
+[
+    CFLAGS="$CFLAGS -fsanitize=address"
+    LDFLAGS="$LDFLAGS -fsanitize=address"
+])
+
+# rpath, for finding librb.so at run time
 hold_ldflags=$LDFLAGS
 AC_MSG_CHECKING(for the ld -rpath flag)
 LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
-AC_LINK_IFELSE(AC_LANG_PROGRAM([],[int i;]), found=yes, found=no)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no)
 LDFLAGS=$hold_ldflags
 AC_MSG_RESULT($found)
 if test "$found" = yes; then
@@ -868,26 +594,26 @@ AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]
 IRC_CFLAGS="$IRC_CFLAGS -O0"
 CFLAGS="$IRC_CFLAGS"
 
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wall], charybdis_cv_c_gcc_w_all)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wpointer-arith], charybdis_cv_c_gcc_w_pointer_arith)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], charybdis_cv_c_gcc_w_implicit)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-align], charybdis_cv_c_gcc_w_cast_align)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-qual], charybdis_cv_c_gcc_w_cast_qual)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wwrite-strings], charybdis_cv_c_gcc_w_write_strings)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], charybdis_cv_c_gcc_w_error_implicit_function_declaration)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], charybdis_cv_c_gcc_prototypes)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wparenthesis], charybdis_cv_c_gcc_parenthesis)
-CHARYBDIS_C_GCC_TRY_FLAGS([-W -Wno-unused], charybdis_cv_c_gcc_w)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wextra], charybdis_cv_c_gcc_w_extra)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wshadow], charybdis_cv_c_gcc_w_shadow)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_noreturn)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wundef], charybdis_cv_c_gcc_w_undef)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wpacked], charybdis_cv_c_gcc_w_packed)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wnested-externs], charybdis_cv_c_gcc_w_nested_externs)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], charybdis_cv_c_gcc_w_unused)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wredundant-decls], charybdis_cv_c_gcc_w_redundant_decls)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wfloat-equal], charybdis_cv_c_gcc_w_float_equal)
-CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format)
+SOLANUM_C_GCC_TRY_FLAGS([-Wall], solanum_cv_c_gcc_w_all)
+SOLANUM_C_GCC_TRY_FLAGS([-Wpointer-arith], solanum_cv_c_gcc_w_pointer_arith)
+SOLANUM_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], solanum_cv_c_gcc_w_implicit)
+SOLANUM_C_GCC_TRY_FLAGS([-Wcast-align], solanum_cv_c_gcc_w_cast_align)
+SOLANUM_C_GCC_TRY_FLAGS([-Wcast-qual], solanum_cv_c_gcc_w_cast_qual)
+SOLANUM_C_GCC_TRY_FLAGS([-Wwrite-strings], solanum_cv_c_gcc_w_write_strings)
+SOLANUM_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], solanum_cv_c_gcc_w_error_implicit_function_declaration)
+SOLANUM_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], solanum_cv_c_gcc_prototypes)
+SOLANUM_C_GCC_TRY_FLAGS([-Wparentheses], solanum_cv_c_gcc_parentheses)
+SOLANUM_C_GCC_TRY_FLAGS([-W -Wno-unused], solanum_cv_c_gcc_w)
+SOLANUM_C_GCC_TRY_FLAGS([-Wextra], solanum_cv_c_gcc_w_extra)
+SOLANUM_C_GCC_TRY_FLAGS([-Wshadow], solanum_cv_c_gcc_w_shadow)
+SOLANUM_C_GCC_TRY_FLAGS([-Wmissing-noreturn], solanum_cv_c_gcc_w_missing_noreturn)
+SOLANUM_C_GCC_TRY_FLAGS([-Wundef], solanum_cv_c_gcc_w_undef)
+SOLANUM_C_GCC_TRY_FLAGS([-Wpacked], solanum_cv_c_gcc_w_packed)
+SOLANUM_C_GCC_TRY_FLAGS([-Wnested-externs], solanum_cv_c_gcc_w_nested_externs)
+SOLANUM_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], solanum_cv_c_gcc_w_unused)
+SOLANUM_C_GCC_TRY_FLAGS([-Wredundant-decls], solanum_cv_c_gcc_w_redundant_decls)
+SOLANUM_C_GCC_TRY_FLAGS([-Wfloat-equal], solanum_cv_c_gcc_w_float_equal)
+SOLANUM_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], solanum_cv_c_gcc_w_format)
 
 IRC_CFLAGS="$CFLAGS"
 ],[])
@@ -907,17 +633,12 @@ AC_SUBST(IRC_CFLAGS)
 AC_SUBST(SEDOBJ)
 
 
-if test "$prefix" = "NONE"; then 
+if test "$prefix" = "NONE"; then
        AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.])
-
 else
-
-dnl Don't get bitten by Cygwin's stupidity if the user specified
-dnl a custom prefix with a trailing slash
-
+       dnl Strip trailing slashes to prevent a path of '//'
        prefix=`echo $prefix | sed 's/\/$//'`
        AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.])
-       
 fi
 
 AC_CONFIG_FILES(                       \
@@ -925,9 +646,11 @@ AC_CONFIG_FILES(                   \
        authd/Makefile                  \
        bandb/Makefile                  \
        ssld/Makefile                   \
+       wsockd/Makefile                 \
        extensions/Makefile             \
        ircd/Makefile                   \
        modules/Makefile                \
+       tests/Makefile                  \
        tools/Makefile                  \
        tools/genssl                    \
        doc/Makefile                    \
@@ -947,11 +670,8 @@ echo "
 Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
        Install directory  : $prefix
 
-       Ziplinks           : $zlib
        OpenSSL            : $openssl
-       Socket Engine      : $SELECT_TYPE
-       Small network      : $small_net
-       Block allocator    : $balloc
+       SCTP               : $sctp
 
        Nickname length    : $NICKLEN
        Topic length       : $TOPICLEN