X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/ec86417cee9890cd8c504aec293a250e8740a4d3..c83f2f5e1213fb20d18c6258cb5f87a6c9fd5c93:/configure.ac diff --git a/configure.ac b/configure.ac index 4efdbb76..b542dac6 100644 --- a/configure.ac +++ b/configure.ac @@ -1,189 +1,47 @@ -dnl $Id: configure.ac 3516 2007-06-10 16:14:03Z jilles $ -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.57) +AC_PREREQ(2.60) + +AC_INIT([charybdis], [3.6.0-dev]) -dnl Sneaky way to get an Id tag into the configure script -AC_COPYRIGHT([$Id: configure.ac 3516 2007-06-10 16:14:03Z jilles $]) +AC_LANG(C) +AC_USE_SYSTEM_EXTENSIONS +AC_GNU_SOURCE -AC_INIT([charybdis],[3.1]) +AC_PROG_CC_C99 -AC_CONFIG_HEADER(include/setup.h) +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_GNU_SOURCE +AM_INIT_AUTOMAKE([subdir-objects]) +AM_SILENT_RULES([yes]) +AM_PROG_AR -OLD_CFLAGS="$CFLAGS" -dnl Checks for programs. -AC_PROG_CC -AC_LANG(C) +LT_INIT([dlopen disable-static]) +LT_CONFIG_LTDL_DIR([libltdl]) +LTDL_INIT -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 - -if test "$ac_cv_c_compiler_gnu" != yes; then - -SGS=no -AC_MSG_CHECKING($CC -version for TenDRA or MIPSpro) -case `$CC -version 2>&1` in -*TenDRA*) - AC_MSG_RESULT([yes, TenDRA]) - IRC_CFLAGS="" - CPPFLAGS="$CPPFLAGS -Ylonglong -Yansi -I/usr/include" - SGS=yes - TenDRA=yes -;; -*MIPSpro*) - AC_MSG_RESULT([yes, MIPSpro]) - MIPSpro=yes - SGS=yes -;; -*) - AC_MSG_RESULT(no) - TenDRA=no - MIPSpro=no -;; -esac - -AC_MSG_CHECKING([$CC -V for Sun Workshop, Forte, HPUX or Tru64 cc]) -case `$CC -V 2>&1` in -*Sun*WorkShop* | *Forte*Developer*) - AC_MSG_RESULT(Sun Workshop/Forte) - IRC_CFLAGS="-fast -xinline=dlinkAdd,dlinkAddBefore,dlinkAddTail,dlinkDelete,dlink_list_length,dlink_node,dlinkMoveList,_MyMalloc,_MyRealloc,_MyFree,_DupString" - SunWorkShop=yes - SGS=yes -;; -*Tru64*) - AC_MSG_RESULT(Tru64 cc) - IRC_CFLAGS="-O2" - CPPFLAGS="-I/usr/local/include" - Tru=yes -;; -*HP*ANSI*) - AC_MSG_RESULT(HPUX cc) - HPUX=yes - IRC_CFLAGS="+e" -;; -*) - AC_MSG_RESULT(no) -;; -esac - -fi - -AC_MSG_CHECKING([uname -s for Cygwin, Solaris, AIX or HPUX]) -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 - ;; - CYGWIN*) - AC_MSG_RESULT(Cygwin) - CYGWIN=yes - ;; - 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" - ;; - *) - AC_MSG_RESULT(no) - ;; -esac +build_ltdl=$with_included_ltdl +AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"]) if test "$ac_cv_c_compiler_gnu" = yes; then - AC_MSG_CHECKING(if $CC is Apple GCC) - - case `$CC -v 2>&1 | tail -n 1` in - *Apple*) - AC_MSG_RESULT(yes) - AppleGCC=yes - ;; - *) - AC_MSG_RESULT(no) - AppleGCC=no - ;; - esac - - 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 @@ -203,7 +61,6 @@ fi AC_ISC_POSIX AC_C_INLINE -AC_PROG_GCC_TRADITIONAL AC_PROG_MAKE_SET AC_PROG_INSTALL AC_PATH_PROG(RM, rm) @@ -229,12 +86,37 @@ if test "$LEX" = ":"; then AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.]) fi +AC_ARG_ENABLE([fhs-paths], + [AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])], + [], + [dnl detect if the user appears to want --enable-fhs-paths + AS_IF([test "$libexecdir" = '${exec_prefix}/libexec' && \ + test "$localstatedir" = '${prefix}/var' && \ + test "$libdir" = '${exec_prefix}/lib'], + [enable_fhs_paths=no], + [enable_fhs_paths=yes]) + ]) dnl use directory structure of cached as default (hack) -if test "$libexecdir" = '${exec_prefix}/libexec' && - test "$localstatedir" = '${prefix}/var'; then - libexecdir='${bindir}' +AS_IF([test "x$enable_fhs_paths" = "xyes"], + [dnl Avoid name collisions. + pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}' + rundir=${rundir-'${prefix}/run'} + pkgrundir='${rundir}/${PACKAGE_TARNAME}' + pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}'], + [libexecdir='${bindir}' + pkglibexecdir='${libexecdir}' + rundir='${sysconfdir}' + pkgrundir='${rundir}' localstatedir='${prefix}' -fi + pkglocalstatedir='${sysconfdir}']) +pkglibdir='${libdir}/${PACKAGE_TARNAME}' +AC_SUBST([pkglibdir]) +AC_SUBST([rundir]) +AC_SUBST([pkgrundir]) +AC_SUBST([pkglocalstatedir]) +AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]]) +AC_SUBST([pkglibexecdir]) +AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live]) dnl Checks for header files. AC_HEADER_STDC @@ -286,83 +168,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], @@ -400,22 +211,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 @@ -489,11 +300,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) @@ -503,7 +314,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) @@ -543,231 +354,148 @@ AC_CHECK_HEADER(zlib.h, [ fi -dnl IO Loop Selection -dnl ================= +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]) -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 -],) +if test "$shared_sqlite" = yes; then + PKG_CHECK_MODULES(SQLITE, [sqlite3], + [ + shared_sqlite=yes + ], shared_sqlite=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 -],) +if test "$shared_sqlite" = no; then + SQLITE_OBJ='sqlite3.$(OBJEXT)' +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 -],) +AC_SUBST(SQLITE_LD, "$SQLITE_LIBS") +AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS") +AC_SUBST(SQLITE_OBJ) dnl ********************************************************************** -dnl Check for --with-confdir +dnl Check for --with-confdir [deprecated, use --sysconfdir instead] dnl ********************************************************************** -AC_MSG_CHECKING([whether to modify confdir]) -AC_ARG_WITH(confdir, -AC_HELP_STRING([--with-confdir=DIR], - [Directory to install config files.]), - [ confdir=`echo $withval | sed 's/\/$//'` - AC_MSG_RESULT(yes) - AC_DEFINE_DIR(ETC_DIR, confdir, [Prefix where config files are installed.]) - AC_SUBST_DIR([confdir]) ], - [ confdir='${prefix}/etc' - AC_MSG_RESULT(no) - AC_DEFINE_DIR(ETC_DIR, confdir, [Prefix where config files are installed.]) - AC_SUBST_DIR([confdir])] -) +AC_ARG_WITH([confdir], + [AC_HELP_STRING([--with-confdir=DIR], + [Directory to install config files [deprecated, use --sysconfdir instead].])], + [ sysconfdir=`echo $withval | sed 's/\/$//'` ], + [ confdir='${sysconfdir}' ]) +AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.]) dnl ********************************************************************** 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/\/$//'` - AC_MSG_RESULT(yes) - AC_DEFINE_DIR(LOG_DIR, logdir, [Prefix where to write logfiles.]) - AC_SUBST_DIR([logdir]) ], - [ logdir='${prefix}/logs' - AC_MSG_RESULT(no) - AC_DEFINE_DIR(LOG_DIR, logdir, [Prefix where to write logfiles.]) - AC_SUBST_DIR([logdir])] -) + AC_MSG_RESULT(yes)], + [ AS_IF([test "x$enable_fhs_paths" = "xyes"], + [logdir='${localstatedir}/log/${PACKAGE_TARNAME}'], + [logdir='${prefix}/logs']) + AC_MSG_RESULT(no)]) +AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.]) +AC_SUBST_DIR([logdir]) dnl ********************************************************************** 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/\/$//'` - AC_MSG_RESULT(yes) - AC_DEFINE_DIR(HELP_DIR, helpdir, [Prefix where help files are installed.]) - AC_SUBST_DIR([helpdir]) ], - [ helpdir='${prefix}/help' - AC_MSG_RESULT(no) - AC_DEFINE_DIR(HELP_DIR, helpdir, [Prefix where help file are installed.]) - AC_SUBST_DIR([helpdir])] -) + AC_MSG_RESULT(yes) ], + [ AS_IF([test "x$enable_fhs_paths" = "xyes"], + [helpdir='${datadir}/${PACKAGE_TARNAME}/help'], + [helpdir='${prefix}/help']) + AC_MSG_RESULT(no) ]) +AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.]) +AC_SUBST_DIR([helpdir]) dnl ********************************************************************** dnl Check for --with-moduledir dnl ********************************************************************** AC_MSG_CHECKING([whether to modify moduledir]) -AC_ARG_WITH(moduledir, -AC_HELP_STRING([--with-moduledir=DIR], - [Directory to install modules.]), +AC_ARG_WITH(moduledir, + [AC_HELP_STRING([--with-moduledir=DIR], + [Directory to install modules.])], [ moduledir=`echo $withval | sed 's/\/$//'` - AC_MSG_RESULT(yes) - AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.]) - AC_SUBST_DIR([moduledir]) ], - [ moduledir='${prefix}/modules' + AC_MSG_RESULT(yes)], + [ AS_IF([test "x$enable_fhs_paths" = "xyes"], + [moduledir='${pkglibdir}/modules'], + [moduledir='${prefix}/modules']) AC_MSG_RESULT(no) - AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.]) - AC_SUBST_DIR([moduledir])] -) - -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 + ]) +AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.]) +AC_SUBST_DIR([moduledir]) + +dnl Check for --with-rundir + +AC_MSG_CHECKING([whether or modify rundir]) +AC_ARG_WITH([rundir], + [AC_HELP_STRING([--with-rundir=DIR], + [Directory in which to store pidfile.])], + [AC_MSG_RESULT([yes]) + rundir=`echo $withval | sed 's/\/$//'`], + [AC_MSG_RESULT([no]) + AS_IF([test "x$enable_fhs_paths" = "xyes"], + [rundir='${prefix}/run'], + [rundir='${sysconfdir}'])]) +AC_SUBST([rundir]) +AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.]) + +dnl Installed utility program prefixes (does not affect binaries +dnl installed into pkglibexecdir) +AC_MSG_CHECKING([for program prefix]) +AC_ARG_WITH([program-prefix], + [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])], + [test "x$with_program_prefix" = "xno" && with_program_prefix=], + [with_program_prefix=]) +AC_MSG_RESULT(["$with_program_prefix"]) +PROGRAM_PREFIX="$with_program_prefix" +AC_SUBST([PROGRAM_PREFIX]) +AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.]) -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 +dnl ********************************************************************** +dnl Branding +dnl ********************************************************************** -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 +AC_MSG_CHECKING([whether custom branding is requested]) +AC_ARG_WITH(custom-branding, +AC_HELP_STRING([--with-custom-branding=NAME], + [Custom branding name.]), + [BRANDING_NAME=$withval + AC_MSG_RESULT([yes])], + [BRANDING_NAME=$PACKAGE_NAME + AC_MSG_RESULT([no])] +) -fi +AC_MSG_CHECKING([whether a custom version is requested]) +AC_ARG_WITH(custom-version, +AC_HELP_STRING([--with-custom-version=NAME], + [Custom version branding.]), + [BRANDING_VERSION=$withval + AC_MSG_RESULT([yes])], + [BRANDING_VERSION=$PACKAGE_VERSION + AC_MSG_RESULT([no])] +) -fi +AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.]) +AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.]) -if test -z "$SELECT_TYPE"; then - AC_MSG_ERROR([Unable to find a usable IO interface],) +if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then + AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.]) 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 ===================== @@ -784,19 +512,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]), @@ -814,72 +529,44 @@ 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 nick length to LENGTH (default 15, max 50)]), +AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]), [ - if test $withval -ge 50; then + if ! expr "$withval" + 0 >/dev/null 2>&1; then + AC_ERROR([NICKLEN must be a numeric value]) + fi + if test $withval -gt 50; then NICKLEN=50 AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50]) + elif test $withval -lt 9; then + NICKLEN=9 + AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9]) else NICKLEN="$withval" fi -], [NICKLEN=15]) +], [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 @@ -890,141 +577,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 - - if test "$CYGWIN" = yes; then - AC_MSG_WARN([disabling shared modules; Cygwin is at present unable to build them.]) - shared_modules="no" - fi - - 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 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 @@ -1057,85 +614,14 @@ CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_nor 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([-Wbad-function-cast], charybdis_cv_c_gcc_w_bad_function_cast) 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 -Wformat-security], charybdis_cv_c_gcc_w_format) -CHARYBDIS_C_GCC_TRY_FLAGS([-pedantic], charybdis_cv_c_gcc_pedantic) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format) 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) @@ -1151,7 +637,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 @@ -1161,20 +647,23 @@ 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 \ - unsupported/Makefile \ - src/Makefile \ + ircd/Makefile \ modules/Makefile \ tools/Makefile \ + tools/genssl \ doc/Makefile \ help/Makefile \ ) +AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl]) AC_OUTPUT @@ -1184,24 +673,15 @@ else openssl="no" fi -if test "$shared_modules" = yes; then - modules=shared -else - modules=static -fi - echo " -Configuration: +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 -Use (g)make to compile Charybdis, then (g)make install to install it. +Use (g)make to compile $BRANDING_NAME, then (g)make install to install it. "