X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/68f90ee2471a6c8729d299589f1e70dd01b4bc1f..c33da0d24ed3cd737263e0469fa600681ec75d42:/configure.ac diff --git a/configure.ac b/configure.ac index 77f7a7e0..1651ef64 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ 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_USE_SYSTEM_EXTENSIONS @@ -13,12 +13,13 @@ 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]) + 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([librb]) AC_CONFIG_AUX_DIR([libltdl/config]) @@ -102,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}' @@ -122,7 +124,7 @@ 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]) +AC_CHECK_HEADERS([crypt.h sys/param.h sys/syslog.h sys/epoll.h machine/endian.h]) dnl Stuff that the memory manager (imalloc) depends on dnl ================================================== @@ -141,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,, [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]) - AC_SEARCH_LIBS(crypt, [crypt descrypt],,) CRYPT_LIB=$ac_cv_search_crypt @@ -172,65 +165,18 @@ AC_SUBST(CRYPT_LIB) 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 **])]) +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]) -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 -#include ]]) - -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.])], -[[#include -#include ]]) +AC_TYPE_INT16_T +AC_TYPE_INT32_T AC_CHECK_TYPES([uintptr_t]) dnl check for various functions... -AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ]) AC_FUNC_ALLOCA -dnl Specialized functions checks -dnl ============================ - -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 - AC_MSG_RESULT("nanosleep not found..using select for delay") -else - AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists]) -fi - dnl OpenSSL support AC_MSG_CHECKING(for OpenSSL) AC_ARG_ENABLE(openssl, @@ -335,46 +281,53 @@ 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_SEARCH_LIBS(sctp_bindx, sctp, [ - AC_SUBST(ZLIB_LD, -lz) - AC_DEFINE(HAVE_LIBZ, 1, [Define to 1 if zlib (-lz) is available.]) - ], zlib=no) -], zlib=no) + 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 ********************************************************************** dnl Check for --with-confdir [deprecated, use --sysconfdir instead] @@ -509,18 +462,6 @@ if test "$operchghost" = yes; then AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.]) fi -dnl ********************************************************************** -dnl Enable ignoring of bogus timestamps -dnl ********************************************************************** - -AC_ARG_ENABLE(ignore-bogus-ts, -AC_HELP_STRING([--enable-ignore-bogus-ts],[Enable the reset of timestamps in channels to current time if set to 0. Set this network wide or not at all.]), -[ignorebogusts=$enableval],[ignorebogusts=no]) - -if test "$ignorebogusts" = yes; then - AC_DEFINE(IGNORE_BOGUS_TS, 1, [Define this to enable the reset of timestamps in channels to current time if set to 0.]) -fi - dnl Debug-related options dnl ===================== @@ -534,7 +475,7 @@ elif test "$assert" = soft; then AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.]) AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) elif test "$assert" = yes; then - assert = "hard"; + assert="hard" fi AC_MSG_CHECKING(if you want to do a profile build) @@ -546,7 +487,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 @@ -602,6 +543,14 @@ 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]) + +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) @@ -623,26 +572,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" ],[]) @@ -664,15 +613,10 @@ AC_SUBST(SEDOBJ) 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( \ @@ -680,9 +624,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 \ @@ -702,8 +648,8 @@ echo " Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}: Install directory : $prefix - Ziplinks : $zlib OpenSSL : $openssl + SCTP : $sctp Nickname length : $NICKLEN Topic length : $TOPICLEN