2007-01-25 07:40:21 +01:00
|
|
|
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.
|
|
|
|
|
2016-01-07 17:58:28 +01:00
|
|
|
AC_PREREQ(2.60)
|
2007-01-25 07:40:21 +01:00
|
|
|
|
2016-05-01 02:58:14 +02:00
|
|
|
AC_INIT([charybdis], [4-beta1])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
2016-01-07 17:58:28 +01:00
|
|
|
AC_LANG(C)
|
|
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
|
|
AC_GNU_SOURCE
|
|
|
|
|
2016-02-06 23:25:58 +01:00
|
|
|
AC_PROG_CC_C99
|
|
|
|
|
|
|
|
if test x"$ac_cv_prog_cc_c99" = "xno"; then
|
|
|
|
AC_ERROR([charybdis requires a C99 capable compiler])
|
|
|
|
fi
|
|
|
|
|
2016-01-06 04:20:25 +01:00
|
|
|
AC_PREFIX_DEFAULT($HOME/ircd)
|
2014-06-01 21:50:01 +02:00
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_CONFIG_HEADER(include/setup.h)
|
2016-03-20 08:07:06 +01:00
|
|
|
|
2016-03-20 08:11:06 +01:00
|
|
|
AC_CONFIG_SUBDIRS([librb])
|
|
|
|
AC_CONFIG_AUX_DIR([libltdl/config])
|
|
|
|
|
|
|
|
AM_INIT_AUTOMAKE([subdir-objects])
|
|
|
|
AM_SILENT_RULES([yes])
|
|
|
|
AM_PROG_AR
|
|
|
|
|
|
|
|
LT_INIT([dlopen disable-static])
|
|
|
|
LT_CONFIG_LTDL_DIR([libltdl])
|
|
|
|
LTDL_INIT
|
|
|
|
|
|
|
|
build_ltdl=$with_included_ltdl
|
|
|
|
AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"])
|
|
|
|
|
2016-03-20 08:07:06 +01:00
|
|
|
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])
|
|
|
|
;;
|
2016-03-21 04:17:52 +01:00
|
|
|
*mingw* | *msys*)
|
2016-03-20 08:07:06 +01:00
|
|
|
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"])
|
|
|
|
|
2015-02-16 22:53:55 +01:00
|
|
|
if test "$ac_cv_c_compiler_gnu" = yes; then
|
2016-01-07 17:58:28 +01:00
|
|
|
IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall"
|
2007-01-25 07:40:21 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
dnl If we support -g, use it!
|
|
|
|
if test "$ac_cv_prog_cc_g" = yes; then
|
2016-01-06 08:28:20 +01:00
|
|
|
IRC_CFLAGS="$IRC_CFLAGS -g"
|
2007-01-25 07:40:21 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
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
|
|
|
|
AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null])
|
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
else
|
|
|
|
AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null])
|
|
|
|
AC_MSG_RESULT(no - using devnull.log)
|
|
|
|
fi
|
|
|
|
|
|
|
|
dnl jdc -- If CFLAGS is defined, best use it everywhere...
|
|
|
|
dnl NOTE: jv says it must be added to the *END*, because things like
|
|
|
|
dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid.
|
|
|
|
if test ! -z "$CFLAGS"; then
|
|
|
|
IRC_CFLAGS="$IRC_CFLAGS $CFLAGS"
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_ISC_POSIX
|
|
|
|
AC_C_INLINE
|
|
|
|
AC_PROG_MAKE_SET
|
|
|
|
AC_PROG_INSTALL
|
|
|
|
AC_PATH_PROG(RM, rm)
|
|
|
|
AC_PATH_PROG(CP, cp)
|
|
|
|
AC_PATH_PROG(MV, mv)
|
|
|
|
AC_PATH_PROG(LN, ln)
|
|
|
|
AC_PATH_PROG(SED, sed)
|
|
|
|
AC_PATH_PROG(AR, ar)
|
|
|
|
AC_PATH_PROG(LD, ld)
|
|
|
|
AC_PATH_PROG(RANLIB, ranlib)
|
|
|
|
AC_PATH_PROG(TOUCH, touch)
|
|
|
|
|
|
|
|
AC_PROG_YACC
|
|
|
|
|
|
|
|
dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found
|
|
|
|
if test "$YACC" = "yacc" -a -z "`which $YACC 2>/dev/null`"; then
|
|
|
|
AC_MSG_ERROR([could not locate a suitable parser generator; install bison, yacc, or byacc])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_PROG_LEX
|
|
|
|
|
|
|
|
if test "$LEX" = ":"; then
|
|
|
|
AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.])
|
|
|
|
fi
|
|
|
|
|
2012-03-01 03:41:09 +01:00
|
|
|
AC_ARG_ENABLE([fhs-paths],
|
2012-03-03 04:30:34 +01:00
|
|
|
[AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])],
|
2012-03-01 03:41:09 +01:00
|
|
|
[],
|
|
|
|
[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])
|
|
|
|
])
|
2007-01-25 07:40:21 +01:00
|
|
|
dnl use directory structure of cached as default (hack)
|
2012-03-01 03:41:09 +01:00
|
|
|
AS_IF([test "x$enable_fhs_paths" = "xyes"],
|
|
|
|
[dnl Avoid name collisions.
|
|
|
|
pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}'
|
|
|
|
rundir=${rundir-'${prefix}/run'}
|
|
|
|
pkgrundir='${rundir}/${PACKAGE_TARNAME}'
|
2016-03-25 00:55:30 +01:00
|
|
|
pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}'
|
|
|
|
AC_DEFINE([ENABLE_FHS_PATHS], [1], [Uncomment if FHS pathnames are enabled])],
|
2012-03-01 03:41:09 +01:00
|
|
|
[libexecdir='${bindir}'
|
|
|
|
pkglibexecdir='${libexecdir}'
|
|
|
|
rundir='${sysconfdir}'
|
|
|
|
pkgrundir='${rundir}'
|
2007-01-25 07:40:21 +01:00
|
|
|
localstatedir='${prefix}'
|
2012-03-01 03:41:09 +01:00
|
|
|
pkglocalstatedir='${sysconfdir}'])
|
|
|
|
pkglibdir='${libdir}/${PACKAGE_TARNAME}'
|
|
|
|
AC_SUBST([pkglibdir])
|
|
|
|
AC_SUBST([rundir])
|
|
|
|
AC_SUBST([pkgrundir])
|
|
|
|
AC_SUBST([pkglocalstatedir])
|
2014-01-31 17:03:54 +01:00
|
|
|
AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]])
|
2012-03-01 03:41:09 +01:00
|
|
|
AC_SUBST([pkglibexecdir])
|
|
|
|
AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
dnl Checks for header files.
|
|
|
|
AC_HEADER_STDC
|
2016-03-08 11:52:31 +01:00
|
|
|
AC_HEADER_STDBOOL
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
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])
|
|
|
|
|
|
|
|
dnl Stuff that the memory manager (imalloc) depends on
|
|
|
|
dnl ==================================================
|
|
|
|
|
|
|
|
AC_C_CONST
|
|
|
|
if test "$ac_cv_header_machine_endian_h" = "no" ; then
|
|
|
|
AC_C_BIGENDIAN
|
|
|
|
fi
|
|
|
|
AC_TYPE_PID_T
|
|
|
|
AC_TYPE_SIZE_T
|
|
|
|
AC_CHECK_SIZEOF(short)
|
|
|
|
AC_CHECK_SIZEOF(int)
|
|
|
|
AC_CHECK_SIZEOF(long)
|
|
|
|
AC_CHECK_SIZEOF(long long)
|
|
|
|
|
|
|
|
dnl Networking Functions
|
|
|
|
dnl ====================
|
|
|
|
|
2016-03-20 06:11:06 +01:00
|
|
|
AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
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_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
|
|
|
|
|
|
|
|
if test "$CRYPT_LIB" = "none required"; then
|
|
|
|
unset CRYPT_LIB
|
|
|
|
elif test "$CRYPT_LIB" = no; then
|
|
|
|
unset CRYPT_LIB
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_SUBST(CRYPT_LIB)
|
|
|
|
|
|
|
|
AC_C_BIGENDIAN
|
|
|
|
|
|
|
|
dnl Check for stdarg.h - if we can't find it, halt configure
|
2008-08-16 20:38:13 +02:00
|
|
|
AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])])
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_CHECK_FUNCS([strlcat strlcpy])
|
|
|
|
|
2016-03-24 03:33:54 +01:00
|
|
|
AC_TYPE_INT16_T
|
|
|
|
AC_TYPE_INT32_T
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
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 <sys/types.h>
|
|
|
|
#include <sys/socket.h>]])
|
|
|
|
|
|
|
|
AC_CHECK_TYPES([uintptr_t])
|
|
|
|
|
|
|
|
dnl check for various functions...
|
2016-02-10 02:25:32 +01:00
|
|
|
AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
AC_FUNC_ALLOCA
|
|
|
|
|
|
|
|
dnl Specialized functions checks
|
|
|
|
dnl ============================
|
|
|
|
|
2016-02-06 23:17:48 +01:00
|
|
|
dnl check for nanosleep
|
2007-01-25 07:40:21 +01:00
|
|
|
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
|
2016-02-06 23:17:48 +01:00
|
|
|
then
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_MSG_RESULT("nanosleep not found..using select for delay")
|
2016-02-06 23:17:48 +01:00
|
|
|
else
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
|
|
|
|
fi
|
|
|
|
|
|
|
|
dnl OpenSSL support
|
|
|
|
AC_MSG_CHECKING(for OpenSSL)
|
|
|
|
AC_ARG_ENABLE(openssl,
|
|
|
|
[AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
|
|
|
|
AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
|
|
|
|
[cf_enable_openssl=$enableval],
|
|
|
|
[cf_enable_openssl="auto"])
|
|
|
|
|
|
|
|
if test "$cf_enable_openssl" != "no" ; then
|
|
|
|
cf_openssl_basedir=""
|
|
|
|
if test "$cf_enable_openssl" != "auto" &&
|
|
|
|
test "$cf_enable_openssl" != "yes" ; then
|
|
|
|
dnl Support for --enable-openssl=/some/place
|
|
|
|
cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`"
|
|
|
|
else
|
|
|
|
dnl Do the auto-probe here. Check some common directory paths.
|
|
|
|
for dirs in /usr/local/ssl /usr/pkg /usr/local \
|
|
|
|
/usr/local/openssl ; do
|
|
|
|
if test -f "${dirs}/include/openssl/opensslv.h" ; then
|
|
|
|
cf_openssl_basedir="${dirs}"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
unset dirs
|
|
|
|
fi
|
|
|
|
dnl Now check cf_openssl_found to see if we found anything.
|
|
|
|
if test ! -z "$cf_openssl_basedir"; then
|
|
|
|
if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
|
|
|
|
SSL_INCLUDES="-I${cf_openssl_basedir}/include"
|
|
|
|
SSL_LIBS="-L${cf_openssl_basedir}/lib"
|
|
|
|
else
|
|
|
|
dnl OpenSSL wasn't found in the directory specified. Naughty
|
|
|
|
dnl administrator...
|
|
|
|
cf_openssl_basedir=""
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
dnl Check for stock FreeBSD 4.x and 5.x systems, since their files
|
|
|
|
dnl are in /usr/include and /usr/lib. In this case, we don't want to
|
|
|
|
dnl change INCLUDES or LIBS, but still want to enable OpenSSL.
|
|
|
|
dnl We can't do this check above, because some people want two versions
|
|
|
|
dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl)
|
|
|
|
dnl and they want /usr/local/ssl to have preference.
|
|
|
|
if test -f "/usr/include/openssl/opensslv.h" ; then
|
|
|
|
cf_openssl_basedir="/usr"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
dnl If we have a basedir defined, then everything is okay. Otherwise,
|
|
|
|
dnl we have a problem.
|
|
|
|
if test ! -z "$cf_openssl_basedir"; then
|
|
|
|
AC_MSG_RESULT($cf_openssl_basedir)
|
|
|
|
cf_enable_openssl="yes"
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT([not found. Specify a correct path?])
|
|
|
|
cf_enable_openssl="no"
|
|
|
|
fi
|
|
|
|
unset cf_openssl_basedir
|
|
|
|
else
|
|
|
|
dnl If --disable-openssl was specified
|
|
|
|
AC_MSG_RESULT(disabled)
|
|
|
|
fi
|
|
|
|
|
|
|
|
save_CPPFLAGS="$CPPFLAGS"
|
|
|
|
CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
|
|
|
|
save_LIBS="$LIBS"
|
|
|
|
LIBS="$LIBS $SSL_LIBS"
|
|
|
|
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(
|
2016-02-06 15:23:58 +01:00
|
|
|
[AC_LANG_PROGRAM(
|
2007-01-25 07:40:21 +01:00
|
|
|
[#include <openssl/opensslv.h>
|
|
|
|
#include <stdlib.h>],
|
|
|
|
[[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
|
2016-02-06 15:23:58 +01:00
|
|
|
exit(0); else exit(1);]])],
|
2007-01-25 07:40:21 +01:00
|
|
|
cf_openssl_version_ok=yes,
|
|
|
|
cf_openssl_version_ok=no,
|
|
|
|
cf_openssl_version_ok=no)
|
|
|
|
|
|
|
|
if test "$cf_openssl_version_ok" = yes; then
|
|
|
|
AC_MSG_RESULT(found)
|
|
|
|
|
|
|
|
dnl Work around pmake/gmake conditional incompatibilities
|
|
|
|
AC_SUBST(ENCSPEED, encspeed)
|
2016-02-06 23:17:48 +01:00
|
|
|
|
2007-01-25 07:40:21 +01:00
|
|
|
dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
|
|
|
|
CPPFLAGS="$CPPFLAGS $SSL_LIBS"
|
|
|
|
AC_CHECK_LIB(crypto, RSA_free)
|
|
|
|
SSL_LIBS="$SSL_LIBS -lcrypto"
|
|
|
|
SSL_SRCS_ENABLE='$(SSL_SRCS)'
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no - OpenSSL support disabled)
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
CPPFLAGS="$save_CPPFLAGS"
|
|
|
|
LIBS="$save_LIBS"
|
|
|
|
|
|
|
|
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.]),
|
|
|
|
[LIBS="$LIBS -L$withval"],)
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(zlib,
|
|
|
|
AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
|
|
|
|
[zlib=$enableval],[zlib=yes])
|
|
|
|
|
|
|
|
if test "$zlib" = yes; then
|
|
|
|
|
|
|
|
AC_CHECK_HEADER(zlib.h, [
|
|
|
|
AC_CHECK_LIB(z, zlibVersion,
|
|
|
|
[
|
|
|
|
AC_SUBST(ZLIB_LD, -lz)
|
|
|
|
AC_DEFINE(HAVE_LIBZ, 1, [Define to 1 if zlib (-lz) is available.])
|
|
|
|
], zlib=no)
|
|
|
|
], zlib=no)
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
2014-06-01 04:56:12 +02:00
|
|
|
dnl Check for shared sqlite
|
|
|
|
dnl ======================
|
2014-06-01 03:14:09 +02:00
|
|
|
AC_ARG_WITH(shared-sqlite,
|
|
|
|
AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]),
|
|
|
|
[shared_sqlite=$withval],[shared_sqlite=no])
|
2014-05-27 16:39:55 +02:00
|
|
|
|
|
|
|
if test "$shared_sqlite" = yes; then
|
2014-06-01 21:50:01 +02:00
|
|
|
PKG_CHECK_MODULES(SQLITE, [sqlite3],
|
|
|
|
[
|
|
|
|
shared_sqlite=yes
|
2014-06-01 04:56:12 +02:00
|
|
|
], shared_sqlite=no)
|
2014-05-27 16:39:55 +02:00
|
|
|
fi
|
|
|
|
|
2014-05-29 23:53:43 +02:00
|
|
|
if test "$shared_sqlite" = no; then
|
2016-01-06 04:20:25 +01:00
|
|
|
SQLITE_OBJ='sqlite3.$(OBJEXT)'
|
2014-05-29 23:53:43 +02:00
|
|
|
fi
|
|
|
|
|
2014-06-01 21:50:01 +02:00
|
|
|
AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
|
|
|
|
AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
|
2016-01-06 04:20:25 +01:00
|
|
|
AC_SUBST(SQLITE_OBJ)
|
2014-06-01 04:56:12 +02:00
|
|
|
|
2007-01-25 07:40:21 +01:00
|
|
|
dnl **********************************************************************
|
2012-03-02 02:11:42 +01:00
|
|
|
dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
|
2007-01-25 07:40:21 +01:00
|
|
|
dnl **********************************************************************
|
|
|
|
|
2012-03-02 02:11:42 +01:00
|
|
|
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.])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
dnl **********************************************************************
|
|
|
|
dnl Check for --with-logdir
|
|
|
|
dnl **********************************************************************
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([whether to modify logdir])
|
2016-02-06 23:17:48 +01:00
|
|
|
AC_ARG_WITH(logdir,
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_HELP_STRING([--with-logdir=DIR],
|
|
|
|
[Directory where to write logfiles.]),
|
|
|
|
[ logdir=`echo $withval | sed 's/\/$//'`
|
2012-03-01 03:41:09 +01:00
|
|
|
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])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
dnl **********************************************************************
|
|
|
|
dnl Check for --with-helpdir
|
|
|
|
dnl **********************************************************************
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([whether to modify helpdir])
|
2016-02-06 23:17:48 +01:00
|
|
|
AC_ARG_WITH(helpdir,
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_HELP_STRING([--with-helpdir=DIR],
|
|
|
|
[Directory to install help files.]),
|
|
|
|
[ helpdir=`echo $withval | sed 's/\/$//'`
|
2012-03-01 03:41:09 +01:00
|
|
|
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])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
dnl **********************************************************************
|
|
|
|
dnl Check for --with-moduledir
|
|
|
|
dnl **********************************************************************
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([whether to modify moduledir])
|
2016-02-06 23:17:48 +01:00
|
|
|
AC_ARG_WITH(moduledir,
|
2012-03-01 03:41:09 +01:00
|
|
|
[AC_HELP_STRING([--with-moduledir=DIR],
|
|
|
|
[Directory to install modules.])],
|
2007-01-25 07:40:21 +01:00
|
|
|
[ moduledir=`echo $withval | sed 's/\/$//'`
|
2012-03-01 03:41:09 +01:00
|
|
|
AC_MSG_RESULT(yes)],
|
|
|
|
[ AS_IF([test "x$enable_fhs_paths" = "xyes"],
|
|
|
|
[moduledir='${pkglibdir}/modules'],
|
|
|
|
[moduledir='${prefix}/modules'])
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_MSG_RESULT(no)
|
2012-03-01 03:41:09 +01:00
|
|
|
])
|
|
|
|
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.])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
2011-05-08 15:55:32 +02:00
|
|
|
dnl **********************************************************************
|
|
|
|
dnl Branding
|
|
|
|
dnl **********************************************************************
|
|
|
|
|
|
|
|
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])]
|
|
|
|
)
|
|
|
|
|
|
|
|
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])]
|
|
|
|
)
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
|
|
|
|
AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
|
|
|
|
|
2011-05-08 16:06:19 +02:00
|
|
|
if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
|
|
|
|
AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
|
|
|
|
fi
|
|
|
|
|
2016-03-18 20:57:08 +01:00
|
|
|
dnl **********************************************************************
|
|
|
|
dnl Enable oper chghost
|
|
|
|
dnl **********************************************************************
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(oper-chghost,
|
2016-03-18 21:02:59 +01:00
|
|
|
AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
|
2016-03-18 20:57:08 +01:00
|
|
|
[operchghost=$enableval],[operchghost=no])
|
|
|
|
|
|
|
|
if test "$operchghost" = yes; then
|
|
|
|
AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.])
|
|
|
|
fi
|
|
|
|
|
2007-01-25 07:40:21 +01:00
|
|
|
dnl Debug-related options
|
|
|
|
dnl =====================
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(assert,
|
|
|
|
AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]),
|
|
|
|
[assert=$enableval], [assert=no])
|
|
|
|
|
|
|
|
if test "$assert" = no; then
|
|
|
|
AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
|
|
|
|
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";
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_MSG_CHECKING(if you want to do a profile build)
|
|
|
|
AC_ARG_ENABLE(profile,
|
|
|
|
AC_HELP_STRING([--enable-profile],[Enable profiling]),
|
|
|
|
[profile=$enableval], [profile=no])
|
|
|
|
|
|
|
|
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.])
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT([no, profile builds only work with gcc])
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
fi
|
|
|
|
|
2016-01-08 14:09:47 +01:00
|
|
|
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.])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
AC_ARG_WITH(nicklen,
|
2011-11-29 23:32:10 +01:00
|
|
|
AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
|
2007-01-25 07:40:21 +01:00
|
|
|
[
|
2016-02-06 23:17:48 +01:00
|
|
|
if ! expr "$withval" + 0 >/dev/null 2>&1; then
|
2008-10-19 17:27:35 +02:00
|
|
|
AC_ERROR([NICKLEN must be a numeric value])
|
2016-02-06 23:17:48 +01:00
|
|
|
fi
|
2011-11-29 23:41:18 +01:00
|
|
|
if test $withval -gt 50; then
|
2007-01-25 07:40:21 +01:00
|
|
|
NICKLEN=50
|
|
|
|
AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
|
2011-11-29 23:41:18 +01:00
|
|
|
elif test $withval -lt 9; then
|
|
|
|
NICKLEN=9
|
|
|
|
AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9])
|
2007-01-25 07:40:21 +01:00
|
|
|
else
|
|
|
|
NICKLEN="$withval"
|
|
|
|
fi
|
2011-11-29 23:32:10 +01:00
|
|
|
], [NICKLEN=31])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
2016-02-06 23:17:48 +01:00
|
|
|
AC_ARG_WITH(topiclen,
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
|
|
|
|
[
|
2016-02-06 21:59:42 +01:00
|
|
|
if test $withval -gt 390; then
|
2007-01-25 07:40:21 +01:00
|
|
|
TOPICLEN=390
|
|
|
|
AC_MSG_WARN([TOPICLEN has a hard limit of 390. Setting TOPICLEN=390])
|
|
|
|
else
|
|
|
|
TOPICLEN=$withval
|
|
|
|
fi
|
|
|
|
], [TOPICLEN=390])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
|
|
|
|
AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
|
|
|
|
|
2016-03-07 12:15:35 +01:00
|
|
|
# rpath, for finding librb.so at run time
|
2008-05-17 17:46:37 +02:00
|
|
|
hold_ldflags=$LDFLAGS
|
|
|
|
AC_MSG_CHECKING(for the ld -rpath flag)
|
|
|
|
LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
|
2016-02-06 15:23:58 +01:00
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no)
|
2008-05-17 17:46:37 +02:00
|
|
|
LDFLAGS=$hold_ldflags
|
|
|
|
AC_MSG_RESULT($found)
|
|
|
|
if test "$found" = yes; then
|
|
|
|
LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
|
|
|
|
fi
|
|
|
|
|
2007-01-25 07:40:21 +01:00
|
|
|
# This must be down here, or it will mess up checks like the ones
|
|
|
|
# for -Wl,-export-dynamic
|
|
|
|
# -- jilles
|
2008-04-09 18:28:47 +02:00
|
|
|
CWARNS=""
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_ARG_ENABLE(warnings,
|
|
|
|
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)
|
2008-06-03 20:50:50 +02:00
|
|
|
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)
|
2007-01-25 07:40:21 +01:00
|
|
|
CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], charybdis_cv_c_gcc_prototypes)
|
2016-03-22 21:40:19 +01:00
|
|
|
CHARYBDIS_C_GCC_TRY_FLAGS([-Wparentheses], charybdis_cv_c_gcc_parentheses)
|
2007-01-25 07:40:21 +01:00
|
|
|
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)
|
2009-02-22 00:45:41 +01:00
|
|
|
CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format)
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
IRC_CFLAGS="$CFLAGS"
|
|
|
|
],[])
|
|
|
|
|
2008-04-09 18:28:47 +02:00
|
|
|
IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
|
|
|
|
|
2007-01-25 07:40:21 +01:00
|
|
|
AC_SUBST(MODULES_LIBS)
|
|
|
|
AC_SUBST(MOD_TARGET)
|
|
|
|
|
|
|
|
AC_SUBST(SSL_SRCS_ENABLE)
|
|
|
|
AC_SUBST(SSL_INCLUDES)
|
|
|
|
AC_SUBST(SSL_LIBS)
|
|
|
|
|
|
|
|
AC_SUBST(LDFLAGS)
|
|
|
|
AC_SUBST(PICFLAGS)
|
|
|
|
AC_SUBST(IRC_CFLAGS)
|
|
|
|
AC_SUBST(SEDOBJ)
|
|
|
|
|
|
|
|
|
2016-02-06 23:17:48 +01:00
|
|
|
if test "$prefix" = "NONE"; then
|
2007-01-25 07:40:21 +01:00
|
|
|
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
|
|
|
|
|
|
|
|
prefix=`echo $prefix | sed 's/\/$//'`
|
|
|
|
AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.])
|
2016-02-06 23:17:48 +01:00
|
|
|
|
2007-01-25 07:40:21 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
AC_CONFIG_FILES( \
|
|
|
|
Makefile \
|
2016-01-06 09:31:11 +01:00
|
|
|
authd/Makefile \
|
2010-01-07 23:51:09 +01:00
|
|
|
bandb/Makefile \
|
2008-04-06 12:50:29 +02:00
|
|
|
ssld/Makefile \
|
2016-03-26 03:03:17 +01:00
|
|
|
wsockd/Makefile \
|
2007-01-25 07:40:21 +01:00
|
|
|
extensions/Makefile \
|
2016-01-06 08:16:49 +01:00
|
|
|
ircd/Makefile \
|
2007-01-25 07:40:21 +01:00
|
|
|
modules/Makefile \
|
|
|
|
tools/Makefile \
|
2013-06-05 07:49:19 +02:00
|
|
|
tools/genssl \
|
2007-01-25 07:40:21 +01:00
|
|
|
doc/Makefile \
|
|
|
|
help/Makefile \
|
|
|
|
)
|
2013-06-05 07:49:19 +02:00
|
|
|
AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl])
|
2007-01-25 07:40:21 +01:00
|
|
|
|
|
|
|
AC_OUTPUT
|
|
|
|
|
|
|
|
if test "$cf_openssl_version_ok" = yes; then
|
|
|
|
openssl="yes"
|
|
|
|
else
|
|
|
|
openssl="no"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "
|
2011-05-08 15:55:32 +02:00
|
|
|
Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
|
2007-01-25 07:40:21 +01:00
|
|
|
Install directory : $prefix
|
|
|
|
|
|
|
|
Ziplinks : $zlib
|
|
|
|
OpenSSL : $openssl
|
|
|
|
|
|
|
|
Nickname length : $NICKLEN
|
|
|
|
Topic length : $TOPICLEN
|
|
|
|
|
2011-05-08 15:55:32 +02:00
|
|
|
Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
|
2007-01-25 07:40:21 +01:00
|
|
|
"
|