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