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.59 of autoconf (for AS_HELP_STRING)
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.
56 dnl Checks for libraries.
58 dnl Locate the library containing crypt
59 AC_SEARCH_LIBS(crypt, descrypt crypt, ,
60 [AC_MSG_ERROR([Unable to find library containing crypt()])])
62 dnl Do all the checks necessary to figure out -lnsl / -lsocket stuff
65 dnl Checks for header files.
67 AC_CHECK_HEADERS(crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/resource.h sys/socket.h)
69 dnl Checks for typedefs, structures, and compiler characteristics
77 AC_CHECK_TYPE(struct sockaddr_in6, [unet_have_sockaddr_in6="yes"], [unet_have_sockaddr_in6="no"], [#include <sys/types.h>
78 #include <netinet/in.h>])
80 dnl Check for socklen_t. In traditional BSD this is an int, but some
81 dnl OSes use a different type. Test until we find something that will
82 dnl work properly. Test borrowed from a patch submitted for Python.
83 AC_CHECK_TYPE([socklen_t], ,[
84 AC_MSG_CHECKING([for socklen_t equivalent])
85 AC_CACHE_VAL([curl_cv_socklen_t_equiv],
87 dnl Systems have either "struct sockaddr*" or "void*" as second
88 dnl arg to getpeername.
89 curl_cv_socklen_t_equiv=
90 for arg2 in "struct sockaddr" void ; do
91 for t in int size_t unsigned long "unsigned long" ; do
92 AC_TRY_COMPILE([#include <sys/types.h>
93 #include <sys/socket.h>
94 int getpeername (int $arg2 *, $t *);],[$t len;
95 getpeername(0, 0, &len);], [curl_cv_socklen_t_equiv="$t"
100 AC_MSG_RESULT($curl_cv_socklen_t_equiv)
101 AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
102 [type to use in place of socklen_t if not defined])],
103 [#include <sys/types.h>
104 #include<sys/socket.h>])
106 dnl Checks for library functions.
107 AC_CHECK_FUNCS([kqueue setrlimit getrusage times])
109 dnl Check for required features for admins?
110 AC_MSG_CHECKING([for donuts])
113 dnl Test for programs
118 AC_PATH_PROGS(RMPROG, rm, /bin/rm)
119 AC_PATH_PROGS(SHPROG, sh, /bin/sh)
121 dnl (F)LEX - needed for the new conf file parser
123 dnl The autoconf docs say $LEX defaults to 'lex'. They lie.
124 if test "$LEX" = ":" ; then
125 AC_MSG_ERROR([Cannot find flex.])
126 elif echo "" | $LEX -V -v --version > /dev/null 2>&1 ; then
129 AC_MSG_ERROR([Cannot use $LEX as flex.])
134 dnl The autoconf docs say $YACC defaults to 'yacc'. This seems to be true,
135 dnl but judging from AC_PROG_LEX, it may not stay true.
136 if test "$YACC" = ":" ; then
137 AC_MSG_ERROR([Cannot find yacc.])
138 elif echo "" | $YACC -V -v --version > /dev/null 2>&1 ; then
141 dnl byacc does not seem to have any way to test for workingness, so only warn.
142 AC_MSG_WARN([$YACC may not work as yacc.])
148 dnl Check OS for os_dep files.
149 AC_MSG_CHECKING(for OS-dependent information)
152 AC_MSG_RESULT([Linux ($host) found.])
153 unet_poll_syscall=yes
157 AC_MSG_RESULT([Solaris ($host) found.])
158 if test x"$ac_cv_header_poll_h" = xyes; then
159 unet_poll_syscall=yes
163 AC_DEFINE([IRCU_SOLARIS], 1, [Define if building on Solaris])
167 AC_MSG_RESULT([Solaris ($host) found.])
172 AC_MSG_RESULT([OpenBSD ($host) found.])
173 if test x"$ac_cv_header_poll_h" = xyes; then
174 unet_poll_syscall=yes
181 AC_MSG_RESULT([Generic BSD ($host) found.])
182 if test x"$ac_cv_header_poll_h" = xyes; then
183 unet_poll_syscall=yes
190 AC_MSG_RESULT([Darwin (Mac OS X) ($host) found.])
192 AC_DEFINE([_DARWIN_C_SOURCE], 1, [Define to enable POSIX compatibility on Darwin.])
196 AC_MSG_RESULT([Unknown system type $host found.])
197 AC_MSG_WARN([Unknown OS type; using generic routines.])
202 dnl Check user configuration options
203 dnl Start with --enable-poll
204 AC_MSG_CHECKING([whether to enable use of poll()])
205 AC_ARG_ENABLE([poll],
206 [ --enable-poll Force poll to be used regardless of whether or not
207 it is a system call],
208 [unet_cv_enable_poll=$enable_poll],
209 [AC_CACHE_VAL(unet_cv_enable_poll,
210 [unet_cv_enable_poll=$unet_poll_syscall])])
212 # Force poll to be disabled if there is no poll.h
213 if test x"$ac_cv_header_poll_h" != xyes; then
214 unet_cv_enable_poll=no
217 AC_MSG_RESULT([$unet_cv_enable_poll])
219 if test x"$unet_cv_enable_poll" = xyes; then
220 AC_DEFINE([USE_POLL], 1, [Specify whether or not to use poll()])
221 ENGINE_C=engine_poll.c
223 ENGINE_C=engine_select.c
227 dnl Now look for --enable-debug
228 AC_MSG_CHECKING([whether to enable debug mode])
229 AC_ARG_ENABLE([debug],
230 [ --enable-debug Turn on debugging mode],
231 [unet_cv_enable_debug=$enable_debug],
232 [AC_CACHE_VAL(unet_cv_enable_debug,
233 [unet_cv_enable_debug=no])])
234 AC_MSG_RESULT([$unet_cv_enable_debug])
236 if test x"$unet_cv_enable_debug" = xyes; then
237 AC_DEFINE([DEBUGMODE], 1, [Enable debugging code])
238 CFLAGS="$CFLAGS -O0 -g"
241 dnl Now look for --enable-leak-detect
242 AC_MSG_CHECKING([whether to enable leak detection])
243 AC_ARG_WITH([leak-detect],
244 [ --with-leak-detect Turn on the leak detector(requires patched boehm)],
245 [unet_cv_with_leak_detect=$with_leak_detect],
246 [AC_CACHE_VAL(unet_cv_with_leak_detect,
247 [unet_cv_with_leak_detect=no])])
248 AC_MSG_RESULT([$unet_cv_enable_leak_detect])
250 if test x"$unet_cv_with_leak_detect" != xno; then
252 CFLAGS="-DMDEBUG $CFLAGS"
253 if test x"$unet_cv_with_leak_detect" != xyes; then
254 LIBS="-L$unet_cv_with_leak_detect $LIBS"
259 AS_HELP_STRING([--without-ipv6], [disable IPv6 support (default is autodetect)]),
260 [ac_cv_use_ipv6=$withval],
261 [ac_cv_use_ipv6=$unet_have_sockaddr_in6])
262 AC_CACHE_CHECK([whether to use IPv6], [ac_cv_use_ipv6], [ac_cv_use_ipv6=no])
263 if test x"$ac_cv_use_ipv6" != "xno" ; then
264 AC_DEFINE([IPV6], 1, [Enable IPv6 support])
267 dnl And now for --disable-asserts
268 AC_MSG_CHECKING([whether to enable asserts])
269 AC_ARG_ENABLE([asserts],
270 [ --disable-asserts Disable assertion checking],
271 [unet_cv_enable_asserts=$enable_asserts],
272 [AC_CACHE_VAL(unet_cv_enable_asserts,
273 [unet_cv_enable_asserts=yes])])
274 AC_MSG_RESULT([$unet_cv_enable_asserts])
276 if test x"$unet_cv_enable_asserts" = xno; then
277 AC_DEFINE([NDEBUG], 1, [Disable assertions])
280 dnl Now check for --enable-profile
281 AC_MSG_CHECKING([whether to enable profiling support (gprof)])
282 AC_ARG_ENABLE([profile],
283 [ --enable-profile Enable profiling support (add -pg to CFLAGS and LDFLAGS)],
284 [unet_cv_enable_profile=$enable_profile],
285 [AC_CACHE_VAL(unet_cv_enable_profile,
286 [unet_cv_enable_profile=no])])
287 AC_MSG_RESULT([$unet_cv_enable_profile])
289 if test x"$unet_cv_enable_profile" = xyes; then
291 LDFLAGS="-pg $LDFLAGS"
294 dnl Now check for --enable-pedantic
295 AC_MSG_CHECKING([whether to enable pedantic compiler warnings])
296 AC_ARG_ENABLE([pedantic],
297 [ --enable-pedantic Enable pedantic warnings (add -pedantic to CFLAGS)],
298 [unet_cv_enable_pedantic=$enable_pedantic],
299 [AC_CACHE_VAL(unet_cv_enable_pedantic,
300 [unet_cv_enable_pedantic=no])])
301 AC_MSG_RESULT([$unet_cv_enable_pedantic])
303 if test x"$unet_cv_enable_pedantic" = xyes; then
304 CFLAGS="-pedantic $CFLAGS"
307 dnl Now check for --enable-warnings
308 AC_MSG_CHECKING([whether to enable compiler warnings])
309 AC_ARG_ENABLE([warnings],
310 [ --enable-warnings Enable warnings (add -Wall to CFLAGS)],
311 [unet_cv_enable_warnings=$enable_warnings],
312 [AC_CACHE_VAL(unet_cv_enable_warnings,
313 [unet_cv_enable_warnings=no])])
314 AC_MSG_RESULT([$unet_cv_enable_warnings])
316 if test x"$unet_cv_enable_warnings" = xyes; then
317 CFLAGS="-Wall $CFLAGS"
320 dnl --disable-inlines check...
321 AC_MSG_CHECKING([whether to enable inlining for a few critical functions])
322 AC_ARG_ENABLE([inlines],
323 [ --disable-inlines Disable inlining for a few critical functions],
324 [unet_cv_enable_inlines=$enable_inlines],
325 [AC_CACHE_VAL(unet_cv_enable_inlines,
326 [unet_cv_enable_inlines=yes])])
327 AC_MSG_RESULT([$unet_cv_enable_inlines])
329 if test x"$unet_cv_enable_inlines" = xyes; then
330 AC_DEFINE([FORCEINLINE], 1, [Force inlining for a few critical functions])
333 dnl --disable-devpoll check...
334 AC_MSG_CHECKING([whether to enable the /dev/poll event engine])
335 AC_ARG_ENABLE([devpoll],
336 [ --disable-devpoll Disable the /dev/poll-based engine],
337 [unet_cv_enable_devpoll=$enable_devpoll],
338 [AC_CACHE_VAL(unet_cv_enable_devpoll,
339 [unet_cv_enable_devpoll=yes])])
341 if test x"$ac_cv_header_sys_devpoll_h" = xno; then
342 unet_cv_enable_devpoll=no
345 AC_MSG_RESULT([$unet_cv_enable_devpoll])
347 if test x"$unet_cv_enable_devpoll" != xno; then
348 AC_DEFINE([USE_DEVPOLL], 1, [Define to enable the /dev/poll engine])
349 ENGINE_C="engine_devpoll.c $ENGINE_C"
352 dnl --disable-kqueue check...
353 AC_MSG_CHECKING([whether to enable the kqueue event engine])
354 AC_ARG_ENABLE([kqueue],
355 [ --disable-kqueue Disable the kqueue-based engine],
356 [unet_cv_enable_kqueue=$enable_kqueue],
357 [AC_CACHE_VAL(unet_cv_enable_kqueue,
358 [unet_cv_enable_kqueue=yes])])
360 if test x"$ac_cv_header_sys_event_h" = xno -o x"$ac_cv_func_kqueue" = xno; then
361 unet_cv_enable_kqueue=no
364 AC_MSG_RESULT([$unet_cv_enable_kqueue])
366 if test x"$unet_cv_enable_kqueue" != xno; then
367 AC_DEFINE([USE_KQUEUE], 1, [Define to enable the kqueue engine])
368 ENGINE_C="engine_kqueue.c $ENGINE_C"
371 dnl --disable-epoll check
372 AC_MSG_CHECKING([whether to enable the epoll event engine])
373 AC_ARG_ENABLE([epoll],
374 [ --disable-epoll Disable the epoll-based engine],
375 [unet_cv_enable_epoll=$enable_epoll],
376 [AC_CACHE_VAL(unet_cv_enable_epoll,
377 [unet_cv_enable_epoll=yes])])
379 if test x"$ac_cv_header_sys_epoll_h" = xno -o x"$ac_cv_func_epoll" = xno; then
380 unet_cv_enable_epoll=no
383 AC_MSG_RESULT([$unet_cv_enable_epoll])
385 dnl If we have the header and user has not refused epoll, we still need
386 dnl to check whether the functions are properly defined.
387 if test x"$unet_cv_enable_epoll" != xno; then
388 AC_MSG_CHECKING([whether epoll functions are properly defined])
389 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/epoll.h>], [epoll_create(10);])],
390 [AC_MSG_RESULT([yes])],
392 AC_DEFINE([EPOLL_NEED_BODY], 1, [Define to implement epoll system calls])])
393 AC_DEFINE([USE_EPOLL], 1, [Define to enable the epoll engine])
394 ENGINE_C="engine_epoll.c $ENGINE_C"
397 dnl How to copy one va_list to another?
398 AC_CACHE_CHECK([for va_copy], unet_cv_c_va_copy, [AC_LINK_IFELSE(
399 [AC_LANG_PROGRAM([#include <stdarg.h>], [va_list ap1, ap2; va_copy(ap1, ap2);])],
400 [unet_cv_c_va_copy="yes"],
401 [unet_cv_c_va_copy="no"]
403 if test "$unet_cv_c_va_copy" = "yes" ; then
404 AC_DEFINE(HAVE_VA_COPY, 1, [Define if we have va_copy])
407 AC_CACHE_CHECK([for __va_copy], unet_cv_c___va_copy, [AC_LINK_IFELSE(
408 [AC_LANG_PROGRAM([#include <stdarg.h>], [va_list ap1, ap2; __va_copy(ap1, ap2);])],
409 [unet_cv_c___va_copy="yes"],
410 [unet_cv_c___va_copy="no"]
412 if test "$unet_cv_c___va_copy" = "yes" ; then
413 AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy])
416 dnl --with-symlink lets us set the name of the symlink; defaults to "ircd"
417 AC_MSG_CHECKING([what name to give the symlink])
418 AC_ARG_WITH([symlink],
419 [ --with-symlink=name Name to give the symlink; if name is "no," no
420 symlink will be created.],
421 [unet_cv_with_symlink=$with_symlink],
422 [AC_CACHE_VAL(unet_cv_with_symlink,
423 [unet_cv_with_symlink="ircd"])])
425 if test x"$unet_cv_with_symlink" = xyes; then
426 unet_cv_with_symlink="ircd"
429 AC_MSG_RESULT([$unet_cv_with_symlink])
431 if test x"$unet_cv_with_symlink" = xno; then
432 INSTALL_RULE=install-no-symlink
435 INSTALL_RULE=install-with-symlink
436 SYMLINK=$unet_cv_with_symlink
438 AC_SUBST(INSTALL_RULE)
441 dnl --with-mode lets us set the permissions on the binary
442 AC_MSG_CHECKING([what permissions to set on the installed binary])
444 [ --with-mode=mode Permissions (in octal) to give the binary],
445 [unet_cv_with_mode=$with_mode],
446 [AC_CACHE_VAL(unet_cv_with_mode,
447 [unet_cv_with_mode=711])])
449 if test x"$unet_cv_with_mode" = xyes -o x"$unet_cv_with_mode" = xno; then
450 unet_cv_with_mode=711
453 AC_MSG_RESULT([$unet_cv_with_mode])
455 IRCDMODE=$unet_cv_with_mode
458 dnl --with-owner lets us set the owner of the binary
460 unet_uid=`id | sed -e 's/.*uid=[0-9]*(//' -e 's/).*//' 2> /dev/null`
462 AC_MSG_CHECKING([which user should own the installed binary])
464 [ --with-owner=owner Specify owner of the installed binary],
465 [unet_cv_with_owner=$with_owner],
466 [AC_CACHE_VAL(unet_cv_with_owner,
467 [unet_cv_with_owner=$unet_uid])])
469 if test x"$unet_cv_with_owner" = xyes -o x"$unet_cv_with_owner" = xno; then
470 unet_cv_with_owner=$unet_uid
473 AC_MSG_RESULT([$unet_cv_with_owner])
475 IRCDOWN=$unet_cv_with_owner
478 dnl --with-group lets us set the group owner of the binary
480 unet_gid=`id | sed -e 's/.*gid=[0-9]*(//' -e 's/).*//' 2> /dev/null`
482 AC_MSG_CHECKING([which group should own the installed binary])
484 [ --with-group=group Specify group owner of the installed binary],
485 [unet_cv_with_group=$with_group],
486 [AC_CACHE_VAL(unet_cv_with_group,
487 [unet_cv_with_group=$unet_gid])])
489 if test x"$unet_cv_with_group" = xyes -o x"$unet_cv_with_group" = xno; then
490 unet_cv_with_group=$unet_gid
493 AC_MSG_RESULT([$unet_cv_with_group])
495 IRCDGRP=$unet_cv_with_group
498 dnl --with-domain lets us set the domain name for some statistics-gathering
500 if test -f /etc/resolv.conf; then
501 unet_domain=`awk '/^domain/ { print $2; exit }' /etc/resolv.conf`
502 if test x"$unet_domain" = x; then
503 unet_domain=`awk '/^search/ { print $2; exit }' /etc/resolv.conf`
506 AC_MSG_CHECKING([for site domain name])
507 AC_ARG_WITH([domain],
508 [ --with-domain=domain Domain name to use in local statistics gathering],
509 [unet_cv_with_domain=$with_domain],
510 [AC_CACHE_VAL(unet_cv_with_domain,
511 [unet_cv_with_domain=$unet_domain])])
513 if test x"$unet_cv_with_domain" = xyes -o x"$unet_cv_with_domain" = xno; then
514 unet_cv_with_domain=$unet_domain
516 if test x"$unet_cv_with_domain" = xno; then
517 AC_MSG_ERROR([Unable to determine server DNS domain; use --with-domain to set it])
520 AC_MSG_RESULT([$unet_cv_with_domain])
522 AC_DEFINE_UNQUOTED(DOMAINNAME, "*$unet_cv_with_domain",
523 [Domain name to be used for some statistics gathering])
525 dnl --with-chroot lets us define a directory that we are going to be using
526 dnl as the root of our filesystem
527 AC_MSG_CHECKING([if chroot operation is desired])
528 AC_ARG_WITH([chroot],
529 [ --with-chroot=dir Specify that the server will be operated under
530 a different root directory given by dir. See
531 doc/readme.chroot for more information.],
532 [unet_cv_with_chroot=$with_chroot],
533 [AC_CACHE_VAL(unet_cv_with_chroot,
534 [unet_cv_with_chroot=no])])
536 if test x"$unet_cv_with_chroot" = xyes; then
537 AC_MSG_ERROR([--with-chroot given with no directory. See doc/readme.chroot.])
540 # Ensure there are no trailing /'s to mess us up
541 unet_cv_with_chroot=`echo "$unet_cv_with_chroot" | sed 's%/*$%%'`
543 AC_MSG_RESULT([$unet_cv_with_chroot])
545 dnl Determine some default directory names
547 dnl HACK WARNING: We are referencing an autoconf internal variable. This is
548 dnl the only way to figure out what value $prefix will have when we go to do
549 dnl the install--and the only way we can stick that value in our definitions
551 # Deal with the annoying value "NONE" here
552 unet_save_prefix=$prefix
553 if test x"$prefix" = xNONE; then
554 prefix=$ac_default_prefix
559 unet_save_exec_prefix=$exec_prefix
560 if test x"$exec_prefix" = xNONE; then
563 exec_prefix=$exec_prefix
566 # Obtain the actual interesting directories
567 unet_bindir=`eval echo "$bindir"`
568 unet_libdir=`eval echo "$libdir"`
570 # Restore the original settings of $prefix and $exec_prefix
571 prefix=$unet_save_prefix
572 exec_prefix=$unet_save_exec_prefix
574 dnl Now compute the name of the binary and verify that it will work under
576 AC_MSG_CHECKING([where the binary will be for /restart])
577 if test x"$unet_cv_with_symlink" = xno; then
578 unet_spath="$unet_bindir/ircd"
580 unet_spath="$unet_bindir/$unet_cv_with_symlink"
582 AC_MSG_RESULT([$unet_spath])
584 if test x"$unet_cv_with_chroot" != xno; then
585 if echo "$unet_spath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
586 unet_spath=`echo "$unet_spath" | sed "s%^$unet_cv_with_chroot%%"`
588 AC_MSG_WARN([Binary $unet_spath not relative to root directory $unet_cv_with_chroot; restarts will probably fail])
592 AC_DEFINE_UNQUOTED(SPATH, "$unet_spath", [Path to executable for restarts])
594 dnl --with-dpath sets the all-important DPATH
595 AC_MSG_CHECKING([what the data directory should be])
597 [ --with-dpath=dir Directory for all server data files],
598 [unet_cv_with_dpath=$with_dpath],
599 [AC_CACHE_VAL(unet_cv_with_dpath,
600 [unet_cv_with_dpath=$unet_libdir])])
602 if test x"$unet_cv_with_dpath" = xyes -o x"$unet_cv_with_dpath" = xno; then
603 unet_cv_with_dpath=$unet_libdir
606 # Ensure there are no trailing /'s to mess us up
607 unet_cv_with_dpath=`echo "$unet_cv_with_dpath" | sed 's%/*$%%'`
609 AC_MSG_RESULT([$unet_cv_with_dpath])
611 if test x"$unet_cv_with_chroot" != xno; then
612 if echo "$unet_cv_with_dpath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
613 unet_dpath=`echo "$unet_cv_with_dpath" | sed "s%^$unet_cv_with_chroot%%"`
615 AC_MSG_ERROR([Data directory $unet_cv_with_dpath not relative to root directory $unet_cv_with_chroot])
618 unet_dpath=$unet_cv_with_dpath
621 AC_DEFINE_UNQUOTED(DPATH, "$unet_dpath", [Path to data directory])
623 DPATH=$unet_cv_with_dpath
626 dnl --with-cpath allows us to specify the configuration file
627 AC_MSG_CHECKING([where the default configuration file resides])
629 [ --with-cpath=file Set server configuration file],
630 [unet_cv_with_cpath=$with_cpath],
631 [AC_CACHE_VAL(unet_cv_with_cpath,
632 [unet_cv_with_cpath="ircd.conf"])])
634 if test x"$unet_cv_with_cpath" = xyes -o x"$unet_cv_with_cpath" = xno; then
635 unet_cv_with_cpath="ircd.conf"
638 AC_MSG_RESULT([$unet_cv_with_cpath])
640 if echo "$unet_cv_with_cpath" | grep '^/' > /dev/null 2>&1; then
641 # Absolute path; check against chroot stuff
642 if test x"$unet_cv_with_chroot" != xno; then
643 if echo "$unet_cv_with_cpath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
644 unet_cpath=`echo "$unet_cv_with_cpath" | sed "s%^$unet_cv_with_chroot%%"`
646 AC_MSG_ERROR([Configuration file $unet_cv_with_cpath not relative to root directory $unet_cv_with_chroot])
649 unet_cpath=$unet_cv_with_cpath
652 unet_cpath=$unet_cv_with_cpath
655 AC_DEFINE_UNQUOTED(CPATH, "$unet_cpath", [Configuration file name])
657 dnl --with-lpath allows us to specify the default debugging log file
658 AC_MSG_CHECKING([where to put the debugging log if debugging enabled])
660 [ --with-lpath=file Set the debugging log file],
661 [unet_cv_with_lpath=$with_lpath],
662 [AC_CACHE_VAL(unet_cv_with_lpath,
663 [unet_cv_with_lpath="ircd.log"])])
665 if test x"$unet_cv_with_lpath" = xyes -o x"$unet_cv_with_lpath" = xno; then
666 unet_cv_with_lpath="ircd.log"
669 AC_MSG_RESULT([$unet_cv_with_lpath])
671 if echo "$unet_cv_with_lpath" | grep '^/' > /dev/null 2>&1; then
672 # Absolute path; check against chroot stuff
673 if test x"$unet_cv_with_chroot" != xno; then
674 if echo "$unet_cv_with_lpath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
675 unet_lpath=`echo "$unet_cv_with_lpath" | sed "s%^$unet_cv_with_chroot%%"`
677 AC_MSG_WARN([Log file $unet_cv_with_lpath not relative to root directory $unet_cv_with_chroot; using default ircd.log instead])
678 unet_cv_with_lpath="ircd.log"
679 unet_lpath="ircd.log"
682 unet_lpath=$unet_cv_with_lpath
685 unet_lpath=$unet_cv_with_lpath
688 AC_DEFINE_UNQUOTED(LPATH, "$unet_lpath", [Path to debugging log file])
690 dnl --with-maxcon allows us to set the maximum connections
691 unet_maxcon=`ulimit -Hn`
692 if test x"$unet_maxcon" = xunlimited; then
693 unet_maxcon=`ulimit -Sn`
695 unet_maxcon=`expr $unet_maxcon - 4`
696 AC_MSG_CHECKING([max connections])
697 AC_ARG_WITH([maxcon],
698 [ --with-maxcon=maxcon Maximum number of connections server will accept],
699 [unet_cv_with_maxcon=$with_maxcon],
700 [AC_CACHE_VAL(unet_cv_with_maxcon,
701 [unet_cv_with_maxcon=$unet_maxcon])])
703 if test x"$unet_cv_with_maxcon" = xyes -o x"$unet_cv_with_maxcon" = xno; then
704 if test "$unet_maxcon" -lt 32; then
705 AC_MSG_ERROR([Maximum connections (number of open files minus 4) must be at least 32.])
707 unet_cv_with_maxcon=$unet_maxcon
708 elif test "$unet_cv_with_maxcon" -lt 32; then
709 AC_MSG_ERROR([Maximum connections (--with-maxcon) must be at least 32.])
712 AC_MSG_RESULT([$unet_cv_with_maxcon])
714 AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $unet_cv_with_maxcon,
715 [Maximum number of network connections])
717 dnl Old OGN ircu compatibility checks.
718 unet_cv_enable_compat="yes"
719 AC_MSG_CHECKING([whether to enable OGN-compat mode])
720 AC_ARG_ENABLE([compat],
721 [ --enable-compat Enables OGN-compat mode.],
722 [unet_cv_enable_compat=$enable_compat],
724 AC_MSG_RESULT([$unet_cv_enable_compat])
726 if test $unet_cv_enable_compat = "no" ; then
728 unet_cv_enable_compat="no"
730 AC_DEFINE([OLD_OGN_IRCU_COMPAT], 1, [Enable compatibility mode.])
733 dnl Check whether to enable unstable features.
734 unet_cv_enable_unstable="no"
735 AC_MSG_CHECKING([whether to enable unstable features])
736 AC_ARG_ENABLE([unstable],
737 [ --enable-unstable Enables unstable features.],
738 [unet_cv_enable_unstable=$enable_unstable],
740 AC_MSG_RESULT([$unet_cv_enable_unstable])
742 if test $unet_cv_enable_unstable = "yes" ; then
743 AC_DEFINE([WITH_UNSTABLE_FEAT], 1, [Enable unstable features.])
747 unet_cv_enable_gnutls="no"
748 unet_cv_enable_openssl="yes"
750 AC_MSG_CHECKING([for GnuTLS])
751 AC_ARG_ENABLE([gnutls],
752 [ --enable-gnutls Enables GnuTLS ssl backend.],
753 [unet_cv_enable_gnutls=$enable_gnutls],
755 AC_MSG_RESULT([$unet_cv_enable_gnutls])
757 AC_MSG_CHECKING([for OpenSSL])
758 AC_ARG_ENABLE([openssl],
759 [ --enable-openssl Enables OpenSSL ssl backend.],
760 [unet_cv_enable_openssl=$enable_openssl],
762 AC_MSG_RESULT([$unet_cv_enable_openssl])
764 if test x"$unet_cv_enable_gnutls" = xyes; then
765 unet_cv_enable_gnutls="no";
766 AC_CHECK_LIB(gnutls, gnutls_init, [
767 AC_CHECK_HEADERS(gnutls/gnutls.h, [
768 unet_cv_enable_gnutls="yes";
773 if test x"$unet_cv_enable_openssl" = xyes; then
774 unet_cv_enable_openssl="no";
775 AC_CHECK_LIB(ssl, SSL_read, [
776 AC_CHECK_LIB(crypto, X509_new, [
777 AC_CHECK_HEADERS(openssl/ssl.h openssl/err.h, [
778 unet_cv_enable_openssl="yes";
784 if test x"$unet_cv_enable_gnutls" = xyes; then
785 LIBS="$LIBS -lgnutls"
786 AC_DEFINE([HAVE_GNUTLS], 1, [Define if you are using GnuTLS])
789 if test x"$unet_cv_enable_openssl" = xyes ; then
790 LIBS="$LIBS -lssl -lcrypto"
791 AC_DEFINE([HAVE_OPENSSL], 1, [Define if you are using OpenSSL])
794 dnl Finally really generate all output files:
795 AC_OUTPUT(Makefile ircd/Makefile doc/Makefile, [echo timestamp > stamp-h])
797 dnl Report configuration
799 ircu is now hopefully configured for your system.
801 Host system: $host_os
803 Asserts: $unet_cv_enable_asserts
804 Warnings: $unet_cv_enable_warnings
805 Debug: $unet_cv_enable_debug
806 Profile: $unet_cv_enable_profile
807 Owner/mode: $unet_cv_with_owner.$unet_cv_with_group ($unet_cv_with_mode)
808 Chroot: $unet_cv_with_chroot
809 OpenSSL: $unet_cv_enable_openssl
810 GnuTLS: $unet_cv_enable_gnutls
811 Compatibility mode: $unet_cv_enable_compat
812 Unstable features: $unet_cv_enable_unstable
814 Domain: $unet_cv_with_domain
815 DPath: $unet_cv_with_dpath
816 CPath: $unet_cv_with_cpath
817 LPath: $unet_cv_with_lpath
818 Maximum connections: $unet_cv_with_maxcon
820 poll() engine: $unet_cv_enable_poll
821 kqueue() engine: $unet_cv_enable_kqueue
822 /dev/poll engine: $unet_cv_enable_devpoll
823 epoll() engine: $unet_cv_enable_epoll