]> jfr.im git - solanum.git/blob - configure.ac
'monitor s' output does not end with RPL_ENDOFMONLIST.
[solanum.git] / configure.ac
1 dnl $Id: configure.ac 3516 2007-06-10 16:14:03Z jilles $
2 dnl Process this file with autoconf to produce a configure script.
3
4 dnl TODO: clean up all the OpenSSL and shared module checking stuff;
5 dnl the most major changes have already been made and it looks like
6 dnl said functions need to be just about as complex as they already are.
7
8 AC_PREREQ(2.57)
9
10 dnl Sneaky way to get an Id tag into the configure script
11 AC_COPYRIGHT([$Id: configure.ac 3516 2007-06-10 16:14:03Z jilles $])
12
13 AC_INIT([charybdis],[3.3.0])
14
15 AC_CONFIG_HEADER(include/setup.h)
16
17 AC_PREFIX_DEFAULT($HOME/ircd)
18
19 AC_GNU_SOURCE
20
21 OLD_CFLAGS="$CFLAGS"
22 dnl Checks for programs.
23 AC_PROG_CC
24 AC_LANG(C)
25
26 dnl Make sure autoconf doesn't interfere with cflags -jmallett
27 CFLAGS="$OLD_CFLAGS"
28
29 AC_CONFIG_SUBDIRS(libratbox)
30
31 dnl Check for various compilers. -jmallett
32 dnl But if $CC turns out to be gcc, sure as hell it's, well, gcc. -joshk
33
34 if test "$ac_cv_c_compiler_gnu" != yes; then
35
36 SGS=no
37 AC_MSG_CHECKING($CC -version for TenDRA or MIPSpro)
38 case `$CC -version 2>&1` in
39 *TenDRA*)
40 AC_MSG_RESULT([yes, TenDRA])
41 IRC_CFLAGS=""
42 CPPFLAGS="$CPPFLAGS -Ylonglong -Yansi -I/usr/include"
43 SGS=yes
44 TenDRA=yes
45 ;;
46 *MIPSpro*)
47 AC_MSG_RESULT([yes, MIPSpro])
48 MIPSpro=yes
49 SGS=yes
50 ;;
51 *)
52 AC_MSG_RESULT(no)
53 TenDRA=no
54 MIPSpro=no
55 ;;
56 esac
57
58 AC_MSG_CHECKING([$CC -V for Sun Workshop, Forte, HPUX or Tru64 cc])
59 case `$CC -V 2>&1` in
60 *Sun*WorkShop* | *Forte*Developer*)
61 AC_MSG_RESULT(Sun Workshop/Forte)
62 IRC_CFLAGS="-fast -xinline=dlinkAdd,dlinkAddBefore,dlinkAddTail,dlinkDelete,dlink_list_length,dlink_node,dlinkMoveList,_MyMalloc,_MyRealloc,_MyFree,_DupString"
63 SunWorkShop=yes
64 SGS=yes
65 ;;
66 *Tru64*)
67 AC_MSG_RESULT(Tru64 cc)
68 IRC_CFLAGS="-O2"
69 CPPFLAGS="-I/usr/local/include"
70 Tru=yes
71 ;;
72 *HP*ANSI*)
73 AC_MSG_RESULT(HPUX cc)
74 HPUX=yes
75 IRC_CFLAGS="+e"
76 ;;
77 *)
78 AC_MSG_RESULT(no)
79 ;;
80 esac
81
82 fi
83
84 AC_MSG_CHECKING([uname -s for Solaris, AIX or HPUX])
85 OSNAME=`uname -s`
86 case "$OSNAME" in
87 HP-UX*)
88 dnl only do this if we haven't already detected the newer one
89 dnl and we're not already using gcc
90
91 if test "$HPUX" != yes -a "$ac_cv_c_compiler_gnu" = no; then
92 AC_MSG_RESULT(assuming old HPUX with its own cc)
93 IRC_CFLAGS="$IRC_CFLAGS +e"
94 HPUX=yes
95 else
96 AC_MSG_RESULT(already using newer HPUX)
97 fi
98 ;;
99 SunOS*)
100 AC_MSG_RESULT(SunOS or Solaris)
101 AC_DEFINE(__EXTENSIONS__, 1, [This is needed to use strtok_r on Solaris.])
102 SUN=yes
103 ;;
104 AIX*)
105 AC_MSG_RESULT(AIX - Sorry you poor bastard..really we are)
106 IRC_CFLAGS="$IRC_CFLAGS -Wl,-brtl -Wl,-G"
107 ;;
108 *)
109 AC_MSG_RESULT(no)
110 ;;
111 esac
112
113 if test "$ac_cv_c_compiler_gnu" = yes; then
114 AC_MSG_CHECKING(if $CC is Apple GCC)
115
116 case `$CC -v 2>&1 | tail -n 1` in
117 *Apple*)
118 AC_MSG_RESULT(yes)
119 AppleGCC=yes
120 ;;
121 *)
122 AC_MSG_RESULT(no)
123 AppleGCC=no
124 ;;
125 esac
126
127 IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall -std=gnu99"
128 fi
129
130 dnl If we support -g, use it!
131 if test "$ac_cv_prog_cc_g" = yes; then
132 dnl Tru64 needs -g3 for -O2
133 if test "$Tru" = yes; then
134 IRC_CFLAGS="$IRC_CFLAGS -g3"
135 else
136 IRC_CFLAGS="$IRC_CFLAGS -g"
137 fi
138 fi
139
140 dnl SVR4 SGS based on what we know about the compiler -jmallett
141 AC_MSG_CHECKING(if $CC supports the SVR4 SGS interfaces)
142 if test "$SGS" = "yes"; then
143 AC_MSG_RESULT(yes)
144 else
145 AC_MSG_RESULT(no)
146 fi
147
148 dnl We prefer gcc -MM because it's a lot less bloated
149 AC_PATH_PROG(MKDEP, mkdep)
150 AC_PATH_PROG(MAKEDEPEND, makedepend)
151
152 AC_MSG_CHECKING(how to generate dependency info)
153
154 STDOUT="> .depend"
155
156 if test "$ac_cv_c_compiler_gnu" = yes; then
157 AC_MSG_RESULT(gcc -MM)
158 MKDEP="$CC -MM"
159 elif test ! -z "$MKDEP"; then
160 AC_MSG_RESULT(mkdep)
161
162 dnl Tru64's mkdep is very loud
163 if test -z "$Tru"; then
164 STDOUT=""
165 else
166 STDOUT=" 2> /dev/null"
167 fi
168 elif test "$SunWorkShop" = yes; then
169 AC_MSG_RESULT($CC -xM)
170 MKDEP="$CC -xM"
171 STDOUT="> .depend 2> /dev/null"
172 elif test ! -z "$MAKEDEPEND"; then
173 AC_MSG_RESULT(makedepend)
174 MKDEP="$MAKEDEPEND -f-"
175 else
176 AC_MSG_RESULT([nothing suitable.. forget it!])
177 MKDEP=":"
178 fi
179
180 AC_SUBST(MKDEP)
181 AC_SUBST(STDOUT)
182
183 dnl check for /dev/null so we can use it to hold evil fd's
184 AC_MSG_CHECKING([for /dev/null])
185 if test -c /dev/null ; then
186 AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null])
187 AC_MSG_RESULT(yes)
188 else
189 AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null])
190 AC_MSG_RESULT(no - using devnull.log)
191 fi
192
193 dnl jdc -- If CFLAGS is defined, best use it everywhere...
194 dnl NOTE: jv says it must be added to the *END*, because things like
195 dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid.
196 if test ! -z "$CFLAGS"; then
197 IRC_CFLAGS="$IRC_CFLAGS $CFLAGS"
198 fi
199
200 AC_ISC_POSIX
201 AC_C_INLINE
202 AC_PROG_GCC_TRADITIONAL
203 AC_PROG_MAKE_SET
204 AC_PROG_INSTALL
205 AC_PATH_PROG(RM, rm)
206 AC_PATH_PROG(CP, cp)
207 AC_PATH_PROG(MV, mv)
208 AC_PATH_PROG(LN, ln)
209 AC_PATH_PROG(SED, sed)
210 AC_PATH_PROG(AR, ar)
211 AC_PATH_PROG(LD, ld)
212 AC_PATH_PROG(RANLIB, ranlib)
213 AC_PATH_PROG(TOUCH, touch)
214
215 AC_PROG_YACC
216
217 dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found
218 if test "$YACC" = "yacc" -a -z "`which $YACC 2>/dev/null`"; then
219 AC_MSG_ERROR([could not locate a suitable parser generator; install bison, yacc, or byacc])
220 fi
221
222 AC_PROG_LEX
223
224 if test "$LEX" = ":"; then
225 AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.])
226 fi
227
228 dnl use directory structure of cached as default (hack)
229 if test "$libexecdir" = '${exec_prefix}/libexec' &&
230 test "$localstatedir" = '${prefix}/var'; then
231 libexecdir='${bindir}'
232 localstatedir='${prefix}'
233 fi
234
235 dnl Checks for header files.
236 AC_HEADER_STDC
237
238 AC_CHECK_HEADERS([crypt.h sys/resource.h sys/param.h errno.h sys/syslog.h stddef.h sys/wait.h wait.h sys/epoll.h sys/uio.h machine/endian.h])
239
240 dnl Stuff that the memory manager (imalloc) depends on
241 dnl ==================================================
242
243 AC_C_CONST
244 if test "$ac_cv_header_machine_endian_h" = "no" ; then
245 AC_C_BIGENDIAN
246 fi
247 AC_TYPE_PID_T
248 AC_TYPE_SIZE_T
249 AC_CHECK_SIZEOF(short)
250 AC_CHECK_SIZEOF(int)
251 AC_CHECK_SIZEOF(long)
252 AC_CHECK_SIZEOF(long long)
253
254 dnl Networking Functions
255 dnl ====================
256
257 AC_SEARCH_LIBS(socket, socket, , [AC_MSG_ERROR([You have no socket()! Aborting.])])
258
259 dnl SunOS/Solaris required libnsl for inet_ntoa()
260 if test x"$SUN" = xyes; then
261 AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
262 fi
263
264 AC_CHECK_TYPE(socklen_t, ,
265 [AC_DEFINE([socklen_t], [unsigned int],
266 [If we don't have a real socklen_t, unsigned int is good enough.])],
267 [#include <sys/types.h>
268 #include <sys/socket.h>])
269
270 AC_ARG_ENABLE(ipv6,
271 AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
272
273 AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
274
275 CRYPT_LIB=$ac_cv_search_crypt
276
277 if test "$CRYPT_LIB" = "none required"; then
278 unset CRYPT_LIB
279 elif test "$CRYPT_LIB" = no; then
280 unset CRYPT_LIB
281 fi
282
283 AC_SUBST(CRYPT_LIB)
284
285 if test "$ac_cv_header_sys_wait_h" = yes -o "$ac_cv_header_wait_h" = yes; then
286 VICONF=viconf
287 dnl We need one of the above to build viconf. Just a sanity check,
288 dnl we don't want to stop people from building the rest of ircd
289 dnl just because they can't build viconf.
290 else
291 VICONF=""
292 fi
293
294 AC_SUBST(VICONF)
295
296 dnl See whether we can include both string.h and strings.h.
297 AC_CACHE_CHECK([whether string.h and strings.h may both be included],
298 gcc_cv_header_string,
299 [
300 AC_COMPILE_IFELSE(
301 [#include <string.h>
302 #include <strings.h>],
303 [gcc_cv_header_string=yes],
304 [gcc_cv_header_string=no])
305 ])
306
307 if test "$gcc_cv_header_string" = "yes"; then
308 AC_DEFINE(STRING_WITH_STRINGS, 1, [Define to 1 if string.h may be included along with strings.h])
309 fi
310
311 AC_C_BIGENDIAN
312
313 dnl Check for stdarg.h - if we can't find it, halt configure
314 AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])])
315
316 dnl Checks for the existence of strlcat, strlcpy, basename...
317 dnl This more reliable test only works with gcc though.
318
319 if test "$ac_cv_c_compiler_gnu" = yes; then
320
321 AC_MSG_CHECKING(for strlcpy)
322 save_CFLAGS=$CFLAGS
323 CFLAGS="$CFLAGS -Wimplicit -Werror"
324
325 AC_LINK_IFELSE(
326 [AC_LANG_PROGRAM(
327 [[#include <string.h>
328 #include <stdlib.h>]],
329 [[char *a = malloc(6);
330 strlcpy(a, "hello", 6);]]
331 )],
332 [AC_MSG_RESULT(yes)
333 AC_DEFINE(HAVE_STRLCPY, 1, [Define if strlcpy is available (most BSDs.)])],
334 [AC_MSG_RESULT(no)]
335 )
336
337 AC_MSG_CHECKING(for strlcat)
338 AC_LINK_IFELSE(
339 [AC_LANG_PROGRAM(
340 [[#include <string.h>
341 #include <stdlib.h>]],
342 [[char *a = malloc(6);
343 a[0] = '\0';
344 strlcat(a, "hello", 6);]]
345 )],
346 [AC_MSG_RESULT(yes)
347 AC_DEFINE(HAVE_STRLCAT, 1, [Define if strlcat is available (most BSDs.)])],
348 [AC_MSG_RESULT(no)]
349 )
350
351 CFLAGS=$save_CFLAGS
352
353 else
354
355 dnl Better than nothing. The more complicated test above probably fixes powerpc,
356 dnl so who cares.
357
358 AC_CHECK_FUNCS([strlcat strlcpy])
359
360 fi
361
362 AC_CHECK_TYPE([u_int32_t], [],
363 [
364 AC_CHECK_TYPE([uint32_t],
365 [
366 AC_DEFINE(u_int32_t, [uint32_t], [If system does not define u_int32_t, define a reasonable substitute.])
367 ],
368 [
369 AC_MSG_WARN([system has no u_int32_t or uint32_t, default to unsigned long int])
370 AC_DEFINE(u_int32_t, [unsigned long int], [If system does not define u_int32_t, define to unsigned long int here.])
371 ])
372 ])
373
374 AC_CHECK_TYPE([u_int16_t], [],
375 [
376 AC_CHECK_TYPE([uint16_t],
377 [
378 AC_DEFINE(u_int16_t, [uint16_t], [If system does not define u_int16_t, define a usable substitute])
379 ],
380 [
381 AC_MSG_WARN([system has no u_int16_t or uint16_t, default to unsigned short int])
382 AC_DEFINE(u_int16_t, [unsigned short int], [If system does not define u_int16_t, define a usable substitute.])
383 ])
384 ])
385
386 AC_CHECK_TYPE([in_port_t], [],
387 [AC_DEFINE(in_port_t, [u_int16_t], [If system does not define in_port_t, define it to what it should be.])],
388 [[#include <sys/types.h>
389 #include <netinet/in.h>]])
390
391 AC_CHECK_TYPE([sa_family_t], [],
392 [AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])],
393 [[#include <sys/types.h>
394 #include <sys/socket.h>]])
395
396 AC_CHECK_TYPES([uintptr_t])
397
398 dnl check for various functions...
399 AC_CHECK_FUNCS([socketpair vsnprintf mmap gettimeofday strdup strndup ])
400
401 AC_FUNC_ALLOCA
402
403 dnl Specialized functions checks
404 dnl ============================
405
406 dnl check for nanosleep
407 AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
408 LIBS="${LIBS} -lrt",
409 [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
410 )])])
411 if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
412 then
413 AC_MSG_RESULT("nanosleep not found..using select for delay")
414 else
415 AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
416 fi
417
418 dnl OpenSSL support
419 AC_MSG_CHECKING(for OpenSSL)
420 AC_ARG_ENABLE(openssl,
421 [AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
422 AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
423 [cf_enable_openssl=$enableval],
424 [cf_enable_openssl="auto"])
425
426 if test "$cf_enable_openssl" != "no" ; then
427 cf_openssl_basedir=""
428 if test "$cf_enable_openssl" != "auto" &&
429 test "$cf_enable_openssl" != "yes" ; then
430 dnl Support for --enable-openssl=/some/place
431 cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`"
432 else
433 dnl Do the auto-probe here. Check some common directory paths.
434 for dirs in /usr/local/ssl /usr/pkg /usr/local \
435 /usr/local/openssl ; do
436 if test -f "${dirs}/include/openssl/opensslv.h" ; then
437 cf_openssl_basedir="${dirs}"
438 break
439 fi
440 done
441 unset dirs
442 fi
443 dnl Now check cf_openssl_found to see if we found anything.
444 if test ! -z "$cf_openssl_basedir"; then
445 if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
446 SSL_INCLUDES="-I${cf_openssl_basedir}/include"
447 SSL_LIBS="-L${cf_openssl_basedir}/lib"
448 else
449 dnl OpenSSL wasn't found in the directory specified. Naughty
450 dnl administrator...
451 cf_openssl_basedir=""
452 fi
453 else
454 dnl Check for stock FreeBSD 4.x and 5.x systems, since their files
455 dnl are in /usr/include and /usr/lib. In this case, we don't want to
456 dnl change INCLUDES or LIBS, but still want to enable OpenSSL.
457 dnl We can't do this check above, because some people want two versions
458 dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl)
459 dnl and they want /usr/local/ssl to have preference.
460 if test -f "/usr/include/openssl/opensslv.h" ; then
461 cf_openssl_basedir="/usr"
462 fi
463 fi
464
465 dnl If we have a basedir defined, then everything is okay. Otherwise,
466 dnl we have a problem.
467 if test ! -z "$cf_openssl_basedir"; then
468 AC_MSG_RESULT($cf_openssl_basedir)
469 cf_enable_openssl="yes"
470 else
471 AC_MSG_RESULT([not found. Specify a correct path?])
472 cf_enable_openssl="no"
473 fi
474 unset cf_openssl_basedir
475 else
476 dnl If --disable-openssl was specified
477 AC_MSG_RESULT(disabled)
478 fi
479
480 save_CPPFLAGS="$CPPFLAGS"
481 CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
482 save_LIBS="$LIBS"
483 LIBS="$LIBS $SSL_LIBS"
484 if test "$cf_enable_openssl" != no; then
485 dnl Check OpenSSL version (must be 0.9.6 or above!)
486 AC_MSG_CHECKING(for OpenSSL 0.9.6 or above)
487 AC_RUN_IFELSE(
488 AC_LANG_PROGRAM(
489 [#include <openssl/opensslv.h>
490 #include <stdlib.h>],
491 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
492 exit(0); else exit(1);]]),
493 cf_openssl_version_ok=yes,
494 cf_openssl_version_ok=no,
495 cf_openssl_version_ok=no)
496
497 if test "$cf_openssl_version_ok" = yes; then
498 AC_MSG_RESULT(found)
499
500 dnl Work around pmake/gmake conditional incompatibilities
501 AC_SUBST(ENCSPEED, encspeed)
502
503 dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
504 CPPFLAGS="$CPPFLAGS $SSL_LIBS"
505 AC_CHECK_LIB(crypto, RSA_free)
506 SSL_LIBS="$SSL_LIBS -lcrypto"
507 SSL_SRCS_ENABLE='$(SSL_SRCS)'
508 else
509 AC_MSG_RESULT(no - OpenSSL support disabled)
510 fi
511 fi
512
513 CPPFLAGS="$save_CPPFLAGS"
514 LIBS="$save_LIBS"
515
516 dnl End OpenSSL detection
517
518
519 dnl Specialized functions and libraries
520 dnl ===================================
521
522 AC_ARG_WITH(zlib-path,
523 AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]),
524 [LIBS="$LIBS -L$withval"],)
525
526 AC_ARG_ENABLE(zlib,
527 AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
528 [zlib=$enableval],[zlib=yes])
529
530 if test "$zlib" = yes; then
531
532 AC_CHECK_HEADER(zlib.h, [
533 AC_CHECK_LIB(z, zlibVersion,
534 [
535 AC_SUBST(ZLIB_LD, -lz)
536 AC_DEFINE(HAVE_LIBZ, 1, [Define to 1 if zlib (-lz) is available.])
537 ], zlib=no)
538 ], zlib=no)
539
540 fi
541
542 dnl IO Loop Selection
543 dnl =================
544
545 AC_ARG_ENABLE(ports, AC_HELP_STRING([--enable-ports],[Force solaris I/O ports subsystem usage.]),
546 [ if test $enableval = yes; then
547 SELECT_TYPE_EXPLICIT="ports"
548 else
549 use_ports=no
550 fi
551 ],)
552
553 AC_ARG_ENABLE(poll, AC_HELP_STRING([--enable-poll],[Force poll() usage.]),
554 [ if test $enableval = yes; then
555 SELECT_TYPE_EXPLICIT="poll"
556 else
557 use_poll=no
558 fi
559 ],)
560
561 AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select],[Force select() usage.]),
562 [ if test $enableval = yes; then
563 SELECT_TYPE_EXPLICIT="select"
564 else
565 use_select=no
566 fi
567 ],)
568
569 AC_ARG_ENABLE(kqueue, AC_HELP_STRING([--enable-kqueue],[Force kqueue() usage.]),
570 [ if test $enableval = yes; then
571 SELECT_TYPE_EXPLICIT="kqueue"
572 else
573 use_kqueue=no
574 fi
575 ],)
576
577 AC_ARG_ENABLE(epoll, AC_HELP_STRING([--enable-epoll],[Force sys_epoll usage (Linux only).]),
578 [ if test $enableval = yes; then
579 SELECT_TYPE_EXPLICIT="epoll"
580 AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], [haveepoll=no])
581 else
582 use_epoll=no
583 fi
584 ],)
585
586 dnl **********************************************************************
587 dnl Check for --with-confdir
588 dnl **********************************************************************
589
590 AC_MSG_CHECKING([whether to modify confdir])
591 AC_ARG_WITH(confdir,
592 AC_HELP_STRING([--with-confdir=DIR],
593 [Directory to install config files.]),
594 [ confdir=`echo $withval | sed 's/\/$//'`
595 AC_MSG_RESULT(yes)
596 AC_DEFINE_DIR(ETC_DIR, confdir, [Prefix where config files are installed.])
597 AC_SUBST_DIR([confdir]) ],
598 [ confdir='${prefix}/etc'
599 AC_MSG_RESULT(no)
600 AC_DEFINE_DIR(ETC_DIR, confdir, [Prefix where config files are installed.])
601 AC_SUBST_DIR([confdir])]
602 )
603
604 dnl **********************************************************************
605 dnl Check for --with-logdir
606 dnl **********************************************************************
607
608 AC_MSG_CHECKING([whether to modify logdir])
609 AC_ARG_WITH(logdir,
610 AC_HELP_STRING([--with-logdir=DIR],
611 [Directory where to write logfiles.]),
612 [ logdir=`echo $withval | sed 's/\/$//'`
613 AC_MSG_RESULT(yes)
614 AC_DEFINE_DIR(LOG_DIR, logdir, [Prefix where to write logfiles.])
615 AC_SUBST_DIR([logdir]) ],
616 [ logdir='${prefix}/logs'
617 AC_MSG_RESULT(no)
618 AC_DEFINE_DIR(LOG_DIR, logdir, [Prefix where to write logfiles.])
619 AC_SUBST_DIR([logdir])]
620 )
621
622 dnl **********************************************************************
623 dnl Check for --with-helpdir
624 dnl **********************************************************************
625
626 AC_MSG_CHECKING([whether to modify helpdir])
627 AC_ARG_WITH(helpdir,
628 AC_HELP_STRING([--with-helpdir=DIR],
629 [Directory to install help files.]),
630 [ helpdir=`echo $withval | sed 's/\/$//'`
631 AC_MSG_RESULT(yes)
632 AC_DEFINE_DIR(HELP_DIR, helpdir, [Prefix where help files are installed.])
633 AC_SUBST_DIR([helpdir]) ],
634 [ helpdir='${prefix}/help'
635 AC_MSG_RESULT(no)
636 AC_DEFINE_DIR(HELP_DIR, helpdir, [Prefix where help file are installed.])
637 AC_SUBST_DIR([helpdir])]
638 )
639
640 dnl **********************************************************************
641 dnl Check for --with-moduledir
642 dnl **********************************************************************
643
644 AC_MSG_CHECKING([whether to modify moduledir])
645 AC_ARG_WITH(moduledir,
646 AC_HELP_STRING([--with-moduledir=DIR],
647 [Directory to install modules.]),
648 [ moduledir=`echo $withval | sed 's/\/$//'`
649 AC_MSG_RESULT(yes)
650 AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
651 AC_SUBST_DIR([moduledir]) ],
652 [ moduledir='${prefix}/modules'
653 AC_MSG_RESULT(no)
654 AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
655 AC_SUBST_DIR([moduledir])]
656 )
657
658 dnl **********************************************************************
659 dnl Branding
660 dnl **********************************************************************
661
662 AC_MSG_CHECKING([whether custom branding is requested])
663 AC_ARG_WITH(custom-branding,
664 AC_HELP_STRING([--with-custom-branding=NAME],
665 [Custom branding name.]),
666 [BRANDING_NAME=$withval
667 AC_MSG_RESULT([yes])],
668 [BRANDING_NAME=$PACKAGE_NAME
669 AC_MSG_RESULT([no])]
670 )
671
672 AC_MSG_CHECKING([whether a custom version is requested])
673 AC_ARG_WITH(custom-version,
674 AC_HELP_STRING([--with-custom-version=NAME],
675 [Custom version branding.]),
676 [BRANDING_VERSION=$withval
677 AC_MSG_RESULT([yes])],
678 [BRANDING_VERSION=$PACKAGE_VERSION
679 AC_MSG_RESULT([no])]
680 )
681
682 AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
683 AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
684
685 if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
686 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
687 fi
688
689 if test ! -z "$SELECT_TYPE_EXPLICIT"; then
690 SELECT_TYPE="$SELECT_TYPE_EXPLICIT";
691 echo "Forcing $SELECT_TYPE to be enabled"
692 else
693
694 if test ! "x$use_ports" = "xno"; then
695 AC_CHECK_FUNCS(port_getn, [haveports=yes], [haveports=no])
696 if test "x$haveports" = "xyes" ; then
697 SELECT_TYPE="ports"
698 fi
699 fi
700
701 if test ! "x$use_select" = "xno"; then
702 AC_CHECK_FUNCS(select, [haveselect=yes], [haveselect=no])
703 if test "x$haveselect" = "xyes" ; then
704 SELECT_TYPE="select"
705 fi
706 fi
707
708 if test ! "x$use_poll" = "xno"; then
709 AC_CHECK_FUNCS(poll, [havepoll=yes], [havepoll=no])
710 if test "x$havepoll" = "xyes" ; then
711 SELECT_TYPE="poll"
712 fi
713 fi
714
715 if test ! "x$use_kqueue" = "xno"; then
716 AC_CHECK_FUNCS(kevent, [havekqueue=yes], [havekqueue=no])
717 if test "x$havekqueue" = "xyes" ; then
718 SELECT_TYPE="kqueue"
719 fi
720 fi
721
722 if test ! "x$use_epoll" = "xno"; then
723 AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], [haveepoll=no])
724 if test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
725 if test "x$haveepoll" = "xyes" ; then
726 AC_MSG_CHECKING(for epoll support in kernel)
727 AC_TRY_RUN(
728 #include <stdint.h>
729 #include <sys/param.h>
730 #include <sys/types.h>
731 #include <sys/epoll.h>
732 #include <sys/syscall.h>
733 #include <unistd.h>
734
735 int
736 main(int argc, char **argv)
737 {
738 int epfd;
739
740 epfd = epoll_create(256);
741 return (epfd == -1 ? 1 : 0);
742 }, [AC_MSG_RESULT(yes)
743 AC_DEFINE(HAVE_EPOLL, 1,
744 [Define if your system supports the epoll system calls])
745 SELECT_TYPE="epoll"],
746 AC_MSG_RESULT(no), AC_MSG_RESULT(no))
747 fi
748 fi
749
750 haveepollsyscall=no
751
752 if test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
753 if test "x$haveepoll" = "xno" ; then
754 AC_MSG_CHECKING(for epoll system call)
755 AC_TRY_RUN(
756 #include <stdint.h>
757 #include <sys/param.h>
758 #include <sys/types.h>
759 #include <sys/epoll.h>
760 #include <sys/syscall.h>
761 #include <unistd.h>
762
763 int
764 epoll_create(int size)
765 {
766 return (syscall(__NR_epoll_create, size));
767 }
768
769 int
770 main(int argc, char **argv)
771 {
772 int epfd;
773
774 epfd = epoll_create(256);
775 exit (epfd == -1 ? 1 : 0);
776 }, [AC_MSG_RESULT(yes)
777 AC_DEFINE(HAVE_EPOLL, 1,
778 [Define if your system supports the epoll system calls])
779 SELECT_TYPE="epoll"],
780 AC_MSG_RESULT(no), AC_MSG_RESULT(no))
781 fi
782 fi
783
784 fi
785
786 fi
787
788 if test -z "$SELECT_TYPE"; then
789 AC_MSG_ERROR([Unable to find a usable IO interface],)
790 fi
791
792 echo "Using $SELECT_TYPE for select loop."
793
794 AC_DEFINE_UNQUOTED(SELECT_TYPE, "$SELECT_TYPE", [This is the type of IO loop we are using])
795 AC_SUBST(SELECT_TYPE)
796
797
798 dnl Debug-related options
799 dnl =====================
800
801 AC_ARG_ENABLE(assert,
802 AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]),
803 [assert=$enableval], [assert=no])
804
805 if test "$assert" = no; then
806 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
807 elif test "$assert" = soft; then
808 AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.])
809 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
810 elif test "$assert" = yes; then
811 assert = "hard";
812 fi
813
814 AC_MSG_CHECKING(if you want IO Debugging hooks)
815 AC_ARG_ENABLE(iodebug,
816 AC_HELP_STRING([--enable-iodebug],[Enable IO Debugging hooks]),
817 [iodebug=$enableval], [iodebug=no])
818
819 if test "$iodebug" = yes; then
820 AC_DEFINE(USE_IODEBUG_HOOKS, 1, [Define this to enable IO Debug hooks.])
821 AC_MSG_RESULT(yes)
822 else
823 AC_MSG_RESULT(no)
824 fi
825
826
827 AC_MSG_CHECKING(if you want to do a profile build)
828 AC_ARG_ENABLE(profile,
829 AC_HELP_STRING([--enable-profile],[Enable profiling]),
830 [profile=$enableval], [profile=no])
831
832 if test "$profile" = yes; then
833 if test "$ac_cv_c_compiler_gnu" = yes; then
834 IRC_CFLAGS="$IRC_CFLAGS -pg"
835 AC_MSG_RESULT([yes, adding -pg])
836 AC_DEFINE(CHARYBDIS_PROFILE, 1, [Define this if you are profiling.])
837 else
838 AC_MSG_RESULT([no, profile builds only work with gcc])
839 fi
840 else
841 AC_MSG_RESULT(no)
842 fi
843
844 AC_ARG_ENABLE(balloc,
845 AC_HELP_STRING([--disable-balloc],[Disable the block allocator.]),
846 [balloc=$enableval], [balloc=yes])
847
848 if test "$balloc" = no; then
849 AC_DEFINE([NOBALLOC], 1, [Define to 1 if you wish to disable the block allocator.])
850 fi
851
852 AC_ARG_ENABLE(small-net,
853 AC_HELP_STRING([--enable-small-net],[Enable small network support.]),
854 [small_net=$enableval], [small_net=no])
855
856 if test "$small_net" = yes; then
857 dnl AC_DEFINE([HASHSIZE], 4096, [Max number of buckets in hash tables.])
858 AC_DEFINE([NICKNAMEHISTORYLENGTH], 1500, [Size of the WHOWAS array.])
859 AC_DEFINE([CHANNEL_HEAP_SIZE], 256, [Size of the channel heap.])
860 AC_DEFINE([BAN_HEAP_SIZE], 128, [Size of the ban heap.])
861 AC_DEFINE([CLIENT_HEAP_SIZE], 256, [Size of the client heap.])
862 AC_DEFINE([LCLIENT_HEAP_SIZE], 128, [Size of the local client heap.])
863 AC_DEFINE([PCLIENT_HEAP_SIZE], 32, [Size of the pre-client heap.])
864 AC_DEFINE([USER_HEAP_SIZE], 128, [Size of the user heap.])
865 AC_DEFINE([DNODE_HEAP_SIZE], 256, [Size of the dlink_node heap.])
866 AC_DEFINE([TOPIC_HEAP_SIZE], 256, [Size of the topic heap.])
867 AC_DEFINE([LINEBUF_HEAP_SIZE], 128, [Size of the linebuf heap.])
868 AC_DEFINE([MEMBER_HEAP_SIZE], 256, [Sizeof member heap.])
869 AC_DEFINE([ND_HEAP_SIZE], 128, [Size of the nick delay heap.])
870 AC_DEFINE([CONFITEM_HEAP_SIZE], 128, [Size of the confitem heap.])
871 AC_DEFINE([MONITOR_HEAP_SIZE], 128, [Size of the monitor heap.])
872 AC_DEFINE([FD_HEAP_SIZE], 128, [Size of fd heap.])
873 AC_DEFINE([AWAY_HEAP_SIZE], 128, [Size of away heap.])
874 else
875 dnl These settings are for a large network like efnet..they will use lots of memory
876 dnl so enable small net unless you really need this much support
877 AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
878 AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
879 AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
880 AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
881 AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
882 AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
883 AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
884 AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
885 AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
886 AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
887 AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
888 AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
889 AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
890 AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
891 AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
892 AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
893 fi
894
895 AC_ARG_WITH(nicklen,
896 AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
897 [
898 if ! expr "$withval" + 0 >/dev/null 2>&1; then
899 AC_ERROR([NICKLEN must be a numeric value])
900 fi
901 if test $withval -gt 50; then
902 NICKLEN=50
903 AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
904 elif test $withval -lt 9; then
905 NICKLEN=9
906 AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9])
907 else
908 NICKLEN="$withval"
909 fi
910 ], [NICKLEN=31])
911
912 AC_ARG_WITH(topiclen,
913 AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
914 [
915 if test $withval -ge 390; then
916 TOPICLEN=390
917 AC_MSG_WARN([TOPICLEN has a hard limit of 390. Setting TOPICLEN=390])
918 else
919 TOPICLEN=$withval
920 fi
921 ], [TOPICLEN=390])
922
923 AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
924 AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
925
926 shared_modules="yes"
927 dnl Some first-stage sanity checks.
928 if test "$shared_modules" = yes; then
929 dnl TenDRA's cc is called tcc too.
930 if test "$CC" = tcc -a "$TenDRA" = "no"; then
931 AC_MSG_WARN([disabling shared modules: Tiny C Compiler can't create PIC])
932 shared_modules="no"
933 fi
934 fi
935
936 dnl Second stage: check for functions and headers.
937 if test "$shared_modules" = yes; then
938 DYNLINK_C=dynlink.c
939 AC_CHECK_HEADERS(dlfcn.h)
940 AC_SEARCH_LIBS(shl_load, dld,
941 [
942 AC_DEFINE(HAVE_SHL_LOAD, 1, [Define if the shl_load function is available.])
943 SUFFIX=".sl"
944 MOD_TARGET=hpux_shared
945 SEDOBJ="s/\.o/.sl/g"
946 ],
947 dnl !shl_load:
948 [
949 dnl standard dlopen
950 AC_SEARCH_LIBS(dlopen, [dl c_r],
951 [
952 AC_DEFINE(HAVE_DLOPEN, 1, [Define if the dlopen function is available.])
953 SUFFIX=".so"
954 MOD_TARGET=shared_modules
955 SEDOBJ="s/\.o/.so/g"
956 if test "$AppleGCC" = yes; then
957 AC_CHECK_HEADERS([mach-o/dyld.h])
958 fi
959 AC_CHECK_FUNC(dlsym, ,
960 [
961 AC_MSG_WARN([dlsym is not available, shared modules disabled])
962 shared_modules=no
963 ])
964 AC_CHECK_FUNCS(dlfunc)
965 ],
966 [
967 shared_modules=no
968 ])
969 ])
970 fi
971
972 AC_DEFINE_UNQUOTED(SHARED_SUFFIX, "$SUFFIX", [Suffix for shared libraries on this platform.])
973
974 dnl Third stage - wrangling the linker.
975 if test "$shared_modules" = yes; then
976 # The GNU linker requires the -export-dynamic option to make
977 # all symbols visible in the dynamic symbol table.
978 hold_ldflags=$LDFLAGS
979 AC_MSG_CHECKING(for the ld -export-dynamic flag)
980 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic -Werror"
981 AC_LINK_IFELSE(AC_LANG_PROGRAM([],[int i;]), found=yes, found=no)
982 LDFLAGS=$hold_ldflags
983
984 if expr "`uname -s`" : ^IRIX >/dev/null 2>&1; then
985 found="no, IRIX ld uses -B,dynamic"
986 LDFLAGS="${LDFLAGS} -Wl,-B,dynamic"
987 fi
988
989 if expr "`uname -s`" : ^AIX >/dev/null 2>&1; then
990 found="no, AIX ld uses -G -brtl"
991 LDFLAGS="${LDFLAGS} -Wl,-G,-brtl"
992 fi
993
994 AC_MSG_RESULT($found)
995
996 if test "$found" = yes; then
997 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
998 fi
999
1000 AC_MSG_CHECKING(for compiler option to produce PIC)
1001 dnl The order should be here to check for groups of compilers,
1002 dnl then for odd compilers, then if no PICFLAGS were set up,
1003 dnl check for GCC and set defaults, or else error. -jmallett
1004 if test "$SGS" = "yes"; then
1005 AC_MSG_RESULT([SVR4 SGS interfaces: -KPIC -DPIC -G])
1006 PICFLAGS="-KPIC -DPIC -G"
1007 fi
1008
1009 if test "$AppleGCC" = "yes"; then
1010 AC_MSG_RESULT([Darwin Mach-O bundles: -fno-common -bundle -flat_namespace -undefined suppress])
1011 PICFLAGS="-fno-common -bundle -flat_namespace -undefined suppress"
1012 fi
1013 dnl Please note, that on HPUX two different stages of module compilation occurs, since
1014 dnl while compiling modules, the compiler does not allow you to give arguments
1015 dnl to the linker. (I did not design this)
1016 dnl So we need -c in the first stage of module compilation.
1017 dnl In the second stage, we link the modules via ld -b.
1018 dnl Additionally, HPUX does not like -export-dynamic, it likes -E instead.
1019 dnl -TimeMr14C
1020 if test "$HPUX" = "yes" -a "$CC" != gcc; then
1021 AC_MSG_RESULT(HP-UX cc: +z -r -q -n)
1022 PICFLAGS="+z -r -q -n -c"
1023 AC_MSG_CHECKING([if +ESfic is required on this platform])
1024
1025 if expr "`$CC +ESfic 2>&1`" : ".*neither supported.*" >/dev/null; then
1026 AC_MSG_RESULT(no)
1027 else
1028 AC_MSG_RESULT(yes)
1029 PICFLAGS="$PICFLAGS +ESfic"
1030 fi
1031
1032 LDFLAGS="${LDFLAGS} -Wl,-E"
1033 fi
1034 if test "$Tru" = yes -a "$CC" != gcc; then
1035 AC_MSG_RESULT([Tru64: -shared -expect_unresolved '*'])
1036 PICFLAGS="-shared -expect_unresolved '*' "
1037 LDFLAGS="-call_shared"
1038 fi
1039 if test -z "$PICFLAGS"; then
1040 if test "$ac_cv_c_compiler_gnu" = "yes"; then
1041 AC_MSG_RESULT(gcc: -fPIC -DPIC -shared)
1042 PICFLAGS="-fPIC -DPIC -shared"
1043 else
1044 AC_MSG_RESULT(no)
1045 shared_modules=no
1046 fi
1047 fi
1048 fi
1049
1050 # rpath, for finding libratbox.so at run time
1051 hold_ldflags=$LDFLAGS
1052 AC_MSG_CHECKING(for the ld -rpath flag)
1053 LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
1054 AC_LINK_IFELSE(AC_LANG_PROGRAM([],[int i;]), found=yes, found=no)
1055 LDFLAGS=$hold_ldflags
1056 AC_MSG_RESULT($found)
1057 if test "$found" = yes; then
1058 LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
1059 fi
1060
1061 # This must be down here, or it will mess up checks like the ones
1062 # for -Wl,-export-dynamic
1063 # -- jilles
1064 CWARNS=""
1065 AC_ARG_ENABLE(warnings,
1066 AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]),
1067 [
1068 IRC_CFLAGS="$IRC_CFLAGS -O0"
1069 CFLAGS="$IRC_CFLAGS"
1070
1071 CHARYBDIS_C_GCC_TRY_FLAGS([-Wall], charybdis_cv_c_gcc_w_all)
1072 CHARYBDIS_C_GCC_TRY_FLAGS([-Wpointer-arith], charybdis_cv_c_gcc_w_pointer_arith)
1073 CHARYBDIS_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], charybdis_cv_c_gcc_w_implicit)
1074 CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-align], charybdis_cv_c_gcc_w_cast_align)
1075 CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-qual], charybdis_cv_c_gcc_w_cast_qual)
1076 CHARYBDIS_C_GCC_TRY_FLAGS([-Wwrite-strings], charybdis_cv_c_gcc_w_write_strings)
1077 CHARYBDIS_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], charybdis_cv_c_gcc_w_error_implicit_function_declaration)
1078 CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], charybdis_cv_c_gcc_prototypes)
1079 CHARYBDIS_C_GCC_TRY_FLAGS([-Wparenthesis], charybdis_cv_c_gcc_parenthesis)
1080 CHARYBDIS_C_GCC_TRY_FLAGS([-W -Wno-unused], charybdis_cv_c_gcc_w)
1081 CHARYBDIS_C_GCC_TRY_FLAGS([-Wextra], charybdis_cv_c_gcc_w_extra)
1082 CHARYBDIS_C_GCC_TRY_FLAGS([-Wshadow], charybdis_cv_c_gcc_w_shadow)
1083 CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_noreturn)
1084 CHARYBDIS_C_GCC_TRY_FLAGS([-Wundef], charybdis_cv_c_gcc_w_undef)
1085 CHARYBDIS_C_GCC_TRY_FLAGS([-Wpacked], charybdis_cv_c_gcc_w_packed)
1086 CHARYBDIS_C_GCC_TRY_FLAGS([-Wnested-externs], charybdis_cv_c_gcc_w_nested_externs)
1087 CHARYBDIS_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], charybdis_cv_c_gcc_w_unused)
1088 CHARYBDIS_C_GCC_TRY_FLAGS([-Wredundant-decls], charybdis_cv_c_gcc_w_redundant_decls)
1089 CHARYBDIS_C_GCC_TRY_FLAGS([-Wfloat-equal], charybdis_cv_c_gcc_w_float_equal)
1090 CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format)
1091
1092 IRC_CFLAGS="$CFLAGS"
1093 ],[])
1094
1095 if test "$shared_modules" = no; then
1096 DYNLINK_C=""
1097 MOD_TARGET="libmodules.a"
1098 MODULES_LIBS="../modules/libmodules.a"
1099 SEDOBJ=""
1100 AC_DEFINE(STATIC_MODULES, 1, [Define to 1 if dynamic modules can't be used.])
1101 AC_MSG_WARN([shared module support has been disabled!])
1102 fi
1103
1104 dnl Stage 5 - underscores in front of symbol names.
1105 if test "$shared_modules" = yes; then
1106
1107 AC_CHECK_FUNC(nlist,,
1108 AC_CHECK_LIB(dl, nlist, nlist_lib="-ldl",
1109 AC_CHECK_LIB(elf, nlist, nlist_lib="-lelf",)
1110 )
1111 )
1112
1113 dnl We need to find out whether underscores are appended to symbol
1114 dnl names in executable files. First, though, we need to see
1115 dnl where nlist.h is hiding.
1116 AC_CHECK_HEADER(libelf/nlist.h, [ nlist_h="libelf/nlist.h" ], )
1117 AC_CHECK_HEADER(elf/nlist.h, [ nlist_h="elf/nlist.h" ], )
1118 AC_CHECK_HEADER(nlist.h, [ nlist_h="nlist.h" ], )
1119 if test x"$nlist_h" = "x"; then
1120 AC_DEFINE_UNQUOTED(SYMBOL_PREFIX, "", [String containing extra underscores prepended to symbols loaded from modules.])
1121 else
1122 AC_MSG_CHECKING(for extra underscores prepended to symbol names)
1123 AC_CACHE_VAL(symbol_underscores,
1124 [
1125 cat << EOF > conftest.c
1126 #include <$nlist_h>
1127 #include <stdio.h>
1128 #include <stdlib.h>
1129 void _modinit(void);
1130 int main(int argc, char *argv[[]]) {
1131 int i;
1132 struct nlist nl[[5]];
1133
1134 /* fill the names in this way, so it'll work almost everywhere */
1135 nl[[0]].n_name = "_modinit";
1136 nl[[1]].n_name = "__modinit";
1137 nl[[2]].n_name = "___modinit";
1138 nl[[3]].n_name = "____modinit";
1139 nl[[0]].n_value = nl[[1]].n_value = nl[[2]].n_value = nl[[3]].n_value = nl[[4]].n_name = NULL;
1140
1141 if(argc < 2 || (nlist(argv[[1]], nl)) == -1) exit(-1);
1142 for(i = 0; i < 4; i++) {
1143 if(nl[[i]].n_value != NULL)
1144 {
1145 int j;
1146 for(j = 0; j < i; j++)
1147 printf("_");
1148 exit(i);
1149 }
1150 }
1151 exit(-1);
1152 }
1153 void _modinit(void) { return; }
1154 EOF
1155 $CC $CPPFLAGS $IRC_CFLAGS -o conftest conftest.c $nlist_lib >/dev/null 2>&1
1156 symbol_underscores=`./conftest conftest`
1157 AC_MSG_RESULT($symbol_underscores)
1158 $RM -f conftest conftest.c
1159 ])
1160 AC_DEFINE_UNQUOTED(SYMBOL_PREFIX, "${symbol_underscores}", [String containing extra underscores prepended to symbols loaded from modules.])
1161 fi
1162 fi
1163
1164 IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
1165
1166 AC_SUBST(MODULES_LIBS)
1167 AC_SUBST(MOD_TARGET)
1168
1169 AC_SUBST(SSL_SRCS_ENABLE)
1170 AC_SUBST(SSL_INCLUDES)
1171 AC_SUBST(SSL_LIBS)
1172
1173 AC_SUBST(LDFLAGS)
1174 AC_SUBST(PICFLAGS)
1175 AC_SUBST(IRC_CFLAGS)
1176 AC_SUBST(SEDOBJ)
1177
1178
1179 if test "$prefix" = "NONE"; then
1180 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.])
1181
1182 else
1183
1184 dnl Don't get bitten by Cygwin's stupidity if the user specified
1185 dnl a custom prefix with a trailing slash
1186
1187 prefix=`echo $prefix | sed 's/\/$//'`
1188 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.])
1189
1190 fi
1191
1192 AC_CONFIG_FILES( \
1193 Makefile \
1194 bandb/Makefile \
1195 ssld/Makefile \
1196 extensions/Makefile \
1197 src/Makefile \
1198 modules/Makefile \
1199 tools/Makefile \
1200 doc/Makefile \
1201 help/Makefile \
1202 )
1203
1204 AC_OUTPUT
1205
1206 if test "$cf_openssl_version_ok" = yes; then
1207 openssl="yes"
1208 else
1209 openssl="no"
1210 fi
1211
1212 if test "$shared_modules" = yes; then
1213 modules=shared
1214 else
1215 modules=static
1216 fi
1217
1218 echo "
1219 Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
1220 Install directory : $prefix
1221
1222 Ziplinks : $zlib
1223 OpenSSL : $openssl
1224 Socket Engine : $SELECT_TYPE
1225 Small network : $small_net
1226 Block allocator : $balloc
1227
1228 Nickname length : $NICKLEN
1229 Topic length : $TOPICLEN
1230
1231 Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
1232 "