1 dnl Prefered emacs editing mode: -*- shell-script -*-
3 dnl Process this file with autoconf to produce a configure script.
5 dnl Copyright (c) 1997, by Carlo Wood <carlo@runaway.xs4all.nl>
6 dnl Copyright (C) 2001 Kevin L. Mitchell <klmitch@mit.edu>
8 dnl This program is free software; you can redistribute it and/or modify
9 dnl it under the terms of the GNU General Public License as published by
10 dnl the Free Software Foundation; either version 1, or (at your option)
11 dnl any later version.
13 dnl This program is distributed in the hope that it will be useful,
14 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
15 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 dnl GNU General Public License for more details.
18 dnl You should have received a copy of the GNU General Public License
19 dnl along with this program; if not, write to the Free Software
20 dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 dnl Make sure we are in the correct directory (someone could have run
25 dnl 'configure' with a wrong '--srcdir').
28 dnl Set the default prefix
29 AC_PREFIX_DEFAULT([$HOME])
30 AC_MSG_CHECKING([for installation prefix])
31 AC_CACHE_VAL(unet_cv_prefix, [unet_cv_prefix=$HOME])
32 if test x"$prefix" != xNONE; then
33 unet_cv_prefix=$prefix
35 AC_MSG_RESULT([$unet_cv_prefix])
36 dnl HACK WARNING: We are referencing an autoconf internal variable. This is
37 dnl the only way to force the prefix to be retrieved from the config.cache
39 ac_default_prefix=$unet_cv_prefix
41 dnl Define the input and output configuration header file.
42 AC_CONFIG_HEADER([config.h])
44 dnl Demand at least version 2.50 of autoconf
47 dnl Find out what type of system we are
50 dnl This should be done early.
53 dnl ANSIfy the C compiler whenever possible.
55 dnl Use -O3 instead of -O2.
56 if test x"$CFLAGS" != x; then
57 CFLAGS=`echo "$CFLAGS" | sed -e 's/-O2/-O3/'`
59 dnl Remove -pipe during configure
60 if test x"$CFLAGS" != x; then
61 CFLAGS=`echo "$CFLAGS" | sed -e 's/-pipe//g'`
63 dnl Notice the -g flag and deal accordingly
64 if test x"$CFLAGS" != x; then
65 unet_old_cflags=$CFLAGS
66 CFLAGS=`echo "$CFLAGS" | sed -e 's/-g//g'`
68 if test x"$CFLAGS" != x"$unet_old_cflags"; then
69 # If -g was already there, force symbols to be enabled
70 unet_cv_enable_symbols=yes
72 dnl Notice the -pg flag and deal accordingly
73 if test x"$CFLAGS" != x; then
74 unet_old_cflags=$CFLAGS
75 CFLAGS=`echo "$CFLAGS" | sed -e 's/-pg//g'`
77 if test x"$CFLAGS" != x"$unet_old_cflags"; then
78 # If -pg was already there, force profiling to be enabled
79 unet_cv_enable_profile=yes
81 dnl Notice the -Wall flag and deal accordingly
82 if test x"$CFLAGS" != x; then
83 unet_old_cflags=$CFLAGS
84 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wall//g'`
86 if test x"$CFLAGS" != x"$unet_old_cflags"; then
87 # If -Wall was already there, force warnings to be enabled
88 unet_cv_enable_warnings=yes
90 dnl Notice the -pedantic flag and deal accordingly
91 if test x"$CFLAGS" != x; then
92 unet_old_cflags=$CFLAGS
93 CFLAGS=`echo "$CFLAGS" | sed -e 's/-pedantic//g'`
95 if test x"$CFLAGS" != x"$unet_old_cflags"; then
96 # If -pedantic was already there, force pedatic to be enabled
97 unet_cv_enable_pedantic=yes
100 dnl Checks for libraries.
102 dnl Locate the library containing crypt
103 AC_SEARCH_LIBS(crypt, descrypt crypt, ,
104 [AC_MSG_ERROR([Unable to find library containing crypt()])])
106 dnl Do all the checks necessary to figure out -lnsl / -lsocket stuff
109 dnl Checks for header files.
111 AC_CHECK_HEADERS(crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/socket.h)
113 dnl Checks for typedefs, structures, and compiler characteristics
120 unet_CHECK_TYPE_SIZES
121 AC_CHECK_TYPE(socklen_t, unsigned int)
122 AC_CHECK_TYPE(struct sockaddr_in6, [unet_have_sockaddr_in6="yes"], [unet_have_sockaddr_in6="no"], [#include <sys/types.h>
123 #include <netinet/in.h>])
125 dnl Checks for library functions.
126 AC_CHECK_FUNCS([kqueue setrlimit getrusage times])
128 dnl Do we have restarting syscalls ?
129 AC_SYS_RESTARTABLE_SYSCALLS
131 dnl Check for required features for admins?
132 AC_MSG_CHECKING([for donuts])
135 dnl Test for programs
140 AC_PATH_PROGS(RMPROG, rm, /bin/rm)
141 AC_PATH_PROGS(SHPROG, sh, /bin/sh)
143 dnl (F)LEX - needed for the new conf file parser
145 dnl The autoconf docs say $LEX defaults to 'lex'. They lie.
146 if test "$LEX" = ":" ; then
147 AC_MSG_ERROR([Cannot find flex.])
148 elif echo "" | $LEX -V -v --version > /dev/null 2>&1 ; then
151 AC_MSG_ERROR([Cannot use $LEX as flex.])
154 if test -z "$LEXLIB" ; then
155 AC_MSG_FAILURE([Cannot find a library with yywrap() in, but flex was found.
156 It's possible the compiler you're using ($CC) is incompatible with the
164 dnl The autoconf docs say $YACC defaults to 'yacc'. This seems to be true,
165 dnl but judging from AC_PROG_LEX, it may not stay true.
166 if test "$YACC" = ":" ; then
167 AC_MSG_ERROR([Cannot find yacc.])
168 elif echo "" | $YACC -V -v --version > /dev/null 2>&1 ; then
171 AC_MSG_ERROR([Cannot use $YACC as yacc.])
178 dnl Add -pipe when possible
181 dnl Check OS for os_dep files.
182 AC_MSG_CHECKING(for OS-dependent information)
185 AC_MSG_RESULT([Linux ($host) found.])
186 unet_poll_syscall=yes
190 AC_MSG_RESULT([Solaris ($host) found.])
191 if test x"$ac_cv_header_poll_h" = xyes; then
192 unet_poll_syscall=yes
199 AC_MSG_RESULT([Solaris ($host) found.])
204 AC_MSG_RESULT([OpenBSD ($host) found.])
205 if test x"$ac_cv_header_poll_h" = xyes; then
206 unet_poll_syscall=yes
213 AC_MSG_RESULT([Generic BSD ($host) found.])
214 if test x"$ac_cv_header_poll_h" = xyes; then
215 unet_poll_syscall=yes
222 AC_MSG_RESULT([Darwin (Mac OS X) ($host) found.])
227 AC_MSG_RESULT([Unknown system type $host found.])
228 AC_MSG_WARN([Unknown OS type; using generic routines.])
233 dnl Check user configuration options
234 dnl Start with --enable-poll
235 AC_MSG_CHECKING([whether to enable use of poll()])
236 AC_ARG_ENABLE([poll],
237 [ --enable-poll Force poll to be used regardless of whether or not
238 it is a system call],
239 [unet_cv_enable_poll=$enable_poll],
240 [AC_CACHE_VAL(unet_cv_enable_poll,
241 [unet_cv_enable_poll=$unet_poll_syscall])])
243 # Force poll to be disabled if there is no poll.h
244 if test x"$ac_cv_header_poll_h" != xyes; then
245 unet_cv_enable_poll=no
248 AC_MSG_RESULT([$unet_cv_enable_poll])
250 if test x"$unet_cv_enable_poll" = xyes; then
251 AC_DEFINE([USE_POLL], , [Specify whether or not to use poll()])
252 ENGINE_C=engine_poll.c
254 ENGINE_C=engine_select.c
258 dnl Now look for --enable-debug
259 AC_MSG_CHECKING([whether to enable debug mode])
260 AC_ARG_ENABLE([debug],
261 [ --enable-debug Turn on debugging mode],
262 [unet_cv_enable_debug=$enable_debug],
263 [AC_CACHE_VAL(unet_cv_enable_debug,
264 [unet_cv_enable_debug=no])])
265 AC_MSG_RESULT([$unet_cv_enable_debug])
267 if test x"$unet_cv_enable_debug" = xyes; then
268 AC_DEFINE([DEBUGMODE], , [Enable debugging code])
271 dnl Now look for --enable-leak-detect
272 AC_MSG_CHECKING([whether to enable leak detection])
273 AC_ARG_WITH([leak-detect],
274 [ --with-leak-detect Turn on the leak detector(requires patched boehm)],
275 [unet_cv_with_leak_detect=$with_leak_detect],
276 [AC_CACHE_VAL(unet_cv_with_leak_detect,
277 [unet_cv_with_leak_detect=no])])
278 AC_MSG_RESULT([$unet_cv_enable_leak_detect])
280 if test x"$unet_cv_with_leak_detect" != xno; then
282 CFLAGS="-DMDEBUG $CFLAGS"
283 if test x"$unet_cv_with_leak_detect" != xyes; then
284 LIBS="-L$unet_cv_with_leak_detect $LIBS"
289 AS_HELP_STRING([--without-ipv6], [disable IPv6 support (default is autodetect)]),
290 [ac_cv_use_ipv6=$withval],
291 [ac_cv_use_ipv6=$unet_have_sockaddr_in6])
292 AC_CACHE_CHECK([whether to use IPv6], [ac_cv_use_ipv6], [ac_cv_use_ipv6=no])
293 if test x"$ac_cv_use_ipv6" != "xno" ; then
294 AC_DEFINE([IPV6], , [Enable IPv6 support])
297 dnl And now for --disable-asserts
298 AC_MSG_CHECKING([whether to enable asserts])
299 AC_ARG_ENABLE([asserts],
300 [ --disable-asserts Disable assertion checking],
301 [unet_cv_enable_asserts=$enable_asserts],
302 [AC_CACHE_VAL(unet_cv_enable_asserts,
303 [unet_cv_enable_asserts=yes])])
304 AC_MSG_RESULT([$unet_cv_enable_asserts])
306 if test x"$unet_cv_enable_asserts" = xno; then
307 AC_DEFINE([NDEBUG], , [Disable assertions])
310 dnl Check for --enable-symbols
311 AC_MSG_CHECKING([whether to enable debugging symbols])
312 AC_ARG_ENABLE([symbols],
313 [ --disable-symbols Disable debugging symbols (remove -g from CFLAGS)],
314 [unet_cv_enable_symbols=$enable_symbols],
315 [AC_CACHE_VAL(unet_cv_enable_symbols,
316 [unet_cv_enable_symbols=yes])])
317 AC_MSG_RESULT([$unet_cv_enable_symbols])
319 if test x"$unet_cv_enable_symbols" = xyes; then
323 dnl Now check for --enable-profile
324 AC_MSG_CHECKING([whether to enable profiling support (gprof)])
325 AC_ARG_ENABLE([profile],
326 [ --enable-profile Enable profiling support (add -pg to CFLAGS)],
327 [unet_cv_enable_profile=$enable_profile],
328 [AC_CACHE_VAL(unet_cv_enable_profile,
329 [unet_cv_enable_profile=no])])
330 AC_MSG_RESULT([$unet_cv_enable_profile])
332 if test x"$unet_cv_enable_profile" = xyes; then
336 dnl Now check for --enable-pedantic
337 AC_MSG_CHECKING([whether to enable pedantic compiler warnings])
338 AC_ARG_ENABLE([pedantic],
339 [ --enable-pedantic Enable pedantic warnings (add -pedantic to CFLAGS)],
340 [unet_cv_enable_pedantic=$enable_pedantic],
341 [AC_CACHE_VAL(unet_cv_enable_pedantic,
342 [unet_cv_enable_pedantic=no])])
343 AC_MSG_RESULT([$unet_cv_enable_pedantic])
345 if test x"$unet_cv_enable_pedantic" = xyes; then
346 CFLAGS="-pedantic $CFLAGS"
349 dnl Now check for --enable-warnings
350 AC_MSG_CHECKING([whether to enable compiler warnings])
351 AC_ARG_ENABLE([warnings],
352 [ --enable-warnings Enable warnings (add -Wall to CFLAGS)],
353 [unet_cv_enable_warnings=$enable_warnings],
354 [AC_CACHE_VAL(unet_cv_enable_warnings,
355 [unet_cv_enable_warnings=no])])
356 AC_MSG_RESULT([$unet_cv_enable_warnings])
358 if test x"$unet_cv_enable_warnings" = xyes; then
359 CFLAGS="-Wall $CFLAGS"
362 dnl --disable-inlines check...
363 AC_MSG_CHECKING([whether to enable inlining for a few critical functions])
364 AC_ARG_ENABLE([inlines],
365 [ --disable-inlines Disable inlining for a few critical functions],
366 [unet_cv_enable_inlines=$enable_inlines],
367 [AC_CACHE_VAL(unet_cv_enable_inlines,
368 [unet_cv_enable_inlines=yes])])
369 AC_MSG_RESULT([$unet_cv_enable_inlines])
371 if test x"$unet_cv_enable_inlines" = xyes; then
372 AC_DEFINE([FORCEINLINE], , [Force inlining for a few critical functions])
375 dnl --disable-devpoll check...
376 AC_MSG_CHECKING([whether to enable the /dev/poll event engine])
377 AC_ARG_ENABLE([devpoll],
378 [ --disable-devpoll Disable the /dev/poll-based engine],
379 [unet_cv_enable_devpoll=$enable_devpoll],
380 [AC_CACHE_VAL(unet_cv_enable_devpoll,
381 [unet_cv_enable_devpoll=yes])])
383 if test x"$ac_cv_header_sys_devpoll_h" = xno; then
384 unet_cv_enable_devpoll=no
387 AC_MSG_RESULT([$unet_cv_enable_devpoll])
389 if test x"$unet_cv_enable_devpoll" != xno; then
390 AC_DEFINE([USE_DEVPOLL], , [Define to enable the /dev/poll engine])
391 ENGINE_C="engine_devpoll.c $ENGINE_C"
394 dnl --disable-kqueue check...
395 AC_MSG_CHECKING([whether to enable the kqueue event engine])
396 AC_ARG_ENABLE([kqueue],
397 [ --disable-kqueue Disable the kqueue-based engine],
398 [unet_cv_enable_kqueue=$enable_kqueue],
399 [AC_CACHE_VAL(unet_cv_enable_kqueue,
400 [unet_cv_enable_kqueue=yes])])
402 if test x"$ac_cv_header_sys_event_h" = xno -o x"$ac_cv_func_kqueue" = xno; then
403 unet_cv_enable_kqueue=no
406 AC_MSG_RESULT([$unet_cv_enable_kqueue])
408 if test x"$unet_cv_enable_kqueue" != xno; then
409 AC_DEFINE([USE_KQUEUE], , [Define to enable the kqueue engine])
410 ENGINE_C="engine_kqueue.c $ENGINE_C"
413 dnl --disable-epoll check
414 AC_MSG_CHECKING([whether to enable the epoll event engine])
415 AC_ARG_ENABLE([epoll],
416 [ --disable-epoll Disable the epoll-based engine],
417 [unet_cv_enable_epoll=$enable_epoll],
418 [AC_CACHE_VAL(unet_cv_enable_epoll,
419 [unet_cv_enable_epoll=yes])])
421 if test x"$ac_cv_header_sys_epoll_h" = xno -o x"$ac_cv_func_epoll" = xno; then
422 unet_cv_enable_epoll=no
425 AC_MSG_RESULT([$unet_cv_enable_epoll])
427 dnl If we have the header and user has not refused epoll, we still need
428 dnl to check whether the functions are properly defined.
429 if test x"$unet_cv_enable_epoll" != xno; then
430 AC_MSG_CHECKING([whether epoll functions are properly defined])
431 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/epoll.h>], [epoll_create(10);])],
432 [AC_MSG_RESULT([yes])],
434 AC_DEFINE([EPOLL_NEED_BODY],,[Define to implement epoll system calls])])
435 AC_DEFINE([USE_EPOLL], , [Define to enable the epoll engine])
436 ENGINE_C="engine_epoll.c $ENGINE_C"
439 dnl How to copy one va_list to another?
440 AC_CACHE_CHECK([for va_copy], unet_cv_c_va_copy, [AC_LINK_IFELSE(
441 [AC_LANG_PROGRAM([#include <stdarg.h>], [va_list ap1, ap2; va_copy(ap1, ap2);])],
442 [unet_cv_c_va_copy="yes"],
443 [unet_cv_c_va_copy="no"]
445 if test "$unet_cv_c_va_copy" = "yes" ; then
446 AC_DEFINE(HAVE_VA_COPY, 1, [Define if we have va_copy])
449 AC_CACHE_CHECK([for __va_copy], unet_cv_c___va_copy, [AC_LINK_IFELSE(
450 [AC_LANG_PROGRAM([#include <stdarg.h>], [va_list ap1, ap2; __va_copy(ap1, ap2);])],
451 [unet_cv_c___va_copy="yes"],
452 [unet_cv_c___va_copy="no"]
454 if test "$unet_cv_c___va_copy" = "yes" ; then
455 AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy])
458 dnl --with-symlink lets us set the name of the symlink; defaults to "ircd"
459 AC_MSG_CHECKING([what name to give the symlink])
460 AC_ARG_WITH([symlink],
461 [ --with-symlink=name Name to give the symlink; if name is "no," no
462 symlink will be created.],
463 [unet_cv_with_symlink=$with_symlink],
464 [AC_CACHE_VAL(unet_cv_with_symlink,
465 [unet_cv_with_symlink="ircd"])])
467 if test x"$unet_cv_with_symlink" = xyes; then
468 unet_cv_with_symlink="ircd"
471 AC_MSG_RESULT([$unet_cv_with_symlink])
473 if test x"$unet_cv_with_symlink" = xno; then
474 INSTALL_RULE=install-no-symlink
477 INSTALL_RULE=install-with-symlink
478 SYMLINK=$unet_cv_with_symlink
480 AC_SUBST(INSTALL_RULE)
483 dnl --with-mode lets us set the permissions on the binary
484 AC_MSG_CHECKING([what permissions to set on the installed binary])
486 [ --with-mode=mode Permissions (in octal) to give the binary],
487 [unet_cv_with_mode=$with_mode],
488 [AC_CACHE_VAL(unet_cv_with_mode,
489 [unet_cv_with_mode=711])])
491 if test x"$unet_cv_with_mode" = xyes -o x"$unet_cv_with_mode" = xno; then
492 unet_cv_with_mode=711
495 AC_MSG_RESULT([$unet_cv_with_mode])
497 IRCDMODE=$unet_cv_with_mode
500 dnl --with-owner lets us set the owner of the binary
502 unet_uid=`id | sed -e 's/.*uid=[0-9]*(//' -e 's/).*//' 2> /dev/null`
504 AC_MSG_CHECKING([which user should own the installed binary])
506 [ --with-owner=owner Specify owner of the installed binary],
507 [unet_cv_with_owner=$with_owner],
508 [AC_CACHE_VAL(unet_cv_with_owner,
509 [unet_cv_with_owner=$unet_uid])])
511 if test x"$unet_cv_with_owner" = xyes -o x"$unet_cv_with_owner" = xno; then
512 unet_cv_with_owner=$unet_uid
515 AC_MSG_RESULT([$unet_cv_with_owner])
517 IRCDOWN=$unet_cv_with_owner
520 dnl --with-group lets us set the group owner of the binary
522 unet_gid=`id | sed -e 's/.*gid=[0-9]*(//' -e 's/).*//' 2> /dev/null`
524 AC_MSG_CHECKING([which group should own the installed binary])
526 [ --with-group=group Specify group owner of the installed binary],
527 [unet_cv_with_group=$with_group],
528 [AC_CACHE_VAL(unet_cv_with_group,
529 [unet_cv_with_group=$unet_gid])])
531 if test x"$unet_cv_with_group" = xyes -o x"$unet_cv_with_group" = xno; then
532 unet_cv_with_group=$unet_gid
535 AC_MSG_RESULT([$unet_cv_with_group])
537 IRCDGRP=$unet_cv_with_group
540 dnl --with-domain lets us set the domain name for some statistics-gathering
542 if test -f /etc/resolv.conf; then
543 unet_domain=`awk '/^domain/ { print $2; exit }' /etc/resolv.conf`
544 if test x"$unet_domain" = x; then
545 unet_domain=`awk '/^search/ { print $2; exit }' /etc/resolv.conf`
548 AC_MSG_CHECKING([for site domain name])
549 AC_ARG_WITH([domain],
550 [ --with-domain=domain Domain name to use in local statistics gathering],
551 [unet_cv_with_domain=$with_domain],
552 [AC_CACHE_VAL(unet_cv_with_domain,
553 [unet_cv_with_domain=$unet_domain])])
555 if test x"$unet_cv_with_domain" = xyes -o x"$unet_cv_with_domain" = xno; then
556 unet_cv_with_domain=$unet_domain
558 if test x"$unet_cv_with_domain" = xno; then
559 AC_MSG_ERROR([Unable to determine server DNS domain; use --with-domain to set it])
562 AC_MSG_RESULT([$unet_cv_with_domain])
564 AC_DEFINE_UNQUOTED(DOMAINNAME, "*$unet_cv_with_domain",
565 [Domain name to be used for some statistics gathering])
567 dnl --with-chroot lets us define a directory that we are going to be using
568 dnl as the root of our filesystem
569 AC_MSG_CHECKING([if chroot operation is desired])
570 AC_ARG_WITH([chroot],
571 [ --with-chroot=dir Specify that the server will be operated under
572 a different root directory given by dir. See
573 doc/readme.chroot for more information.],
574 [unet_cv_with_chroot=$with_chroot],
575 [AC_CACHE_VAL(unet_cv_with_chroot,
576 [unet_cv_with_chroot=no])])
578 if test x"$unet_cv_with_chroot" = xyes; then
579 AC_MSG_ERROR([--with-chroot given with no directory. See doc/readme.chroot.])
582 # Ensure there are no trailing /'s to mess us up
583 unet_cv_with_chroot=`echo "$unet_cv_with_chroot" | sed 's%/*$%%'`
585 AC_MSG_RESULT([$unet_cv_with_chroot])
587 dnl Determine some default directory names
589 dnl HACK WARNING: We are referencing an autoconf internal variable. This is
590 dnl the only way to figure out what value $prefix will have when we go to do
591 dnl the install--and the only way we can stick that value in our definitions
593 # Deal with the annoying value "NONE" here
594 unet_save_prefix=$prefix
595 if test x"$prefix" = xNONE; then
596 prefix=$ac_default_prefix
601 unet_save_exec_prefix=$exec_prefix
602 if test x"$exec_prefix" = xNONE; then
605 exec_prefix=$exec_prefix
608 # Obtain the actual interesting directories
609 unet_bindir=`eval echo "$bindir"`
610 unet_libdir=`eval echo "$libdir"`
612 # Restore the original settings of $prefix and $exec_prefix
613 prefix=$unet_save_prefix
614 exec_prefix=$unet_save_exec_prefix
616 dnl Now compute the name of the binary and verify that it will work under
618 AC_MSG_CHECKING([where the binary will be for /restart])
619 if test x"$unet_cv_with_symlink" = xno; then
620 unet_spath="$unet_bindir/ircd"
622 unet_spath="$unet_bindir/$unet_cv_with_symlink"
624 AC_MSG_RESULT([$unet_spath])
626 if test x"$unet_cv_with_chroot" != xno; then
627 if echo "$unet_spath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
628 unet_spath=`echo "$unet_spath" | sed "s%^$unet_cv_with_chroot%%"`
630 AC_MSG_WARN([Binary $unet_spath not relative to root directory $unet_cv_with_chroot; restarts will probably fail])
634 AC_DEFINE_UNQUOTED(SPATH, "$unet_spath", [Path to executable for restarts])
636 dnl --with-dpath sets the all-important DPATH
637 AC_MSG_CHECKING([what the data directory should be])
639 [ --with-dpath=dir Directory for all server data files],
640 [unet_cv_with_dpath=$with_dpath],
641 [AC_CACHE_VAL(unet_cv_with_dpath,
642 [unet_cv_with_dpath=$unet_libdir])])
644 if test x"$unet_cv_with_dpath" = xyes -o x"$unet_cv_with_dpath" = xno; then
645 unet_cv_with_dpath=$unet_libdir
648 # Ensure there are no trailing /'s to mess us up
649 unet_cv_with_dpath=`echo "$unet_cv_with_dpath" | sed 's%/*$%%'`
651 AC_MSG_RESULT([$unet_cv_with_dpath])
653 if test x"$unet_cv_with_chroot" != xno; then
654 if echo "$unet_cv_with_dpath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
655 unet_dpath=`echo "$unet_cv_with_dpath" | sed "s%^$unet_cv_with_chroot%%"`
657 AC_MSG_ERROR([Data directory $unet_cv_with_dpath not relative to root directory $unet_cv_with_chroot])
660 unet_dpath=$unet_cv_with_dpath
663 AC_DEFINE_UNQUOTED(DPATH, "$unet_dpath", [Path to data directory])
665 DPATH=$unet_cv_with_dpath
668 dnl --with-cpath allows us to specify the configuration file
669 AC_MSG_CHECKING([where the default configuration file resides])
671 [ --with-cpath=file Set server configuration file],
672 [unet_cv_with_cpath=$with_cpath],
673 [AC_CACHE_VAL(unet_cv_with_cpath,
674 [unet_cv_with_cpath="ircd.conf"])])
676 if test x"$unet_cv_with_cpath" = xyes -o x"$unet_cv_with_cpath" = xno; then
677 unet_cv_with_cpath="ircd.conf"
680 AC_MSG_RESULT([$unet_cv_with_cpath])
682 if echo "$unet_cv_with_cpath" | grep '^/' > /dev/null 2>&1; then
683 # Absolute path; check against chroot stuff
684 if test x"$unet_cv_with_chroot" != xno; then
685 if echo "$unet_cv_with_cpath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
686 unet_cpath=`echo "$unet_cv_with_cpath" | sed "s%^$unet_cv_with_chroot%%"`
688 AC_MSG_ERROR([Configuration file $unet_cv_with_cpath not relative to root directory $unet_cv_with_chroot])
691 unet_cpath=$unet_cv_with_cpath
694 unet_cpath=$unet_cv_with_cpath
697 AC_DEFINE_UNQUOTED(CPATH, "$unet_cpath", [Configuration file name])
699 dnl --with-lpath allows us to specify the default debugging log file
700 AC_MSG_CHECKING([where to put the debugging log if debugging enabled])
702 [ --with-lpath=file Set the debugging log file],
703 [unet_cv_with_lpath=$with_lpath],
704 [AC_CACHE_VAL(unet_cv_with_lpath,
705 [unet_cv_with_lpath="ircd.log"])])
707 if test x"$unet_cv_with_lpath" = xyes -o x"$unet_cv_with_lpath" = xno; then
708 unet_cv_with_lpath="ircd.log"
711 AC_MSG_RESULT([$unet_cv_with_lpath])
713 if echo "$unet_cv_with_lpath" | grep '^/' > /dev/null 2>&1; then
714 # Absolute path; check against chroot stuff
715 if test x"$unet_cv_with_chroot" != xno; then
716 if echo "$unet_cv_with_lpath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
717 unet_lpath=`echo "$unet_cv_with_lpath" | sed "s%^$unet_cv_with_chroot%%"`
719 AC_MSG_WARN([Log file $unet_cv_with_lpath not relative to root directory $unet_cv_with_chroot; using default ircd.log instead])
720 unet_cv_with_lpath="ircd.log"
721 unet_lpath="ircd.log"
724 unet_lpath=$unet_cv_with_lpath
727 unet_lpath=$unet_cv_with_lpath
730 AC_DEFINE_UNQUOTED(LPATH, "$unet_lpath", [Path to debugging log file])
732 dnl --with-maxcon allows us to set the maximum connections
733 unet_maxcon=`ulimit -Hn`
734 if test x"$unet_maxcon" = xunlimited; then
735 unet_maxcon=`ulimit -Sn`
737 unet_maxcon=`expr $unet_maxcon - 4`
738 AC_MSG_CHECKING([max connections])
739 AC_ARG_WITH([maxcon],
740 [ --with-maxcon=maxcon Maximum number of connections server will accept],
741 [unet_cv_with_maxcon=$with_maxcon],
742 [AC_CACHE_VAL(unet_cv_with_maxcon,
743 [unet_cv_with_maxcon=$unet_maxcon])])
745 if test x"$unet_cv_with_maxcon" = xyes -o x"$unet_cv_with_maxcon" = xno; then
746 unet_cv_with_maxcon=$unet_maxcon
749 AC_MSG_RESULT([$unet_cv_with_maxcon])
751 AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $unet_cv_with_maxcon,
752 [Maximum number of network connections])
754 dnl Finally really generate all output files:
755 AC_OUTPUT(Makefile ircd/Makefile ircd/test/Makefile doc/Makefile, [echo timestamp > stamp-h])
757 dnl Report configuration
758 AC_OUTPUT_COMMANDS([echo "
759 ircu is now hopefully configured for your system.
761 Host system: $host_os
763 Asserts: $unet_cv_enable_asserts
764 Warnings: $unet_cv_enable_warnings
765 Debug: $unet_cv_enable_debug
766 Profile: $unet_cv_enable_profile
767 Owner/mode: $unet_cv_with_owner.$unet_cv_with_group ($unet_cv_with_mode)
768 Chroot: $unet_cv_with_chroot
770 Domain: $unet_cv_with_domain
771 DPath: $unet_cv_with_dpath
772 CPath: $unet_cv_with_cpath
773 LPath: $unet_cv_with_lpath
774 Maximum connections: $unet_cv_with_maxcon
776 poll() engine: $unet_cv_enable_poll
777 kqueue() engine: $unet_cv_enable_kqueue
778 /dev/poll engine: $unet_cv_enable_devpoll
779 epoll() engine: $unet_cv_enable_epoll