X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/a70a737c9b1a524e8f4835bc58a331dee8579ac4..1fcdacb424dd9203923a1c25db921b5329eb6c2e:/configure.ac diff --git a/configure.ac b/configure.ac index 956ad882..4906ff6f 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,7 +13,7 @@ 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) @@ -34,24 +34,6 @@ LTDL_INIT build_ltdl=$with_included_ltdl AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"]) -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" fi @@ -168,9 +150,6 @@ if test x"$SUN" = xyes; then AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])]) fi -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 @@ -186,7 +165,7 @@ 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_TYPE_INT16_T @@ -323,46 +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 ********************************************************************** dnl Check for --with-confdir [deprecated, use --sysconfdir instead] @@ -522,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 @@ -578,6 +565,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) @@ -599,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([-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) -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" ],[]) @@ -640,15 +635,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( \ @@ -660,6 +650,7 @@ AC_CONFIG_FILES( \ extensions/Makefile \ ircd/Makefile \ modules/Makefile \ + tests/Makefile \ tools/Makefile \ tools/genssl \ doc/Makefile \ @@ -679,8 +670,8 @@ echo " Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}: Install directory : $prefix - Ziplinks : $zlib OpenSSL : $openssl + SCTP : $sctp Nickname length : $NICKLEN Topic length : $TOPICLEN