Check a few possibilities for socklen_t (fixes SF#1236456).
[ircu2.10.12-pk.git] / configure.in
1 dnl Prefered emacs editing mode: -*- shell-script -*-
2 dnl
3 dnl Process this file with autoconf to produce a configure script.
4 dnl
5 dnl Copyright (c) 1997, by Carlo Wood <carlo@runaway.xs4all.nl>
6 dnl Copyright (C) 2001  Kevin L. Mitchell <klmitch@mit.edu>
7 dnl
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.
12 dnl
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.
17 dnl
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.
21 dnl
22 dnl $Id$
23
24 dnl Make sure we are in the correct directory (someone could have run
25 dnl 'configure' with a wrong '--srcdir').
26 AC_INIT(ircd/ircd.c)
27
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
34 fi
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
38 dnl file!
39 ac_default_prefix=$unet_cv_prefix
40
41 dnl Define the input and output configuration header file.
42 AC_CONFIG_HEADER([config.h])
43
44 dnl Demand at least version 2.59 of autoconf (for AS_HELP_STRING)
45 AC_PREREQ(2.59)
46
47 dnl Find out what type of system we are
48 AC_CANONICAL_HOST
49
50 dnl This should be done early.
51 AC_PROG_CC
52
53 dnl ANSIfy the C compiler whenever possible.
54 AM_PROG_CC_STDC
55
56 dnl Checks for libraries.
57
58 dnl Locate the library containing crypt
59 AC_SEARCH_LIBS(crypt, descrypt crypt, ,
60 [AC_MSG_ERROR([Unable to find library containing crypt()])])
61
62 dnl Do all the checks necessary to figure out -lnsl / -lsocket stuff
63 AC_LIBRARY_NET
64
65 dnl Checks for header files.
66 AC_HEADER_STDC
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)
68
69 dnl Checks for typedefs, structures, and compiler characteristics
70 dnl AC_C_CONST
71 AC_C_BIGENDIAN
72 AC_TYPE_SIZE_T
73 AC_HEADER_TIME
74 AC_STRUCT_TM
75 AC_TYPE_UID_T
76 unet_CHECK_TYPE_SIZES
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>])
79
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],
86   [
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"
96   break])
97       done
98     done
99   ])
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>])
105
106 dnl Checks for library functions.
107 AC_CHECK_FUNCS([kqueue setrlimit getrusage times])
108
109 dnl Do we have restarting syscalls ?
110 AC_SYS_RESTARTABLE_SYSCALLS
111
112 dnl Check for required features for admins?
113 AC_MSG_CHECKING([for donuts])
114 AC_MSG_RESULT([yes])
115
116 dnl Test for programs
117 AC_PROG_AWK
118 AC_PROG_MAKE_SET
119 AC_PROG_INSTALL
120 AC_PROG_LN_S
121 AC_PATH_PROGS(RMPROG, rm, /bin/rm)
122 AC_PATH_PROGS(SHPROG, sh, /bin/sh)
123
124 dnl (F)LEX - needed for the new conf file parser
125 AC_PROG_LEX
126 dnl The autoconf docs say $LEX defaults to 'lex'.  They lie.
127 if test "$LEX" = ":" ; then
128   AC_MSG_ERROR([Cannot find flex.])
129 elif echo "" | $LEX -V -v --version > /dev/null 2>&1 ; then
130   :
131 else
132   AC_MSG_ERROR([Cannot use $LEX as flex.])
133 fi
134
135 if test -z "$LEXLIB" ; then
136   AC_MSG_FAILURE([Cannot find a library with yywrap() in, but flex was found.
137   It's possible the compiler you're using ($CC) is incompatible with the
138   installed library.])
139 fi
140
141 LIBS="$LEXLIB $LIBS"
142
143 dnl YACC - ditto
144 AC_PROG_YACC
145 dnl The autoconf docs say $YACC defaults to 'yacc'.  This seems to be true,
146 dnl but judging from AC_PROG_LEX, it may not stay true.
147 if test "$YACC" = ":" ; then
148   AC_MSG_ERROR([Cannot find yacc.])
149 elif echo "" | $YACC -V -v --version > /dev/null 2>&1 ; then
150   :
151 else
152 dnl byacc does not seem to have any way to test for workingness, so only warn.
153   AC_MSG_WARN([$YACC may not work as yacc.])
154 fi
155
156 unet_NONBLOCKING
157 unet_SIGNALS
158
159 dnl Check OS for os_dep files.
160 AC_MSG_CHECKING(for OS-dependent information)
161 case "$host" in
162     *-linux*)
163         AC_MSG_RESULT([Linux ($host) found.])
164         unet_poll_syscall=yes
165         ;;
166
167     *-solaris*)
168         AC_MSG_RESULT([Solaris ($host) found.])
169         if test x"$ac_cv_header_poll_h" = xyes; then
170             unet_poll_syscall=yes
171         else
172             unet_poll_syscall=no
173         fi
174         ;;
175
176     *-sunos*)
177         AC_MSG_RESULT([Solaris ($host) found.])
178         unet_poll_syscall=no
179         ;;
180
181     *-openbsd*)
182         AC_MSG_RESULT([OpenBSD ($host) found.])
183         if test x"$ac_cv_header_poll_h" = xyes; then
184             unet_poll_syscall=yes
185         else
186             unet_poll_syscall=no
187         fi
188         ;;
189
190     *-*bsd*)
191         AC_MSG_RESULT([Generic BSD ($host) found.])
192         if test x"$ac_cv_header_poll_h" = xyes; then
193             unet_poll_syscall=yes
194         else
195             unet_poll_syscall=no
196         fi
197         ;;
198
199     *-darwin*)
200         AC_MSG_RESULT([Darwin (Mac OS X) ($host) found.])
201         unet_poll_syscall=no
202         ;;
203
204     *)
205         AC_MSG_RESULT([Unknown system type $host found.])
206         AC_MSG_WARN([Unknown OS type; using generic routines.])
207         unet_poll_syscall=no
208         ;;
209 esac
210
211 dnl Check user configuration options
212 dnl Start with --enable-poll
213 AC_MSG_CHECKING([whether to enable use of poll()])
214 AC_ARG_ENABLE([poll],
215 [  --enable-poll           Force poll to be used regardless of whether or not
216                           it is a system call],
217 [unet_cv_enable_poll=$enable_poll],
218 [AC_CACHE_VAL(unet_cv_enable_poll,
219 [unet_cv_enable_poll=$unet_poll_syscall])])
220
221 # Force poll to be disabled if there is no poll.h
222 if test x"$ac_cv_header_poll_h" != xyes; then
223     unet_cv_enable_poll=no
224 fi
225
226 AC_MSG_RESULT([$unet_cv_enable_poll])
227
228 if test x"$unet_cv_enable_poll" = xyes; then
229     AC_DEFINE([USE_POLL], 1, [Specify whether or not to use poll()])
230     ENGINE_C=engine_poll.c
231 else
232     ENGINE_C=engine_select.c
233 fi
234 AC_SUBST(ENGINE_C)
235
236 dnl Now look for --enable-debug
237 AC_MSG_CHECKING([whether to enable debug mode])
238 AC_ARG_ENABLE([debug],
239 [  --enable-debug          Turn on debugging mode],
240 [unet_cv_enable_debug=$enable_debug],
241 [AC_CACHE_VAL(unet_cv_enable_debug,
242 [unet_cv_enable_debug=no])])
243 AC_MSG_RESULT([$unet_cv_enable_debug])
244
245 if test x"$unet_cv_enable_debug" = xyes; then
246     AC_DEFINE([DEBUGMODE], 1, [Enable debugging code])
247 fi
248
249 dnl Now look for --enable-leak-detect
250 AC_MSG_CHECKING([whether to enable leak detection])
251 AC_ARG_WITH([leak-detect],
252 [  --with-leak-detect          Turn on the leak detector(requires patched boehm)],
253 [unet_cv_with_leak_detect=$with_leak_detect],
254 [AC_CACHE_VAL(unet_cv_with_leak_detect,
255 [unet_cv_with_leak_detect=no])])
256 AC_MSG_RESULT([$unet_cv_enable_leak_detect])
257
258 if test x"$unet_cv_with_leak_detect" != xno; then
259     LIBS="-lgc $LIBS"
260     CFLAGS="-DMDEBUG $CFLAGS"
261     if test x"$unet_cv_with_leak_detect" != xyes; then
262        LIBS="-L$unet_cv_with_leak_detect $LIBS"
263     fi
264 fi
265
266 AC_ARG_WITH([ipv6],
267     AS_HELP_STRING([--without-ipv6], [disable IPv6 support (default is autodetect)]),
268     [ac_cv_use_ipv6=$withval],
269     [ac_cv_use_ipv6=$unet_have_sockaddr_in6])
270 AC_CACHE_CHECK([whether to use IPv6], [ac_cv_use_ipv6], [ac_cv_use_ipv6=no])
271 if test x"$ac_cv_use_ipv6" != "xno" ; then
272     AC_DEFINE([IPV6], 1, [Enable IPv6 support])
273 fi
274
275 dnl And now for --disable-asserts
276 AC_MSG_CHECKING([whether to enable asserts])
277 AC_ARG_ENABLE([asserts],
278 [  --disable-asserts       Disable assertion checking],
279 [unet_cv_enable_asserts=$enable_asserts],
280 [AC_CACHE_VAL(unet_cv_enable_asserts,
281 [unet_cv_enable_asserts=yes])])
282 AC_MSG_RESULT([$unet_cv_enable_asserts])
283
284 if test x"$unet_cv_enable_asserts" = xno; then
285     AC_DEFINE([NDEBUG], 1, [Disable assertions])
286 fi
287
288 dnl Now check for --enable-profile
289 AC_MSG_CHECKING([whether to enable profiling support (gprof)])
290 AC_ARG_ENABLE([profile],
291 [  --enable-profile        Enable profiling support (add -pg to CFLAGS and LDFLAGS)],
292 [unet_cv_enable_profile=$enable_profile],
293 [AC_CACHE_VAL(unet_cv_enable_profile,
294 [unet_cv_enable_profile=no])])
295 AC_MSG_RESULT([$unet_cv_enable_profile])
296
297 if test x"$unet_cv_enable_profile" = xyes; then
298     CFLAGS="-pg $CFLAGS"
299     LDFLAGS="-pg $LDFLAGS"
300 fi
301
302 dnl Now check for --enable-pedantic
303 AC_MSG_CHECKING([whether to enable pedantic compiler warnings])
304 AC_ARG_ENABLE([pedantic],
305 [  --enable-pedantic       Enable pedantic warnings (add -pedantic to CFLAGS)],
306 [unet_cv_enable_pedantic=$enable_pedantic],
307 [AC_CACHE_VAL(unet_cv_enable_pedantic,
308 [unet_cv_enable_pedantic=no])])
309 AC_MSG_RESULT([$unet_cv_enable_pedantic])
310
311 if test x"$unet_cv_enable_pedantic" = xyes; then
312     CFLAGS="-pedantic $CFLAGS"
313 fi
314
315 dnl Now check for --enable-warnings
316 AC_MSG_CHECKING([whether to enable compiler warnings])
317 AC_ARG_ENABLE([warnings],
318 [  --enable-warnings       Enable warnings (add -Wall to CFLAGS)],
319 [unet_cv_enable_warnings=$enable_warnings],
320 [AC_CACHE_VAL(unet_cv_enable_warnings,
321 [unet_cv_enable_warnings=no])])
322 AC_MSG_RESULT([$unet_cv_enable_warnings])
323
324 if test x"$unet_cv_enable_warnings" = xyes; then
325     CFLAGS="-Wall $CFLAGS"
326 fi
327
328 dnl --disable-inlines check...
329 AC_MSG_CHECKING([whether to enable inlining for a few critical functions])
330 AC_ARG_ENABLE([inlines],
331 [  --disable-inlines       Disable inlining for a few critical functions],
332 [unet_cv_enable_inlines=$enable_inlines],
333 [AC_CACHE_VAL(unet_cv_enable_inlines,
334 [unet_cv_enable_inlines=yes])])
335 AC_MSG_RESULT([$unet_cv_enable_inlines])
336
337 if test x"$unet_cv_enable_inlines" = xyes; then
338     AC_DEFINE([FORCEINLINE], 1, [Force inlining for a few critical functions])
339 fi
340
341 dnl --disable-devpoll check...
342 AC_MSG_CHECKING([whether to enable the /dev/poll event engine])
343 AC_ARG_ENABLE([devpoll],
344 [  --disable-devpoll       Disable the /dev/poll-based engine],
345 [unet_cv_enable_devpoll=$enable_devpoll],
346 [AC_CACHE_VAL(unet_cv_enable_devpoll,
347 [unet_cv_enable_devpoll=yes])])
348
349 if test x"$ac_cv_header_sys_devpoll_h" = xno; then
350     unet_cv_enable_devpoll=no
351 fi
352
353 AC_MSG_RESULT([$unet_cv_enable_devpoll])
354
355 if test x"$unet_cv_enable_devpoll" != xno; then
356     AC_DEFINE([USE_DEVPOLL], 1, [Define to enable the /dev/poll engine])
357     ENGINE_C="engine_devpoll.c $ENGINE_C"
358 fi
359
360 dnl --disable-kqueue check...
361 AC_MSG_CHECKING([whether to enable the kqueue event engine])
362 AC_ARG_ENABLE([kqueue],
363 [  --disable-kqueue        Disable the kqueue-based engine],
364 [unet_cv_enable_kqueue=$enable_kqueue],
365 [AC_CACHE_VAL(unet_cv_enable_kqueue,
366 [unet_cv_enable_kqueue=yes])])
367
368 if test x"$ac_cv_header_sys_event_h" = xno -o x"$ac_cv_func_kqueue" = xno; then
369     unet_cv_enable_kqueue=no
370 fi
371
372 AC_MSG_RESULT([$unet_cv_enable_kqueue])
373
374 if test x"$unet_cv_enable_kqueue" != xno; then
375     AC_DEFINE([USE_KQUEUE], 1, [Define to enable the kqueue engine])
376     ENGINE_C="engine_kqueue.c $ENGINE_C"
377 fi
378
379 dnl --disable-epoll check
380 AC_MSG_CHECKING([whether to enable the epoll event engine])
381 AC_ARG_ENABLE([epoll],
382 [  --disable-epoll         Disable the epoll-based engine],
383 [unet_cv_enable_epoll=$enable_epoll],
384 [AC_CACHE_VAL(unet_cv_enable_epoll,
385 [unet_cv_enable_epoll=yes])])
386
387 if test x"$ac_cv_header_sys_epoll_h" = xno -o x"$ac_cv_func_epoll" = xno; then
388     unet_cv_enable_epoll=no
389 fi
390
391 AC_MSG_RESULT([$unet_cv_enable_epoll])
392
393 dnl If we have the header and user has not refused epoll, we still need
394 dnl to check whether the functions are properly defined.
395 if test x"$unet_cv_enable_epoll" != xno; then
396     AC_MSG_CHECKING([whether epoll functions are properly defined])
397     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/epoll.h>], [epoll_create(10);])],
398         [AC_MSG_RESULT([yes])],
399         [AC_MSG_RESULT([no])
400          AC_DEFINE([EPOLL_NEED_BODY], 1, [Define to implement epoll system calls])])
401     AC_DEFINE([USE_EPOLL], 1, [Define to enable the epoll engine])
402     ENGINE_C="engine_epoll.c $ENGINE_C"
403 fi
404
405 dnl How to copy one va_list to another?
406 AC_CACHE_CHECK([for va_copy], unet_cv_c_va_copy, [AC_LINK_IFELSE(
407   [AC_LANG_PROGRAM([#include <stdarg.h>], [va_list ap1, ap2; va_copy(ap1, ap2);])],
408   [unet_cv_c_va_copy="yes"],
409   [unet_cv_c_va_copy="no"]
410 )])
411 if test "$unet_cv_c_va_copy" = "yes" ; then
412   AC_DEFINE(HAVE_VA_COPY, 1, [Define if we have va_copy])
413 fi
414
415 AC_CACHE_CHECK([for __va_copy], unet_cv_c___va_copy, [AC_LINK_IFELSE(
416   [AC_LANG_PROGRAM([#include <stdarg.h>], [va_list ap1, ap2; __va_copy(ap1, ap2);])],
417   [unet_cv_c___va_copy="yes"],
418   [unet_cv_c___va_copy="no"]
419 )])
420 if test "$unet_cv_c___va_copy" = "yes" ; then
421   AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy])
422 fi
423
424 dnl --with-symlink lets us set the name of the symlink; defaults to "ircd"
425 AC_MSG_CHECKING([what name to give the symlink])
426 AC_ARG_WITH([symlink],
427 [  --with-symlink=name     Name to give the symlink; if name is "no," no
428                           symlink will be created.],
429 [unet_cv_with_symlink=$with_symlink],
430 [AC_CACHE_VAL(unet_cv_with_symlink,
431 [unet_cv_with_symlink="ircd"])])
432
433 if test x"$unet_cv_with_symlink" = xyes; then
434     unet_cv_with_symlink="ircd"
435 fi
436
437 AC_MSG_RESULT([$unet_cv_with_symlink])
438
439 if test x"$unet_cv_with_symlink" = xno; then
440     INSTALL_RULE=install-no-symlink
441     SYMLINK=
442 else
443     INSTALL_RULE=install-with-symlink
444     SYMLINK=$unet_cv_with_symlink
445 fi
446 AC_SUBST(INSTALL_RULE)
447 AC_SUBST(SYMLINK)
448
449 dnl --with-mode lets us set the permissions on the binary
450 AC_MSG_CHECKING([what permissions to set on the installed binary])
451 AC_ARG_WITH([mode],
452 [  --with-mode=mode        Permissions (in octal) to give the binary],
453 [unet_cv_with_mode=$with_mode],
454 [AC_CACHE_VAL(unet_cv_with_mode,
455 [unet_cv_with_mode=711])])
456
457 if test x"$unet_cv_with_mode" = xyes -o x"$unet_cv_with_mode" = xno; then
458     unet_cv_with_mode=711
459 fi
460
461 AC_MSG_RESULT([$unet_cv_with_mode])
462
463 IRCDMODE=$unet_cv_with_mode
464 AC_SUBST(IRCDMODE)
465
466 dnl --with-owner lets us set the owner of the binary
467 changequote(,)dnl
468 unet_uid=`id | sed -e 's/.*uid=[0-9]*(//' -e 's/).*//' 2> /dev/null`
469 changequote([,])dnl
470 AC_MSG_CHECKING([which user should own the installed binary])
471 AC_ARG_WITH([owner],
472 [  --with-owner=owner      Specify owner of the installed binary],
473 [unet_cv_with_owner=$with_owner],
474 [AC_CACHE_VAL(unet_cv_with_owner,
475 [unet_cv_with_owner=$unet_uid])])
476
477 if test x"$unet_cv_with_owner" = xyes -o x"$unet_cv_with_owner" = xno; then
478     unet_cv_with_owner=$unet_uid
479 fi
480
481 AC_MSG_RESULT([$unet_cv_with_owner])
482
483 IRCDOWN=$unet_cv_with_owner
484 AC_SUBST(IRCDOWN)
485
486 dnl --with-group lets us set the group owner of the binary
487 changequote(,)dnl
488 unet_gid=`id | sed -e 's/.*gid=[0-9]*(//' -e 's/).*//' 2> /dev/null`
489 changequote([,])dnl
490 AC_MSG_CHECKING([which group should own the installed binary])
491 AC_ARG_WITH([group],
492 [  --with-group=group      Specify group owner of the installed binary],
493 [unet_cv_with_group=$with_group],
494 [AC_CACHE_VAL(unet_cv_with_group,
495 [unet_cv_with_group=$unet_gid])])
496
497 if test x"$unet_cv_with_group" = xyes -o x"$unet_cv_with_group" = xno; then
498     unet_cv_with_group=$unet_gid
499 fi
500
501 AC_MSG_RESULT([$unet_cv_with_group])
502
503 IRCDGRP=$unet_cv_with_group
504 AC_SUBST(IRCDGRP)
505
506 dnl --with-domain lets us set the domain name for some statistics-gathering
507 unet_domain=
508 if test -f /etc/resolv.conf; then
509     unet_domain=`awk '/^domain/ { print $2; exit }' /etc/resolv.conf`
510     if test x"$unet_domain" = x; then
511         unet_domain=`awk '/^search/ { print $2; exit }' /etc/resolv.conf`
512     fi
513 fi
514 AC_MSG_CHECKING([for site domain name])
515 AC_ARG_WITH([domain],
516 [  --with-domain=domain    Domain name to use in local statistics gathering],
517 [unet_cv_with_domain=$with_domain],
518 [AC_CACHE_VAL(unet_cv_with_domain,
519 [unet_cv_with_domain=$unet_domain])])
520
521 if test x"$unet_cv_with_domain" = xyes -o x"$unet_cv_with_domain" = xno; then
522     unet_cv_with_domain=$unet_domain
523 fi
524 if test x"$unet_cv_with_domain" = xno; then
525     AC_MSG_ERROR([Unable to determine server DNS domain; use --with-domain to set it])
526 fi
527
528 AC_MSG_RESULT([$unet_cv_with_domain])
529
530 AC_DEFINE_UNQUOTED(DOMAINNAME, "*$unet_cv_with_domain",
531 [Domain name to be used for some statistics gathering])
532
533 dnl --with-chroot lets us define a directory that we are going to be using
534 dnl as the root of our filesystem
535 AC_MSG_CHECKING([if chroot operation is desired])
536 AC_ARG_WITH([chroot],
537 [  --with-chroot=dir       Specify that the server will be operated under
538                           a different root directory given by dir.  See
539                           doc/readme.chroot for more information.],
540 [unet_cv_with_chroot=$with_chroot],
541 [AC_CACHE_VAL(unet_cv_with_chroot,
542 [unet_cv_with_chroot=no])])
543
544 if test x"$unet_cv_with_chroot" = xyes; then
545     AC_MSG_ERROR([--with-chroot given with no directory.  See doc/readme.chroot.])
546 fi
547
548 # Ensure there are no trailing /'s to mess us up
549 unet_cv_with_chroot=`echo "$unet_cv_with_chroot" | sed 's%/*$%%'`
550
551 AC_MSG_RESULT([$unet_cv_with_chroot])
552
553 dnl Determine some default directory names
554 dnl
555 dnl HACK WARNING: We are referencing an autoconf internal variable.  This is
556 dnl the only way to figure out what value $prefix will have when we go to do
557 dnl the install--and the only way we can stick that value in our definitions
558 dnl of SPATH, etc.
559 # Deal with the annoying value "NONE" here
560 unet_save_prefix=$prefix
561 if test x"$prefix" = xNONE; then
562     prefix=$ac_default_prefix
563 else
564     prefix=$prefix
565 fi
566
567 unet_save_exec_prefix=$exec_prefix
568 if test x"$exec_prefix" = xNONE; then
569     exec_prefix=$prefix
570 else
571     exec_prefix=$exec_prefix
572 fi
573
574 # Obtain the actual interesting directories
575 unet_bindir=`eval echo "$bindir"`
576 unet_libdir=`eval echo "$libdir"`
577
578 # Restore the original settings of $prefix and $exec_prefix
579 prefix=$unet_save_prefix
580 exec_prefix=$unet_save_exec_prefix
581
582 dnl Now compute the name of the binary and verify that it will work under
583 dnl chroot operation
584 AC_MSG_CHECKING([where the binary will be for /restart])
585 if test x"$unet_cv_with_symlink" = xno; then
586     unet_spath="$unet_bindir/ircd"
587 else
588     unet_spath="$unet_bindir/$unet_cv_with_symlink"
589 fi
590 AC_MSG_RESULT([$unet_spath])
591
592 if test x"$unet_cv_with_chroot" != xno; then
593     if echo "$unet_spath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
594         unet_spath=`echo "$unet_spath" | sed "s%^$unet_cv_with_chroot%%"`
595     else
596         AC_MSG_WARN([Binary $unet_spath not relative to root directory $unet_cv_with_chroot; restarts will probably fail])
597     fi
598 fi
599
600 AC_DEFINE_UNQUOTED(SPATH, "$unet_spath", [Path to executable for restarts])
601
602 dnl --with-dpath sets the all-important DPATH
603 AC_MSG_CHECKING([what the data directory should be])
604 AC_ARG_WITH([dpath],
605 [  --with-dpath=dir        Directory for all server data files],
606 [unet_cv_with_dpath=$with_dpath],
607 [AC_CACHE_VAL(unet_cv_with_dpath,
608 [unet_cv_with_dpath=$unet_libdir])])
609
610 if test x"$unet_cv_with_dpath" = xyes -o x"$unet_cv_with_dpath" = xno; then
611     unet_cv_with_dpath=$unet_libdir
612 fi
613
614 # Ensure there are no trailing /'s to mess us up
615 unet_cv_with_dpath=`echo "$unet_cv_with_dpath" | sed 's%/*$%%'`
616
617 AC_MSG_RESULT([$unet_cv_with_dpath])
618
619 if test x"$unet_cv_with_chroot" != xno; then
620     if echo "$unet_cv_with_dpath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
621         unet_dpath=`echo "$unet_cv_with_dpath" | sed "s%^$unet_cv_with_chroot%%"`
622     else
623         AC_MSG_ERROR([Data directory $unet_cv_with_dpath not relative to root directory $unet_cv_with_chroot])
624     fi
625 else
626     unet_dpath=$unet_cv_with_dpath
627 fi
628
629 AC_DEFINE_UNQUOTED(DPATH, "$unet_dpath", [Path to data directory])
630
631 DPATH=$unet_cv_with_dpath
632 AC_SUBST(DPATH)
633
634 dnl --with-cpath allows us to specify the configuration file
635 AC_MSG_CHECKING([where the default configuration file resides])
636 AC_ARG_WITH([cpath],
637 [  --with-cpath=file       Set server configuration file],
638 [unet_cv_with_cpath=$with_cpath],
639 [AC_CACHE_VAL(unet_cv_with_cpath,
640 [unet_cv_with_cpath="ircd.conf"])])
641
642 if test x"$unet_cv_with_cpath" = xyes -o x"$unet_cv_with_cpath" = xno; then
643     unet_cv_with_cpath="ircd.conf"
644 fi
645
646 AC_MSG_RESULT([$unet_cv_with_cpath])
647
648 if echo "$unet_cv_with_cpath" | grep '^/' > /dev/null 2>&1; then
649     # Absolute path; check against chroot stuff
650     if test x"$unet_cv_with_chroot" != xno; then
651         if echo "$unet_cv_with_cpath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
652             unet_cpath=`echo "$unet_cv_with_cpath" | sed "s%^$unet_cv_with_chroot%%"`
653         else
654             AC_MSG_ERROR([Configuration file $unet_cv_with_cpath not relative to root directory $unet_cv_with_chroot])
655         fi
656     else
657         unet_cpath=$unet_cv_with_cpath
658     fi
659 else
660     unet_cpath=$unet_cv_with_cpath
661 fi
662
663 AC_DEFINE_UNQUOTED(CPATH, "$unet_cpath", [Configuration file name])
664
665 dnl --with-lpath allows us to specify the default debugging log file
666 AC_MSG_CHECKING([where to put the debugging log if debugging enabled])
667 AC_ARG_WITH([lpath],
668 [  --with-lpath=file       Set the debugging log file],
669 [unet_cv_with_lpath=$with_lpath],
670 [AC_CACHE_VAL(unet_cv_with_lpath,
671 [unet_cv_with_lpath="ircd.log"])])
672
673 if test x"$unet_cv_with_lpath" = xyes -o x"$unet_cv_with_lpath" = xno; then
674     unet_cv_with_lpath="ircd.log"
675 fi
676
677 AC_MSG_RESULT([$unet_cv_with_lpath])
678
679 if echo "$unet_cv_with_lpath" | grep '^/' > /dev/null 2>&1; then
680     # Absolute path; check against chroot stuff
681     if test x"$unet_cv_with_chroot" != xno; then
682         if echo "$unet_cv_with_lpath" | grep "^$unet_cv_with_chroot" > /dev/null 2>&1; then
683             unet_lpath=`echo "$unet_cv_with_lpath" | sed "s%^$unet_cv_with_chroot%%"`
684         else
685             AC_MSG_WARN([Log file $unet_cv_with_lpath not relative to root directory $unet_cv_with_chroot; using default ircd.log instead])
686             unet_cv_with_lpath="ircd.log"
687             unet_lpath="ircd.log"
688         fi
689     else
690         unet_lpath=$unet_cv_with_lpath
691     fi
692 else
693     unet_lpath=$unet_cv_with_lpath
694 fi
695
696 AC_DEFINE_UNQUOTED(LPATH, "$unet_lpath", [Path to debugging log file])
697
698 dnl --with-maxcon allows us to set the maximum connections
699 unet_maxcon=`ulimit -Hn`
700 if test x"$unet_maxcon" = xunlimited; then
701     unet_maxcon=`ulimit -Sn`
702 fi
703 unet_maxcon=`expr $unet_maxcon - 4`
704 AC_MSG_CHECKING([max connections])
705 AC_ARG_WITH([maxcon],
706 [  --with-maxcon=maxcon    Maximum number of connections server will accept],
707 [unet_cv_with_maxcon=$with_maxcon],
708 [AC_CACHE_VAL(unet_cv_with_maxcon,
709 [unet_cv_with_maxcon=$unet_maxcon])])
710
711 if test x"$unet_cv_with_maxcon" = xyes -o x"$unet_cv_with_maxcon" = xno; then
712     unet_cv_with_maxcon=$unet_maxcon
713 fi
714
715 AC_MSG_RESULT([$unet_cv_with_maxcon])
716
717 AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $unet_cv_with_maxcon,
718 [Maximum number of network connections])
719
720 dnl Finally really generate all output files:
721 AC_OUTPUT(Makefile ircd/Makefile ircd/test/Makefile doc/Makefile, [echo timestamp > stamp-h])
722
723 dnl Report configuration
724 AC_OUTPUT_COMMANDS([echo "
725 ircu is now hopefully configured for your system.
726
727   Host system:         $host_os
728   Prefix:              $prefix
729   Asserts:             $unet_cv_enable_asserts
730   Warnings:            $unet_cv_enable_warnings
731   Debug:               $unet_cv_enable_debug
732   Profile:             $unet_cv_enable_profile
733   Owner/mode:          $unet_cv_with_owner.$unet_cv_with_group ($unet_cv_with_mode)
734   Chroot:              $unet_cv_with_chroot
735
736   Domain:              $unet_cv_with_domain
737   DPath:               $unet_cv_with_dpath
738   CPath:               $unet_cv_with_cpath
739   LPath:               $unet_cv_with_lpath
740   Maximum connections: $unet_cv_with_maxcon
741
742   poll() engine:       $unet_cv_enable_poll
743   kqueue() engine:     $unet_cv_enable_kqueue
744   /dev/poll engine:    $unet_cv_enable_devpoll
745   epoll() engine:      $unet_cv_enable_epoll
746 "])