X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/46fded53d4f1d637825d560aad38281b67bef6f2..35472d0f1f52c31213cf9f96b4d80da91d27a865:/configure.ac diff --git a/configure.ac b/configure.ac index 869b7964..333a793d 100644 --- a/configure.ac +++ b/configure.ac @@ -2,135 +2,65 @@ 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.57) +AC_PREREQ(2.60) AC_INIT([charybdis], [3.6.0-dev]) +AC_LANG(C) +AC_USE_SYSTEM_EXTENSIONS +AC_GNU_SOURCE + +AC_PROG_CC_C99 + +if test x"$ac_cv_prog_cc_c99" = "xno"; then + AC_ERROR([charybdis 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([librb]) AC_CONFIG_AUX_DIR([libltdl/config]) -AC_CONFIG_MACRO_DIR([libltdl/m4]) -AM_INIT_AUTOMAKE([]) + +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 AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"]) -AC_PROG_CC_C99([], [AC_MSG_ERROR(elemental-ircd requires a C99 capable compiler)]) - -AC_GNU_SOURCE - -OLD_CFLAGS="$CFLAGS" -dnl Checks for programs. -AC_PROG_CC -AC_LANG(C) - -dnl Make sure autoconf doesn't interfere with cflags -jmallett -CFLAGS="$OLD_CFLAGS" - -AC_CONFIG_SUBDIRS(libratbox) - -dnl Check for various compilers. -jmallett -dnl But if $CC turns out to be gcc, sure as hell it's, well, gcc. -joshk - -AC_MSG_CHECKING([uname -s for Solaris, AIX, HPUX or Darwin]) -OSNAME=`uname -s` -case "$OSNAME" in - HP-UX*) - dnl only do this if we haven't already detected the newer one - dnl and we're not already using gcc - - if test "$HPUX" != yes -a "$ac_cv_c_compiler_gnu" = no; then - AC_MSG_RESULT(assuming old HPUX with its own cc) - IRC_CFLAGS="$IRC_CFLAGS +e" - HPUX=yes - else - AC_MSG_RESULT(already using newer HPUX) - fi - ;; - SunOS*) - AC_MSG_RESULT(SunOS or Solaris) - AC_DEFINE(__EXTENSIONS__, 1, [This is needed to use strtok_r on Solaris.]) - SUN=yes - ;; - AIX*) - AC_MSG_RESULT(AIX - Sorry you poor bastard..really we are) - IRC_CFLAGS="$IRC_CFLAGS -Wl,-brtl -Wl,-G" - ;; - Darwin*) - AC_MSG_RESULT(Darwin) - AppleGCC=yes - ;; - *) - AC_MSG_RESULT(no) - ;; +case "$host_os" in +*cygwin*) + AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system]) + AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system]) + ;; +*mingw* | *msys*) + AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system]) + AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system]) + AC_CHECK_HEADER(winsock2.h, , [AC_MSG_ERROR([** MinGW and no winsock2.h. I give up.])]) + LIBS="$LIBS -lws2_32 -liphlpapi" + is_mingw="yes" + ;; +*) + ;; esac +AM_CONDITIONAL([MINGW], [test "$is_mingw" = "yes"]) + if test "$ac_cv_c_compiler_gnu" = yes; then - IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall -std=gnu99" + IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall" fi dnl If we support -g, use it! if test "$ac_cv_prog_cc_g" = yes; then - dnl Tru64 needs -g3 for -O2 - if test "$Tru" = yes; then - IRC_CFLAGS="$IRC_CFLAGS -g3" - else - IRC_CFLAGS="$IRC_CFLAGS -g" - fi + IRC_CFLAGS="$IRC_CFLAGS -g" fi -dnl SVR4 SGS based on what we know about the compiler -jmallett -AC_MSG_CHECKING(if $CC supports the SVR4 SGS interfaces) -if test "$SGS" = "yes"; then - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi - -dnl We prefer gcc -MM because it's a lot less bloated -AC_PATH_PROG(MKDEP, mkdep) -AC_PATH_PROG(MAKEDEPEND, makedepend) - -AC_MSG_CHECKING(how to generate dependency info) - -STDOUT="> .depend" - -if test "$ac_cv_c_compiler_gnu" = yes; then - AC_MSG_RESULT(gcc -MM) - MKDEP="$CC -MM" -elif test ! -z "$MKDEP"; then - AC_MSG_RESULT(mkdep) - - dnl Tru64's mkdep is very loud - if test -z "$Tru"; then - STDOUT="" - else - STDOUT=" 2> /dev/null" - fi -elif test "$SunWorkShop" = yes; then - AC_MSG_RESULT($CC -xM) - MKDEP="$CC -xM" - STDOUT="> .depend 2> /dev/null" -elif test ! -z "$MAKEDEPEND"; then - AC_MSG_RESULT(makedepend) - MKDEP="$MAKEDEPEND -f-" -else - AC_MSG_RESULT([nothing suitable.. forget it!]) - MKDEP=":" -fi - -AC_SUBST(MKDEP) -AC_SUBST(STDOUT) - dnl check for /dev/null so we can use it to hold evil fd's AC_MSG_CHECKING([for /dev/null]) if test -c /dev/null ; then @@ -150,7 +80,6 @@ fi AC_ISC_POSIX AC_C_INLINE -AC_PROG_GCC_TRADITIONAL AC_PROG_MAKE_SET AC_PROG_INSTALL AC_PATH_PROG(RM, rm) @@ -210,6 +139,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]) @@ -230,19 +160,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 -#include ]) - AC_ARG_ENABLE(ipv6, AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no]) @@ -258,83 +182,12 @@ 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 - #include ], - [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 - #include ]], - [[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 - #include ]], - [[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_FUNCS([strlcat strlcpy]) -fi - AC_CHECK_TYPE([u_int32_t], [], [ AC_CHECK_TYPE([uint32_t], @@ -372,22 +225,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 @@ -461,11 +314,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 #include ], [[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) @@ -475,7 +328,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) @@ -536,50 +389,6 @@ 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] dnl ********************************************************************** @@ -596,7 +405,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/\/$//'` @@ -613,7 +422,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/\/$//'` @@ -630,7 +439,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/\/$//'` @@ -701,115 +510,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 -#include -#include -#include -#include -#include - -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 -#include -#include -#include -#include -#include - -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 ===================== @@ -826,19 +538,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]), @@ -856,63 +555,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]) @@ -924,10 +589,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 @@ -938,135 +603,11 @@ 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]) -shared_modules="yes" -dnl Some first-stage sanity checks. -if test "$shared_modules" = yes; then - dnl TenDRA's cc is called tcc too. - if test "$CC" = tcc -a "$TenDRA" = "no"; then - AC_MSG_WARN([disabling shared modules: Tiny C Compiler can't create PIC]) - shared_modules="no" - fi -fi - -dnl Second stage: check for functions and headers. -if test "$shared_modules" = yes; then - DYNLINK_C=dynlink.c - AC_CHECK_HEADERS(dlfcn.h) - AC_SEARCH_LIBS(shl_load, dld, - [ - AC_DEFINE(HAVE_SHL_LOAD, 1, [Define if the shl_load function is available.]) - SUFFIX=".sl" - MOD_TARGET=hpux_shared - SEDOBJ="s/\.o/.sl/g" - ], - dnl !shl_load: - [ - dnl standard dlopen - AC_SEARCH_LIBS(dlopen, [dl c_r], - [ - AC_DEFINE(HAVE_DLOPEN, 1, [Define if the dlopen function is available.]) - SUFFIX=".so" - MOD_TARGET=shared_modules - SEDOBJ="s/\.o/.so/g" - if test "$AppleGCC" = yes; then - AC_CHECK_HEADERS([mach-o/dyld.h]) - fi - AC_CHECK_FUNC(dlsym, , - [ - AC_MSG_WARN([dlsym is not available, shared modules disabled]) - shared_modules=no - ]) - AC_CHECK_FUNCS(dlfunc) - ], - [ - shared_modules=no - ]) - ]) -fi - -AC_DEFINE_UNQUOTED(SHARED_SUFFIX, "$SUFFIX", [Suffix for shared libraries on this platform.]) - -dnl Third stage - wrangling the linker. -if test "$shared_modules" = yes; then - # The GNU linker requires the -export-dynamic option to make - # all symbols visible in the dynamic symbol table. - hold_ldflags=$LDFLAGS - AC_MSG_CHECKING(for the ld -export-dynamic flag) - LDFLAGS="${LDFLAGS} -Wl,-export-dynamic -Werror" - AC_LINK_IFELSE(AC_LANG_PROGRAM([],[int i;]), found=yes, found=no) - LDFLAGS=$hold_ldflags - - if expr "`uname -s`" : ^IRIX >/dev/null 2>&1; then - found="no, IRIX ld uses -B,dynamic" - LDFLAGS="${LDFLAGS} -Wl,-B,dynamic" - fi - - if expr "`uname -s`" : ^AIX >/dev/null 2>&1; then - found="no, AIX ld uses -G -brtl" - LDFLAGS="${LDFLAGS} -Wl,-G,-brtl" - fi - - AC_MSG_RESULT($found) - - if test "$found" = yes; then - LDFLAGS="${LDFLAGS} -Wl,-export-dynamic" - fi - - AC_MSG_CHECKING(for compiler option to produce PIC) - dnl The order should be here to check for groups of compilers, - dnl then for odd compilers, then if no PICFLAGS were set up, - dnl check for GCC and set defaults, or else error. -jmallett - if test "$SGS" = "yes"; then - AC_MSG_RESULT([SVR4 SGS interfaces: -KPIC -DPIC -G]) - PICFLAGS="-KPIC -DPIC -G" - fi - - if test "$AppleGCC" = "yes"; then - AC_MSG_RESULT([Darwin Mach-O bundles: -fno-common -bundle -flat_namespace -undefined suppress]) - PICFLAGS="-fno-common -bundle -flat_namespace -undefined suppress" - fi - dnl Please note, that on HPUX two different stages of module compilation occurs, since - dnl while compiling modules, the compiler does not allow you to give arguments - dnl to the linker. (I did not design this) - dnl So we need -c in the first stage of module compilation. - dnl In the second stage, we link the modules via ld -b. - dnl Additionally, HPUX does not like -export-dynamic, it likes -E instead. - dnl -TimeMr14C - if test "$HPUX" = "yes" -a "$CC" != gcc; then - AC_MSG_RESULT(HP-UX cc: +z -r -q -n) - PICFLAGS="+z -r -q -n -c" - AC_MSG_CHECKING([if +ESfic is required on this platform]) - - if expr "`$CC +ESfic 2>&1`" : ".*neither supported.*" >/dev/null; then - AC_MSG_RESULT(no) - else - AC_MSG_RESULT(yes) - PICFLAGS="$PICFLAGS +ESfic" - fi - - LDFLAGS="${LDFLAGS} -Wl,-E" - fi - if test "$Tru" = yes -a "$CC" != gcc; then - AC_MSG_RESULT([Tru64: -shared -expect_unresolved '*']) - PICFLAGS="-shared -expect_unresolved '*' " - LDFLAGS="-call_shared" - fi - if test -z "$PICFLAGS"; then - if test "$ac_cv_c_compiler_gnu" = "yes"; then - AC_MSG_RESULT(gcc: -fPIC -DPIC -shared) - PICFLAGS="-fPIC -DPIC -shared" - else - AC_MSG_RESULT(no) - shared_modules=no - fi - fi -fi - -# rpath, for finding libratbox.so at run time +# 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 @@ -1091,7 +632,7 @@ 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([-Wparentheses], charybdis_cv_c_gcc_parentheses) 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) @@ -1107,75 +648,6 @@ CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdi IRC_CFLAGS="$CFLAGS" ],[]) -if test "$shared_modules" = no; then - DYNLINK_C="" - MOD_TARGET="libmodules.a" - MODULES_LIBS="../modules/libmodules.a" - SEDOBJ="" - AC_DEFINE(STATIC_MODULES, 1, [Define to 1 if dynamic modules can't be used.]) - AC_MSG_WARN([shared module support has been disabled!]) -fi - -dnl Stage 5 - underscores in front of symbol names. -if test "$shared_modules" = yes; then - - AC_CHECK_FUNC(nlist,, - AC_CHECK_LIB(dl, nlist, nlist_lib="-ldl", - AC_CHECK_LIB(elf, nlist, nlist_lib="-lelf",) - ) - ) - - dnl We need to find out whether underscores are appended to symbol - dnl names in executable files. First, though, we need to see - dnl where nlist.h is hiding. - AC_CHECK_HEADER(libelf/nlist.h, [ nlist_h="libelf/nlist.h" ], ) - AC_CHECK_HEADER(elf/nlist.h, [ nlist_h="elf/nlist.h" ], ) - AC_CHECK_HEADER(nlist.h, [ nlist_h="nlist.h" ], ) - if test x"$nlist_h" = "x"; then - AC_DEFINE_UNQUOTED(SYMBOL_PREFIX, "", [String containing extra underscores prepended to symbols loaded from modules.]) - else - AC_MSG_CHECKING(for extra underscores prepended to symbol names) - AC_CACHE_VAL(symbol_underscores, - [ -cat << EOF > conftest.c -#include <$nlist_h> -#include -#include -void _modinit(void); -int main(int argc, char *argv[[]]) { - int i; - struct nlist nl[[5]]; - - /* fill the names in this way, so it'll work almost everywhere */ - nl[[0]].n_name = "_modinit"; - nl[[1]].n_name = "__modinit"; - nl[[2]].n_name = "___modinit"; - nl[[3]].n_name = "____modinit"; - nl[[0]].n_value = nl[[1]].n_value = nl[[2]].n_value = nl[[3]].n_value = nl[[4]].n_name = NULL; - - if(argc < 2 || (nlist(argv[[1]], nl)) == -1) exit(-1); - for(i = 0; i < 4; i++) { - if(nl[[i]].n_value != NULL) - { - int j; - for(j = 0; j < i; j++) - printf("_"); - exit(i); - } - } - exit(-1); -} -void _modinit(void) { return; } -EOF - $CC $CPPFLAGS $IRC_CFLAGS -o conftest conftest.c $nlist_lib >/dev/null 2>&1 - symbol_underscores=`./conftest conftest` - AC_MSG_RESULT($symbol_underscores) - $RM -f conftest conftest.c - ]) - AC_DEFINE_UNQUOTED(SYMBOL_PREFIX, "${symbol_underscores}", [String containing extra underscores prepended to symbols loaded from modules.]) - fi -fi - IRC_CFLAGS="$IRC_CFLAGS $CWARNS" AC_SUBST(MODULES_LIBS) @@ -1191,7 +663,7 @@ 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 @@ -1201,11 +673,12 @@ dnl a custom prefix with a trailing slash prefix=`echo $prefix | sed 's/\/$//'` AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.]) - + fi AC_CONFIG_FILES( \ Makefile \ + authd/Makefile \ bandb/Makefile \ ssld/Makefile \ extensions/Makefile \ @@ -1226,21 +699,12 @@ else openssl="no" fi -if test "$shared_modules" = yes; then - modules=shared -else - modules=static -fi - 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 Nickname length : $NICKLEN Topic length : $TOPICLEN