mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-07-07 01:43:12 +02:00
eddb406807
This should get rid of some annoying untracable (and usually rare) crashbugs in the old resolver. Besides that, it makes things look more clean and understandable. This should be the fix for the following bugids (all the same issue): #2499, #2551, #2558, #2559, #2603, #2642, #2502, #2501, #2618, #2616. Feedback and testing is very much welcomed (syzop@unrealircd.com).
493 lines
15 KiB
Plaintext
493 lines
15 KiB
Plaintext
dnl Process this file with autoconf to produce a configure script.
|
|
AC_INIT(src/ircd.c)
|
|
if test $# = 0; then
|
|
echo "You might want to run ./Config or provide some parameters to this script."
|
|
echo "./configure --help for information about this script"
|
|
exit 0
|
|
fi
|
|
AC_CONFIG_HEADER(include/setup.h)
|
|
AC_PROG_CC
|
|
if test "$ac_cv_prog_gcc" = "yes"; then
|
|
CFLAGS="$CFLAGS -funsigned-char"
|
|
AC_CACHE_CHECK(if gcc has a working -pipe, ac_cv_pipe, [
|
|
save_cflags="$CFLAGS"
|
|
CFLAGS="$CFLAGS -pipe"
|
|
AC_TRY_COMPILE(,, ac_cv_pipe="yes", ac_cv_pipe="no")
|
|
CFLAGS="$save_cflags"
|
|
])
|
|
if test "$ac_cv_pipe" = "yes"; then
|
|
CFLAGS="-pipe $CFLAGS"
|
|
fi
|
|
fi
|
|
|
|
dnl (the gcc flag detection trick is taken from xemacs/Vin Shelton)
|
|
|
|
dnl UnrealIRCd might not be strict-aliasing safe at this time
|
|
case "`$CC -v --help 2>&1`" in
|
|
*-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
|
|
esac
|
|
|
|
dnl Pointer signedness warnings are really a pain and 99.9% of the time
|
|
dnl they are of absolutely no use whatsoever. IMO the person who decided
|
|
dnl to enable this without -Wall should be shot on sight.
|
|
case "`$CC -v --help 2>&1`" in
|
|
*-Wpointer-sign* ) CFLAGS="$CFLAGS -Wno-pointer-sign" ;;
|
|
esac
|
|
|
|
AC_PATH_PROG(RM,rm)
|
|
AC_PATH_PROG(CP,cp)
|
|
AC_PATH_PROG(TOUCH,touch)
|
|
AC_PATH_PROG(OPENSSLPATH,openssl)
|
|
AC_PATH_PROG(INSTALL,install)
|
|
AC_CHECK_PROG(MAKER, gmake, gmake, make)
|
|
AC_PATH_PROG(GMAKE,gmake)
|
|
AC_PATH_PROG(GUNZIP, gunzip)
|
|
AC_PATH_PROG(PKGCONFIG, pkg-config)
|
|
|
|
dnl Checks for libraries.
|
|
AC_CHECK_LIB(descrypt, crypt, [AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-ldescrypt " MKPASSWDLIBS="-ldescrypt"],
|
|
AC_CHECK_LIB(crypt, crypt,[ AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-lcrypt " MKPASSWDLIBS="-lcrypt"]))
|
|
AC_CHECK_LIB(socket, socket,IRCDLIBS="$IRCDLIBS-lsocket " SOCKLIB="-lsocket")
|
|
AC_CHECK_LIB(nsl, inet_ntoa,IRCDLIBS="$IRCDLIBS-lnsl " INETLIB="-lnsl")
|
|
|
|
AC_SUBST(IRCDLIBS)
|
|
AC_SUBST(MKPASSWDLIBS)
|
|
|
|
dnl module checking based on Hyb7's module checking code
|
|
AC_DEFUN(AC_ENABLE_DYN,
|
|
[
|
|
AC_CHECK_FUNC(dlopen,, AC_CHECK_LIB(dl, dlopen,IRCDLIBS="$IRCDLIBS -ldl",
|
|
[
|
|
AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found)
|
|
AC_DEFINE(STATIC_LINKING)
|
|
]))
|
|
|
|
hold_cflags=$CFLAGS
|
|
CFLAGS="$CFLAGS -export-dynamic"
|
|
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
|
|
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
|
|
if test "$ac_cv_export_dynamic" = "no"; then
|
|
CFLAGS=$hold_cflags
|
|
fi
|
|
|
|
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
|
|
if test "$ac_cv_prog_gcc" = "yes"; then
|
|
ac_cv_pic="-fPIC -DPIC -shared"
|
|
case `uname -s` in
|
|
Darwin*[)]
|
|
ac_cv_pic="-bundle -flat_namespace -undefined suppress"
|
|
;;
|
|
HP-UX*[)]
|
|
ac_cv_pic="-fPIC"
|
|
;;
|
|
esac
|
|
else
|
|
case `uname -s` in
|
|
SunOS*[)]
|
|
ac_cv_pic="-KPIC -DPIC -G"
|
|
;;
|
|
esac
|
|
fi
|
|
])
|
|
AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
|
|
cat >uscore.c << __EOF__
|
|
int main() {
|
|
return 0;
|
|
}
|
|
__EOF__
|
|
$CC -o uscore $CFLAGS uscore.c 1>&5
|
|
if test -z "`strings -a uscore |grep '^_main$'`"; then
|
|
ac_cv_underscore=no
|
|
else
|
|
ac_cv_underscore=yes
|
|
fi
|
|
rm -f uscore uscore.c
|
|
])
|
|
if test "$ac_cv_underscore" = "yes"; then
|
|
AC_DEFINE(UNDERSCORE)
|
|
fi
|
|
|
|
MODULEFLAGS=$ac_cv_pic
|
|
AC_DEFINE(DYNAMIC_LINKING)
|
|
])
|
|
AC_DEFUN(AC_ENABLE_INET6,[
|
|
AC_CACHE_CHECK(if your system has IPv6 support, ac_cv_ip6, [
|
|
save_libs="$LIBS"
|
|
LIBS="$LIBS $SOCKLIB"
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
int main() {
|
|
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
|
|
exit(1);
|
|
exit(0);
|
|
}
|
|
], ac_cv_ip6=yes, ac_cv_ip6=no)
|
|
])
|
|
if test "$ac_cv_ip6" = "no"; then
|
|
AC_MSG_WARN(Your system does not support IPv6 so it will not be enabled)
|
|
else
|
|
AC_DEFINE(INET6)
|
|
dnl in6addr_any detection code taken from ratbox
|
|
AC_MSG_CHECKING([for struct in6addr_any])
|
|
AC_COMPILE_IFELSE(
|
|
[AC_LANG_PROGRAM(
|
|
[[#define IN_AUTOCONF
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <netinet/in.h>]],
|
|
[[struct in6_addr a = in6addr_any;]]
|
|
)],
|
|
[AC_MSG_RESULT(yes)],
|
|
[
|
|
AC_MSG_RESULT(no)
|
|
AC_DEFINE(NO_IN6ADDR_ANY)
|
|
]
|
|
)
|
|
fi
|
|
LIBS="$save_libs"
|
|
])
|
|
|
|
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(PARAMH))
|
|
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(STDLIBH))
|
|
AC_CHECK_HEADER(stddef.h,AC_DEFINE(STDDEFH))
|
|
AC_CHECK_HEADER(sys/syslog.h,AC_DEFINE(SYSSYSLOGH))
|
|
AC_CHECK_HEADER(unistd.h,AC_DEFINE(UNISTDH))
|
|
AC_CHECK_HEADER(string.h,AC_DEFINE(STRINGH))
|
|
AC_CHECK_HEADER(strings.h,AC_DEFINE(STRINGSH))
|
|
AC_CHECK_HEADER(malloc.h,AC_DEFINE(MALLOCH,<malloc.h>))
|
|
AC_CHECK_HEADER(sys/rusage.h,AC_DEFINE(RUSAGEH))
|
|
AC_CHECK_HEADER(glob.h,AC_DEFINE(GLOBH))
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_TYPE_SIZE_T
|
|
AC_HEADER_TIME
|
|
AC_STRUCT_TM
|
|
AC_TYPE_UID_T
|
|
unreal_CHECK_TYPE_SIZES
|
|
|
|
AC_CACHE_CHECK(what kind of nonblocking sockets you have, ac_cv_nonblocking,[
|
|
save_libs="$LIBS"
|
|
LIBS="$LIBS $SOCKLIB"
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <fcntl.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/file.h>
|
|
#include <signal.h>
|
|
alarmed() {
|
|
exit(1);
|
|
}
|
|
int main() {
|
|
#ifdef O_NONBLOCK
|
|
char b[12], x[32];
|
|
int f, l = sizeof(x);
|
|
f = socket(AF_INET, SOCK_DGRAM, 0);
|
|
if (f >= 0 && !(fcntl(f, F_SETFL, O_NONBLOCK))) {
|
|
signal(SIGALRM, alarmed);
|
|
alarm(3);
|
|
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
|
|
alarm(0);
|
|
exit(0);
|
|
}
|
|
#endif
|
|
exit(1);
|
|
}
|
|
],ac_cv_nonblocking=O_NONBLOCK,[
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <fcntl.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/file.h>
|
|
#include <signal.h>
|
|
alarmed() {
|
|
exit(0);
|
|
}
|
|
int main() {
|
|
#ifdef O_NDELAY
|
|
char b[12], x[32];
|
|
int f, l = sizeof(x);
|
|
f = socket(AF_INET, SOCK_DGRAM, 0);
|
|
if (f >= 0 && !(fcntl(f, F_SETFL, O_NDELAY))) {
|
|
signal(SIGALRM, alarmed);
|
|
alarm(3);
|
|
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
|
|
alarm(0);
|
|
exit(0);
|
|
}
|
|
#endif
|
|
exit(1);
|
|
}],ac_cv_nonblocking=O_NDELAY,[
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <fcntl.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/file.h>
|
|
#include <signal.h>
|
|
alarmed() {
|
|
exit(1);
|
|
}
|
|
int main() {
|
|
#ifdef FIONBIO
|
|
char b[12], x[32];
|
|
int f, l = sizeof(x);
|
|
f = socket(AF_INET, SOCK_DGRAM, 0);
|
|
if (f >= 0 && !(fcntl(f, F_SETFL, FIONBIO))) {
|
|
signal(SIGALRM, alarmed);
|
|
alarm(3);
|
|
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
|
|
alarm(0);
|
|
exit(0);
|
|
}
|
|
#endif
|
|
exit(1);
|
|
], ac_cv_nonblocking=FIONBIO,ac_cv_nonblocking=none)])])])
|
|
if test "$ac_cv_nonblocking" = "O_NONBLOCK"; then
|
|
AC_DEFINE(NBLOCK_POSIX)
|
|
elif test "$ac_cv_nonblocking" = "O_NDELAY"; then
|
|
AC_DEFINE(NBLOCK_BSD)
|
|
elif test "$ac_cv_nonblocking" = "FIONBIO"; then
|
|
AC_DEFINE(NBLOCK_SYSV)
|
|
fi
|
|
LIBS="$save_libs"
|
|
dnl Checks for library functions.
|
|
AC_PROG_GCC_TRADITIONAL
|
|
AC_FUNC_SETPGRP
|
|
AC_FUNC_SETVBUF_REVERSED
|
|
AC_FUNC_ALLOCA
|
|
AC_CHECK_FUNCS(snprintf,AC_DEFINE(HAVE_SNPRINTF))
|
|
AC_CHECK_FUNCS(vsnprintf,AC_DEFINE(HAVE_VSNPRINTF))
|
|
AC_CHECK_FUNCS(strlcpy, AC_DEFINE(HAVE_STRLCPY))
|
|
AC_CHECK_FUNCS(strlcat, AC_DEFINE(HAVE_STRLCAT))
|
|
AC_CHECK_FUNCS(strlncat, AC_DEFINE(HAVE_STRLNCAT))
|
|
AC_CHECK_FUNCS(inet_pton, AC_DEFINE(HAVE_INET_PTON))
|
|
AC_CHECK_FUNCS(inet_ntop, AC_DEFINE(HAVE_INET_NTOP))
|
|
dnl Check if it supports C99 style variable length arrays
|
|
AC_CACHE_CHECK(if C99 variable length arrays are supported, ac_cv_varlen_arrays, [
|
|
AC_TRY_COMPILE(,[
|
|
int main() {
|
|
int i = 5;
|
|
int a[i];
|
|
a[0] = 1;
|
|
return 0;
|
|
}], ac_cv_varlen_arrays=yes, ac_cv_varlen_arrays=no)
|
|
])
|
|
if test "$ac_cv_varlen_arrays" = "yes" ; then
|
|
AC_DEFINE(HAVE_C99_VARLEN_ARRAY)
|
|
fi
|
|
AC_CACHE_CHECK(if we can set the core size to unlimited, ac_cv_force_core,[
|
|
AC_TRY_RUN([
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
#include <unistd.h>
|
|
int main() {
|
|
struct rlimit corelim;
|
|
corelim.rlim_cur = corelim.rlim_max = RLIM_INFINITY;
|
|
if (setrlimit(RLIMIT_CORE, &corelim))
|
|
exit(1);
|
|
exit(0);
|
|
}
|
|
],ac_cv_force_core=yes,ac_cv_force_core=no)
|
|
])
|
|
if test "$ac_cv_force_core" = "yes"; then
|
|
AC_DEFINE(FORCE_CORE)
|
|
fi
|
|
AC_FUNC_VPRINTF
|
|
AC_CHECK_FUNCS(gettimeofday,AC_DEFINE(GETTIMEOFDAY),[AC_CHECK_FUNCS(lrand48,AC_DEFINE(LRADN48))])
|
|
AC_CHECK_FUNCS(getrusage,AC_DEFINE(GETRUSAGE_2),[AC_CHECK_FUNCS(times,AC_DEFINE(TIMES_2))])
|
|
AC_CHECK_FUNCS(setproctitle,AC_DEFINE(HAVE_SETPROCTITLE),[
|
|
AC_CHECK_LIB(util,setproctitle,AC_DEFINE(HAVE_SETPROCTITLE) IRCDLIBS="$IRCDLIBS-lutil",[
|
|
AC_EGREP_HEADER([#define.*PS_STRINGS.*],sys/exec.h,AC_DEFINE(HAVE_PSSTRINGS),[
|
|
AC_CHECK_FUNCS(pstat,AC_DEFINE(HAVE_PSTAT))
|
|
])
|
|
])
|
|
])
|
|
AC_CACHE_CHECK(what type of signals you have, ac_cv_sigtype, [
|
|
AC_TRY_RUN([
|
|
#include <signal.h>
|
|
int main() {
|
|
sigaction(SIGTERM, (struct sigaction *)0L, (struct sigaction *)0L);
|
|
}
|
|
], ac_cv_sigtype=POSIX, [
|
|
AC_TRY_RUN([
|
|
#include <signal.h>
|
|
int calls = 0;
|
|
void handler()
|
|
{
|
|
if (calls)
|
|
return;
|
|
calls++;
|
|
kill(getpid(), SIGTERM);
|
|
sleep(1);
|
|
}
|
|
|
|
int main() {
|
|
signal(SIGTERM, handler);
|
|
kill(getpid(), SIGTERM);
|
|
exit(0);
|
|
}
|
|
], ac_cv_sigtype=BSD,ac_cv_sigtype=SYSV)])])
|
|
|
|
if test "$ac_cv_sigtype" = "POSIX"; then
|
|
AC_DEFINE(POSIX_SIGNALS)
|
|
elif test "$ac_cv_sigtype" = "BSD"; then
|
|
AC_DEFINE(BSD_RELIABLE_SIGNALS)
|
|
else
|
|
AC_DEFINE(SYSV_UNRELIABLE_SIGNALS)
|
|
fi
|
|
AC_CHECK_FUNCS(strtoken,,AC_DEFINE(NEED_STRTOKEN))
|
|
AC_CHECK_FUNCS(strtok,,AC_DEFINE(NEED_STRTOK))
|
|
AC_CHECK_FUNCS(strerror,,AC_DEFINE(NEED_STRERROR))
|
|
AC_CHECK_FUNCS(index,,AC_DEFINE(NOINDEX))
|
|
AC_CHECK_FUNCS(strtoul,,STRTOUL="strtoul.o")
|
|
AC_CHECK_FUNCS(bcopy,,AC_DEFINE(NEED_BCOPY))
|
|
AC_CHECK_FUNCS(bcmp,,AC_DEFINE(NEED_BCMP))
|
|
AC_CHECK_FUNCS(bzero,,AC_DEFINE(NEED_BZERO))
|
|
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE(GOT_STRCASECMP))
|
|
save_libs="$LIBS"
|
|
LIBS="$LIBS $SOCKLIB $INETLIB"
|
|
AC_CHECK_FUNCS(inet_addr,,AC_DEFINE(NEED_INET_ADDR))
|
|
AC_CHECK_FUNCS(inet_ntoa,,AC_DEFINE(NEED_INET_NTOA))
|
|
AC_CHECK_FUNCS(inet_netof,,AC_DEFINE(NEED_INET_NETOF))
|
|
LIBS="$save_libs"
|
|
AC_CHECK_FUNCS(syslog,AC_DEFINE(HAVE_SYSLOG))
|
|
AC_CHECK_FUNCS(vsyslog,AC_DEFINE(HAVE_VSYSLOG))
|
|
AC_SUBST(STRTOUL)
|
|
AC_SUBST(CRYPTOLIB)
|
|
AC_SUBST(MODULEFLAGS)
|
|
AC_ARG_WITH(listen, [AC_HELP_STRING([--with-listen=backlog],[Specify the listen backlog value])],
|
|
AC_DEFINE_UNQUOTED(LISTEN_SIZE,$withval),AC_DEFINE(LISTEN_SIZE,5))
|
|
AC_ARG_WITH(nick-history, [AC_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
|
|
AC_DEFINE_UNQUOTED(NICKNAMEHISTORYLENGTH,$withval), AC_DEFINE(NICKNAMEHISTORYLENGTH,2000))
|
|
AC_ARG_WITH(sendq, [AC_HELP_STRING([--with-sendq=maxsendq],[Specify the max sendq for the server])],
|
|
AC_DEFINE_UNQUOTED(MAXSENDQLENGTH,$withval),AC_DEFINE(MAXSENDQLENGTH,3000000))
|
|
AC_ARG_WITH(bufferpool, [AC_HELP_STRING([--with-bufferpool=size],[Specify the size of the buffer pool])],
|
|
AC_DEFINE_UNQUOTED(BUFFERPOOL,[($withval * MAXSENDQLENGTH)]),AC_DEFINE(BUFFERPOOL,[(18 * MAXSENDQLENGTH)]))
|
|
AC_ARG_WITH(hostname, [AC_HELP_STRING([--with-hostname=host],[Specify the local hostname of the server])], AC_DEFINE_UNQUOTED(DOMAINNAME,"$withval"),AC_DEFINE_UNQUOTED(DOMAINNAME,"`hostname`"))
|
|
AC_DEFINE_UNQUOTED(MYOSNAME,"`uname -a`")
|
|
AC_ARG_WITH(permissions, [AC_HELP_STRING([--with-permissions=permissions],[Specify the default permissions for
|
|
configuration files])], AC_DEFINE_UNQUOTED(DEFAULT_PERMISSIONS,$withval), AC_DEFINE(DEFAULT_PERMISSIONS, 0600))
|
|
AC_ARG_WITH(dpath, [AC_HELP_STRING([--with-dpath=path],[Specify the path where configuration files are stored])],
|
|
AC_DEFINE_UNQUOTED(DPATH, "$withval") IRCDDIR="$withval", AC_DEFINE_UNQUOTED(DPATH,"`pwd`") IRCDDIR="`pwd`")
|
|
AC_ARG_WITH(fd-setsize, [AC_HELP_STRING([--with-fd-setsize=size],[Specify the max file descriptors to use])],
|
|
ac_fd=$withval, ac_fd=1024)
|
|
AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $ac_fd)
|
|
AC_ARG_WITH(spath, [AC_HELP_STRING([--with-spath],[Specify the location of the executable])],
|
|
AC_DEFINE_UNQUOTED(SPATH,"$withval") BINDIR="$withval",AC_DEFINE_UNQUOTED(SPATH,"`pwd`/src/ircd") BINDIR="`pwd`/src/ircd")
|
|
AC_ARG_ENABLE(nospoof, [AC_HELP_STRING([--enable-nospoof],[Enable spoofing protection])], AC_DEFINE(NOSPOOF))
|
|
AC_ARG_ENABLE(prefixaq, [AC_HELP_STRING([--enable-prefixaq],[Enable chanadmin and chanowner prefixes])], AC_DEFINE(PREFIX_AQ))
|
|
AC_ARG_ENABLE(hub, [AC_HELP_STRING([--enable-hub],[Compile as a hub server])], AC_DEFINE(HUB))
|
|
AC_ARG_WITH(showlistmodes, [AC_HELP_STRING([--with-showlistmodes], [Specify whether modes are shown in /list])],
|
|
AC_DEFINE(LIST_SHOW_MODES))
|
|
AC_ARG_WITH(topicisnuhost, [AC_HELP_STRING([--with-topicisnuhost], [Display nick!user@host as the topic setter])],
|
|
AC_DEFINE(TOPIC_NICK_IS_NUHOST))
|
|
AC_ARG_WITH(shunnotices, [AC_HELP_STRING([--with-shunnotices], [Notify a user when he/she is no longer shunned])],
|
|
AC_DEFINE(SHUN_NOTICES))
|
|
AC_ARG_WITH(no-operoverride, [AC_HELP_STRING([--with-no-operoverride], [Disable OperOverride])],
|
|
AC_DEFINE(NO_OPEROVERRIDE))
|
|
AC_ARG_WITH(disableusermod, [AC_HELP_STRING([--with-disableusermod], [Disable /set* and /chg*])],
|
|
AC_DEFINE(DISABLE_USERMOD))
|
|
AC_ARG_WITH(operoverride-verify, [AC_HELP_STRING([--with-operoverride-verify], [Require opers to invite themselves to +s/+p channels])],
|
|
AC_DEFINE(OPEROVERRIDE_VERIFY))
|
|
CHECK_SSL
|
|
CHECK_ZLIB
|
|
CHECK_LIBCURL
|
|
AC_ARG_ENABLE(dynamic-linking, [AC_HELP_STRING([--enable-dynamic-linking],[Make the IRCd dynamically link shared objects rather than statically])], AC_ENABLE_DYN, AC_DEFINE(STATIC_LINKING))
|
|
AC_ARG_ENABLE(inet6, [AC_HELP_STRING([--enable-inet6],[Make the IRCd support IPv6])], AC_ENABLE_INET6)
|
|
AC_SUBST(IRCDDIR)
|
|
AC_SUBST(BINDIR)
|
|
AC_MSG_CHECKING(if FD_SETSIZE is large enough to allow $ac_fd file descriptors)
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <sys/time.h>
|
|
int main() {
|
|
if (FD_SETSIZE >= $ac_fd)
|
|
exit(0);
|
|
exit(1);
|
|
}
|
|
], AC_MSG_RESULT(yes), [
|
|
FD_SETSIZE="-DFD_SETSIZE=$ac_fd"
|
|
AC_MSG_RESULT(no)
|
|
])
|
|
AC_SUBST(FD_SETSIZE)
|
|
case `uname -s` in
|
|
*SunOS*)
|
|
CFLAGS="$CFLAGS -D_SOLARIS"
|
|
IRCDLIBS="$IRCDLIBS -lresolv "
|
|
;;
|
|
*solaris*)
|
|
CFLAGS="$CFLAGS -D_SOLARIS"
|
|
IRCDLIBS="$IRCDLIBS -lresolv "
|
|
;;
|
|
esac
|
|
|
|
dnl REMEMBER TO CHANGE WITH A NEW TRE RELEASE!
|
|
tre_version="0.7.2"
|
|
AC_MSG_RESULT(extracting TRE regex library)
|
|
cur_dir=`pwd`
|
|
cd extras
|
|
dnl remove old tre directory to force a recompile...
|
|
rm -rf tre-$tre_version
|
|
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
|
tar xfz tre.tar.gz
|
|
else
|
|
cp tre.tar.gz tre.tar.gz.bak
|
|
gunzip -f tre.tar.gz
|
|
cp tre.tar.gz.bak tre.tar.gz
|
|
tar xf tre.tar
|
|
fi
|
|
AC_MSG_RESULT(configuring TRE regex library)
|
|
cd tre-$tre_version
|
|
./configure --disable-agrep --disable-shared --disable-system-abi --disable-wchar --disable-multibyte --prefix=$cur_dir/extras/regexp || exit 1
|
|
AC_MSG_RESULT(compiling TRE regex library)
|
|
$ac_cv_prog_MAKER || exit 1
|
|
AC_MSG_RESULT(installing TRE regex library)
|
|
$ac_cv_prog_MAKER install || exit 1
|
|
TREINCDIR="$cur_dir/extras/regexp/include"
|
|
AC_SUBST(TREINCDIR)
|
|
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
|
|
TRELIBS="-L../extras/regexp/lib -ltre"
|
|
else
|
|
TRELIBS=`$ac_cv_path_PKGCONFIG --libs tre.pc`
|
|
fi
|
|
AC_SUBST(TRELIBS)
|
|
cd $cur_dir
|
|
|
|
|
|
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
|
|
cares_version="1.3.0"
|
|
AC_MSG_RESULT(extracting c-ares resolver library)
|
|
cur_dir=`pwd`
|
|
cd extras
|
|
dnl remove old c-ares directory to force a recompile...
|
|
rm -rf c-ares-$cares_version
|
|
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
|
tar xfz c-ares.tar.gz
|
|
else
|
|
cp c-ares.tar.gz c-ares.tar.gz.bak
|
|
gunzip -f c-ares.tar.gz
|
|
cp c-ares.tar.gz.bak c-ares.tar.gz
|
|
tar xf c-ares.tar
|
|
fi
|
|
AC_MSG_RESULT(configuring c-ares library)
|
|
cd c-ares-$cares_version
|
|
./configure --prefix=$cur_dir/extras/c-ares || exit 1
|
|
AC_MSG_RESULT(compiling c-ares resolver library)
|
|
$ac_cv_prog_MAKER || exit 1
|
|
AC_MSG_RESULT(installing c-ares resolver library)
|
|
$ac_cv_prog_MAKER install || exit 1
|
|
CARESINCDIR="$cur_dir/extras/c-ares/include"
|
|
AC_SUBST(CARESINCDIR)
|
|
CARESLIBS="-L../extras/c-ares/lib -lcares"
|
|
AC_SUBST(CARESLIBS)
|
|
cd $cur_dir
|
|
|
|
|
|
AC_OUTPUT(Makefile src/modules/Makefile unreal ircdcron/ircdchk)
|
|
chmod 0700 unreal
|
|
chmod 0700 ircdcron/ircdchk
|