~ubuntu-branches/ubuntu/trusty/charybdis/trusty-proposed

« back to all changes in this revision

Viewing changes to configure.ac

  • Committer: Package Import Robot
  • Author(s): Antoine Beaupré
  • Date: 2011-11-10 23:07:37 UTC
  • Revision ID: package-import@ubuntu.com-20111110230737-kqo6qsglp5oh02hr
Tags: upstream-3.3.0
Import upstream version 3.3.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
if test ! -z "$SELECT_TYPE_EXPLICIT"; then
 
659
        SELECT_TYPE="$SELECT_TYPE_EXPLICIT";
 
660
        echo "Forcing $SELECT_TYPE to be enabled"
 
661
else
 
662
 
 
663
if test ! "x$use_ports" = "xno"; then
 
664
        AC_CHECK_FUNCS(port_getn, [haveports=yes], [haveports=no])
 
665
        if test "x$haveports" = "xyes" ; then
 
666
                SELECT_TYPE="ports"
 
667
        fi
 
668
fi
 
669
 
 
670
if test ! "x$use_select" = "xno"; then
 
671
        AC_CHECK_FUNCS(select, [haveselect=yes], [haveselect=no])
 
672
        if test "x$haveselect" = "xyes" ; then
 
673
                SELECT_TYPE="select"
 
674
        fi
 
675
fi
 
676
 
 
677
if test ! "x$use_poll" = "xno"; then
 
678
        AC_CHECK_FUNCS(poll, [havepoll=yes], [havepoll=no])
 
679
        if test "x$havepoll" = "xyes" ; then
 
680
                SELECT_TYPE="poll"
 
681
        fi
 
682
fi
 
683
 
 
684
if test ! "x$use_kqueue" = "xno"; then
 
685
        AC_CHECK_FUNCS(kevent, [havekqueue=yes], [havekqueue=no])
 
686
        if test "x$havekqueue" = "xyes" ; then
 
687
                SELECT_TYPE="kqueue"
 
688
        fi
 
689
fi
 
690
 
 
691
if test ! "x$use_epoll" = "xno"; then
 
692
        AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], [haveepoll=no])
 
693
        if test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
 
694
                if test "x$haveepoll" = "xyes" ; then
 
695
                        AC_MSG_CHECKING(for epoll support in kernel)
 
696
                        AC_TRY_RUN(
 
697
#include <stdint.h>
 
698
#include <sys/param.h>
 
699
#include <sys/types.h>
 
700
#include <sys/epoll.h>
 
701
#include <sys/syscall.h>
 
702
#include <unistd.h>     
 
703
 
 
704
int
 
705
main(int argc, char **argv)
 
706
{
 
707
        int epfd;
 
708
 
 
709
        epfd = epoll_create(256);
 
710
        return (epfd == -1 ? 1 : 0);
 
711
}, [AC_MSG_RESULT(yes)
 
712
            AC_DEFINE(HAVE_EPOLL, 1,
 
713
                [Define if your system supports the epoll system calls])
 
714
            SELECT_TYPE="epoll"], 
 
715
            AC_MSG_RESULT(no), AC_MSG_RESULT(no))
 
716
                fi
 
717
        fi
 
718
 
 
719
haveepollsyscall=no
 
720
 
 
721
if test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
 
722
        if test "x$haveepoll" = "xno" ; then
 
723
                AC_MSG_CHECKING(for epoll system call)
 
724
                AC_TRY_RUN(
 
725
#include <stdint.h>
 
726
#include <sys/param.h>
 
727
#include <sys/types.h>
 
728
#include <sys/epoll.h>
 
729
#include <sys/syscall.h>
 
730
#include <unistd.h>     
 
731
 
 
732
int
 
733
epoll_create(int size)
 
734
{
 
735
        return (syscall(__NR_epoll_create, size));
 
736
}
 
737
 
 
738
int
 
739
main(int argc, char **argv)
 
740
{
 
741
        int epfd;
 
742
 
 
743
        epfd = epoll_create(256);
 
744
        exit (epfd == -1 ? 1 : 0);
 
745
}, [AC_MSG_RESULT(yes)
 
746
    AC_DEFINE(HAVE_EPOLL, 1,
 
747
        [Define if your system supports the epoll system calls])
 
748
    SELECT_TYPE="epoll"], 
 
749
    AC_MSG_RESULT(no), AC_MSG_RESULT(no))
 
750
        fi
 
751
fi
 
752
 
 
753
fi
 
754
 
 
755
fi
 
756
 
 
757
if test -z "$SELECT_TYPE"; then
 
758
        AC_MSG_ERROR([Unable to find a usable IO interface],)
 
759
fi
 
760
 
 
761
echo "Using $SELECT_TYPE for select loop."
 
762
 
 
763
AC_DEFINE_UNQUOTED(SELECT_TYPE, "$SELECT_TYPE", [This is the type of IO loop we are using])
 
764
AC_SUBST(SELECT_TYPE)
 
765
 
 
766
 
 
767
dnl Debug-related options
 
768
dnl =====================
 
769
 
 
770
AC_ARG_ENABLE(assert,
 
771
AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]),
 
772
[assert=$enableval], [assert=no])
 
773
 
 
774
if test "$assert" = no; then
 
775
        AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
 
776
elif test "$assert" = soft; then
 
777
        AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.])
 
778
        AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
 
779
elif test "$assert" = yes; then
 
780
        assert = "hard";
 
781
fi
 
782
 
 
783
AC_MSG_CHECKING(if you want IO Debugging hooks)
 
784
AC_ARG_ENABLE(iodebug,
 
785
AC_HELP_STRING([--enable-iodebug],[Enable IO Debugging hooks]),
 
786
[iodebug=$enableval], [iodebug=no])
 
787
 
 
788
if test "$iodebug" = yes; then
 
789
        AC_DEFINE(USE_IODEBUG_HOOKS, 1, [Define this to enable IO Debug hooks.])
 
790
        AC_MSG_RESULT(yes)
 
791
else
 
792
        AC_MSG_RESULT(no)
 
793
fi
 
794
 
 
795
 
 
796
AC_MSG_CHECKING(if you want to do a profile build)
 
797
AC_ARG_ENABLE(profile,
 
798
AC_HELP_STRING([--enable-profile],[Enable profiling]),
 
799
[profile=$enableval], [profile=no])
 
800
 
 
801
if test "$profile" = yes; then
 
802
        if test "$ac_cv_c_compiler_gnu" = yes; then
 
803
                IRC_CFLAGS="$IRC_CFLAGS -pg"
 
804
                AC_MSG_RESULT([yes, adding -pg])
 
805
                AC_DEFINE(CHARYBDIS_PROFILE, 1, [Define this if you are profiling.])
 
806
        else
 
807
                AC_MSG_RESULT([no, profile builds only work with gcc])
 
808
        fi
 
809
else
 
810
        AC_MSG_RESULT(no)
 
811
fi
 
812
 
 
813
AC_ARG_ENABLE(balloc,
 
814
AC_HELP_STRING([--disable-balloc],[Disable the block allocator.]),
 
815
[balloc=$enableval], [balloc=yes])
 
816
 
 
817
if test "$balloc" = no; then
 
818
        AC_DEFINE([NOBALLOC], 1, [Define to 1 if you wish to disable the block allocator.])
 
819
fi
 
820
 
 
821
AC_ARG_ENABLE(small-net,
 
822
AC_HELP_STRING([--enable-small-net],[Enable small network support.]),
 
823
[small_net=$enableval], [small_net=no])
 
824
 
 
825
if test "$small_net" = yes; then
 
826
dnl     AC_DEFINE([HASHSIZE], 4096, [Max number of buckets in hash tables.])
 
827
        AC_DEFINE([NICKNAMEHISTORYLENGTH], 1500, [Size of the WHOWAS array.])
 
828
        AC_DEFINE([CHANNEL_HEAP_SIZE], 256, [Size of the channel heap.])
 
829
        AC_DEFINE([BAN_HEAP_SIZE], 128, [Size of the ban heap.])
 
830
        AC_DEFINE([CLIENT_HEAP_SIZE], 256, [Size of the client heap.])
 
831
        AC_DEFINE([LCLIENT_HEAP_SIZE], 128, [Size of the local client heap.])
 
832
        AC_DEFINE([PCLIENT_HEAP_SIZE], 32, [Size of the pre-client heap.])
 
833
        AC_DEFINE([USER_HEAP_SIZE], 128, [Size of the user heap.])
 
834
        AC_DEFINE([DNODE_HEAP_SIZE], 256, [Size of the dlink_node heap.])
 
835
        AC_DEFINE([TOPIC_HEAP_SIZE], 256, [Size of the topic heap.])
 
836
        AC_DEFINE([LINEBUF_HEAP_SIZE], 128, [Size of the linebuf heap.])
 
837
        AC_DEFINE([MEMBER_HEAP_SIZE], 256, [Sizeof member heap.])
 
838
        AC_DEFINE([ND_HEAP_SIZE], 128, [Size of the nick delay heap.])
 
839
        AC_DEFINE([CONFITEM_HEAP_SIZE], 128, [Size of the confitem heap.])
 
840
        AC_DEFINE([MONITOR_HEAP_SIZE], 128, [Size of the monitor heap.])
 
841
        AC_DEFINE([FD_HEAP_SIZE], 128, [Size of fd heap.])
 
842
        AC_DEFINE([AWAY_HEAP_SIZE], 128, [Size of away heap.])
 
843
else
 
844
dnl These settings are for a large network like efnet..they will use lots of memory
 
845
dnl so enable small net unless you really need this much support
 
846
        AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
 
847
        AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
 
848
        AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
 
849
        AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
 
850
        AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
 
851
        AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
 
852
        AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
 
853
        AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
 
854
        AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
 
855
        AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
 
856
        AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
 
857
        AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
 
858
        AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
 
859
        AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
 
860
        AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
 
861
        AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
 
862
fi
 
863
 
 
864
AC_ARG_WITH(nicklen,
 
865
AC_HELP_STRING([--with-nicklen=LENGTH],[Set the nick length to LENGTH (default 15, max 50)]),
 
866
[
 
867
  if ! expr "$withval" + 0 >/dev/null 2>&1; then 
 
868
        AC_ERROR([NICKLEN must be a numeric value])
 
869
  fi 
 
870
  if test $withval -ge 50; then
 
871
        NICKLEN=50
 
872
        AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
 
873
  else
 
874
        NICKLEN="$withval"
 
875
  fi
 
876
], [NICKLEN=15])
 
877
 
 
878
AC_ARG_WITH(topiclen,           
 
879
AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
 
880
[
 
881
 if test $withval -ge 390; then
 
882
        TOPICLEN=390
 
883
        AC_MSG_WARN([TOPICLEN has a hard limit of 390. Setting TOPICLEN=390])
 
884
 else
 
885
        TOPICLEN=$withval
 
886
 fi
 
887
], [TOPICLEN=390])
 
888
 
 
889
AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
 
890
AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
 
891
 
 
892
shared_modules="yes"
 
893
dnl Some first-stage sanity checks.
 
894
if test "$shared_modules" = yes; then
 
895
        dnl TenDRA's cc is called tcc too.
 
896
        if test "$CC" = tcc -a "$TenDRA" = "no"; then
 
897
                AC_MSG_WARN([disabling shared modules: Tiny C Compiler can't create PIC])
 
898
                shared_modules="no"
 
899
        fi
 
900
fi
 
901
 
 
902
dnl Second stage: check for functions and headers.
 
903
if test "$shared_modules" = yes; then
 
904
        DYNLINK_C=dynlink.c
 
905
        AC_CHECK_HEADERS(dlfcn.h)
 
906
        AC_SEARCH_LIBS(shl_load, dld, 
 
907
        [
 
908
          AC_DEFINE(HAVE_SHL_LOAD, 1, [Define if the shl_load function is available.])
 
909
          SUFFIX=".sl"
 
910
          MOD_TARGET=hpux_shared
 
911
          SEDOBJ="s/\.o/.sl/g"  
 
912
        ],
 
913
        dnl !shl_load:
 
914
        [
 
915
          dnl standard dlopen
 
916
          AC_SEARCH_LIBS(dlopen, [dl c_r],
 
917
          [
 
918
            AC_DEFINE(HAVE_DLOPEN, 1, [Define if the dlopen function is available.])
 
919
            SUFFIX=".so"
 
920
            MOD_TARGET=shared_modules
 
921
            SEDOBJ="s/\.o/.so/g"
 
922
            if test "$AppleGCC" = yes; then
 
923
              AC_CHECK_HEADERS([mach-o/dyld.h])
 
924
            fi
 
925
            AC_CHECK_FUNC(dlsym, ,
 
926
            [
 
927
              AC_MSG_WARN([dlsym is not available, shared modules disabled])
 
928
              shared_modules=no
 
929
            ])
 
930
            AC_CHECK_FUNCS(dlfunc)
 
931
          ],
 
932
          [
 
933
            shared_modules=no
 
934
          ])
 
935
        ])
 
936
fi
 
937
 
 
938
AC_DEFINE_UNQUOTED(SHARED_SUFFIX, "$SUFFIX", [Suffix for shared libraries on this platform.])
 
939
 
 
940
dnl Third stage - wrangling the linker.
 
941
if test "$shared_modules" = yes; then
 
942
        # The GNU linker requires the -export-dynamic option to make
 
943
        # all symbols visible in the dynamic symbol table.
 
944
        hold_ldflags=$LDFLAGS
 
945
        AC_MSG_CHECKING(for the ld -export-dynamic flag)
 
946
        LDFLAGS="${LDFLAGS} -Wl,-export-dynamic -Werror"
 
947
        AC_LINK_IFELSE(AC_LANG_PROGRAM([],[int i;]), found=yes, found=no)
 
948
        LDFLAGS=$hold_ldflags
 
949
 
 
950
        if expr "`uname -s`" : ^IRIX >/dev/null 2>&1; then
 
951
                found="no, IRIX ld uses -B,dynamic"
 
952
                LDFLAGS="${LDFLAGS} -Wl,-B,dynamic"
 
953
        fi
 
954
        
 
955
        if expr "`uname -s`" : ^AIX >/dev/null 2>&1; then
 
956
                found="no, AIX ld uses -G -brtl"
 
957
                LDFLAGS="${LDFLAGS} -Wl,-G,-brtl"
 
958
        fi
 
959
 
 
960
        AC_MSG_RESULT($found)
 
961
 
 
962
        if test "$found" = yes; then
 
963
                LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
 
964
        fi
 
965
 
 
966
        AC_MSG_CHECKING(for compiler option to produce PIC)
 
967
        dnl The order should be here to check for groups of compilers,
 
968
        dnl then for odd compilers, then if no PICFLAGS were set up,
 
969
        dnl check for GCC and set defaults, or else error. -jmallett
 
970
        if test "$SGS" = "yes"; then
 
971
                AC_MSG_RESULT([SVR4 SGS interfaces: -KPIC -DPIC -G])
 
972
                PICFLAGS="-KPIC -DPIC -G"
 
973
        fi
 
974
        
 
975
        if test "$AppleGCC" = "yes"; then
 
976
                AC_MSG_RESULT([Darwin Mach-O bundles: -fno-common -bundle -flat_namespace -undefined suppress])
 
977
                PICFLAGS="-fno-common -bundle -flat_namespace -undefined suppress"
 
978
        fi
 
979
        dnl Please note, that on HPUX two different stages of module compilation occurs, since
 
980
        dnl while compiling modules, the compiler does not allow you to give arguments
 
981
        dnl to the linker. (I did not design this) 
 
982
        dnl So we need -c in the first stage of module compilation.
 
983
        dnl In the second stage, we link the modules via ld -b.
 
984
        dnl Additionally, HPUX does not like -export-dynamic, it likes -E instead.
 
985
        dnl -TimeMr14C
 
986
        if test "$HPUX" = "yes" -a "$CC" != gcc; then
 
987
                AC_MSG_RESULT(HP-UX cc: +z -r -q -n)
 
988
                PICFLAGS="+z -r -q -n -c"
 
989
                AC_MSG_CHECKING([if +ESfic is required on this platform])
 
990
                
 
991
                if expr "`$CC +ESfic 2>&1`" : ".*neither supported.*" >/dev/null; then 
 
992
                        AC_MSG_RESULT(no)
 
993
                else
 
994
                        AC_MSG_RESULT(yes)
 
995
                        PICFLAGS="$PICFLAGS +ESfic"
 
996
                fi
 
997
 
 
998
                LDFLAGS="${LDFLAGS} -Wl,-E"
 
999
        fi
 
1000
        if test "$Tru" = yes -a "$CC" != gcc; then
 
1001
                AC_MSG_RESULT([Tru64: -shared -expect_unresolved '*'])
 
1002
                PICFLAGS="-shared -expect_unresolved '*' "
 
1003
                LDFLAGS="-call_shared"
 
1004
        fi
 
1005
        if test -z "$PICFLAGS"; then
 
1006
                if test "$ac_cv_c_compiler_gnu" = "yes"; then
 
1007
                        AC_MSG_RESULT(gcc: -fPIC -DPIC -shared)
 
1008
                        PICFLAGS="-fPIC -DPIC -shared"
 
1009
                else
 
1010
                        AC_MSG_RESULT(no)
 
1011
                        shared_modules=no
 
1012
                fi
 
1013
        fi
 
1014
fi
 
1015
 
 
1016
# rpath, for finding libratbox.so at run time
 
1017
hold_ldflags=$LDFLAGS
 
1018
AC_MSG_CHECKING(for the ld -rpath flag)
 
1019
LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
 
1020
AC_LINK_IFELSE(AC_LANG_PROGRAM([],[int i;]), found=yes, found=no)
 
1021
LDFLAGS=$hold_ldflags
 
1022
AC_MSG_RESULT($found)
 
1023
if test "$found" = yes; then
 
1024
        LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
 
1025
fi
 
1026
 
 
1027
# This must be down here, or it will mess up checks like the ones
 
1028
# for -Wl,-export-dynamic
 
1029
# -- jilles
 
1030
CWARNS=""
 
1031
AC_ARG_ENABLE(warnings,
 
1032
AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]),
 
1033
[
 
1034
IRC_CFLAGS="$IRC_CFLAGS -O0"
 
1035
CFLAGS="$IRC_CFLAGS"
 
1036
 
 
1037
CHARYBDIS_C_GCC_TRY_FLAGS([-Wall], charybdis_cv_c_gcc_w_all)
 
1038
CHARYBDIS_C_GCC_TRY_FLAGS([-Wpointer-arith], charybdis_cv_c_gcc_w_pointer_arith)
 
1039
CHARYBDIS_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], charybdis_cv_c_gcc_w_implicit)
 
1040
CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-align], charybdis_cv_c_gcc_w_cast_align)
 
1041
CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-qual], charybdis_cv_c_gcc_w_cast_qual)
 
1042
CHARYBDIS_C_GCC_TRY_FLAGS([-Wwrite-strings], charybdis_cv_c_gcc_w_write_strings)
 
1043
CHARYBDIS_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], charybdis_cv_c_gcc_w_error_implicit_function_declaration)
 
1044
CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], charybdis_cv_c_gcc_prototypes)
 
1045
CHARYBDIS_C_GCC_TRY_FLAGS([-Wparenthesis], charybdis_cv_c_gcc_parenthesis)
 
1046
CHARYBDIS_C_GCC_TRY_FLAGS([-W -Wno-unused], charybdis_cv_c_gcc_w)
 
1047
CHARYBDIS_C_GCC_TRY_FLAGS([-Wextra], charybdis_cv_c_gcc_w_extra)
 
1048
CHARYBDIS_C_GCC_TRY_FLAGS([-Wshadow], charybdis_cv_c_gcc_w_shadow)
 
1049
CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_noreturn)
 
1050
CHARYBDIS_C_GCC_TRY_FLAGS([-Wundef], charybdis_cv_c_gcc_w_undef)
 
1051
CHARYBDIS_C_GCC_TRY_FLAGS([-Wpacked], charybdis_cv_c_gcc_w_packed)
 
1052
CHARYBDIS_C_GCC_TRY_FLAGS([-Wnested-externs], charybdis_cv_c_gcc_w_nested_externs)
 
1053
CHARYBDIS_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], charybdis_cv_c_gcc_w_unused)
 
1054
CHARYBDIS_C_GCC_TRY_FLAGS([-Wredundant-decls], charybdis_cv_c_gcc_w_redundant_decls)
 
1055
CHARYBDIS_C_GCC_TRY_FLAGS([-Wfloat-equal], charybdis_cv_c_gcc_w_float_equal)
 
1056
CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format)
 
1057
 
 
1058
IRC_CFLAGS="$CFLAGS"
 
1059
],[])
 
1060
 
 
1061
if test "$shared_modules" = no; then
 
1062
        DYNLINK_C=""
 
1063
        MOD_TARGET="libmodules.a"
 
1064
        MODULES_LIBS="../modules/libmodules.a"
 
1065
        SEDOBJ=""
 
1066
        AC_DEFINE(STATIC_MODULES, 1, [Define to 1 if dynamic modules can't be used.])
 
1067
        AC_MSG_WARN([shared module support has been disabled!])
 
1068
fi
 
1069
 
 
1070
dnl Stage 5 - underscores in front of symbol names.
 
1071
if test "$shared_modules" = yes; then
 
1072
 
 
1073
        AC_CHECK_FUNC(nlist,,
 
1074
                AC_CHECK_LIB(dl, nlist, nlist_lib="-ldl",
 
1075
                        AC_CHECK_LIB(elf, nlist, nlist_lib="-lelf",)
 
1076
                )
 
1077
        )
 
1078
 
 
1079
        dnl We need to find out whether underscores are appended to symbol
 
1080
        dnl names in executable files.  First, though, we need to see
 
1081
        dnl where nlist.h is hiding.
 
1082
        AC_CHECK_HEADER(libelf/nlist.h, [ nlist_h="libelf/nlist.h" ], )
 
1083
        AC_CHECK_HEADER(elf/nlist.h, [ nlist_h="elf/nlist.h" ], )
 
1084
        AC_CHECK_HEADER(nlist.h, [ nlist_h="nlist.h" ], )
 
1085
        if test x"$nlist_h" = "x"; then
 
1086
                AC_DEFINE_UNQUOTED(SYMBOL_PREFIX, "", [String containing extra underscores prepended to symbols loaded from modules.])
 
1087
        else
 
1088
                AC_MSG_CHECKING(for extra underscores prepended to symbol names)
 
1089
                AC_CACHE_VAL(symbol_underscores,
 
1090
                [
 
1091
cat << EOF > conftest.c
 
1092
#include <$nlist_h>
 
1093
#include <stdio.h>
 
1094
#include <stdlib.h>
 
1095
void _modinit(void);
 
1096
int main(int argc, char *argv[[]]) {
 
1097
        int i;
 
1098
        struct nlist nl[[5]];
 
1099
 
 
1100
        /* fill the names in this way, so it'll work almost everywhere */
 
1101
        nl[[0]].n_name = "_modinit";
 
1102
        nl[[1]].n_name = "__modinit";
 
1103
        nl[[2]].n_name = "___modinit";
 
1104
        nl[[3]].n_name = "____modinit";
 
1105
        nl[[0]].n_value = nl[[1]].n_value = nl[[2]].n_value = nl[[3]].n_value = nl[[4]].n_name = NULL;
 
1106
 
 
1107
        if(argc < 2 || (nlist(argv[[1]], nl)) == -1) exit(-1);
 
1108
        for(i = 0; i < 4; i++) {
 
1109
                if(nl[[i]].n_value != NULL)
 
1110
                {
 
1111
                        int j;
 
1112
                        for(j = 0; j < i; j++)
 
1113
                                printf("_");
 
1114
                        exit(i);
 
1115
                }
 
1116
        }
 
1117
        exit(-1);
 
1118
}
 
1119
void _modinit(void) { return; }
 
1120
EOF
 
1121
                $CC $CPPFLAGS $IRC_CFLAGS -o conftest conftest.c $nlist_lib >/dev/null 2>&1
 
1122
                symbol_underscores=`./conftest conftest`
 
1123
                AC_MSG_RESULT($symbol_underscores)
 
1124
                $RM -f conftest conftest.c
 
1125
                ])
 
1126
                AC_DEFINE_UNQUOTED(SYMBOL_PREFIX, "${symbol_underscores}", [String containing extra underscores prepended to symbols loaded from modules.])
 
1127
        fi
 
1128
fi
 
1129
 
 
1130
IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
 
1131
 
 
1132
AC_SUBST(MODULES_LIBS)
 
1133
AC_SUBST(MOD_TARGET)
 
1134
 
 
1135
AC_SUBST(SSL_SRCS_ENABLE)
 
1136
AC_SUBST(SSL_INCLUDES)
 
1137
AC_SUBST(SSL_LIBS)
 
1138
 
 
1139
AC_SUBST(LDFLAGS)
 
1140
AC_SUBST(PICFLAGS)
 
1141
AC_SUBST(IRC_CFLAGS)
 
1142
AC_SUBST(SEDOBJ)
 
1143
 
 
1144
 
 
1145
if test "$prefix" = "NONE"; then 
 
1146
        AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.])
 
1147
 
 
1148
else
 
1149
 
 
1150
dnl Don't get bitten by Cygwin's stupidity if the user specified
 
1151
dnl a custom prefix with a trailing slash
 
1152
 
 
1153
        prefix=`echo $prefix | sed 's/\/$//'`
 
1154
        AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.])
 
1155
        
 
1156
fi
 
1157
 
 
1158
AC_CONFIG_FILES(                        \
 
1159
        Makefile                        \
 
1160
        bandb/Makefile                  \
 
1161
        ssld/Makefile                   \
 
1162
        extensions/Makefile             \
 
1163
        src/Makefile                    \
 
1164
        modules/Makefile                \
 
1165
        tools/Makefile                  \
 
1166
        doc/Makefile                    \
 
1167
        help/Makefile                   \
 
1168
)
 
1169
 
 
1170
AC_OUTPUT
 
1171
 
 
1172
if test "$cf_openssl_version_ok" = yes; then
 
1173
        openssl="yes"
 
1174
else
 
1175
        openssl="no"
 
1176
fi
 
1177
 
 
1178
if test "$shared_modules" = yes; then
 
1179
        modules=shared
 
1180
else
 
1181
        modules=static
 
1182
fi
 
1183
 
 
1184
echo "
 
1185
Configuration:
 
1186
        Install directory  : $prefix
 
1187
 
 
1188
        Ziplinks           : $zlib
 
1189
        OpenSSL            : $openssl
 
1190
        Socket Engine      : $SELECT_TYPE
 
1191
        Small network      : $small_net
 
1192
        Block allocator    : $balloc
 
1193
 
 
1194
        Nickname length    : $NICKLEN
 
1195
        Topic length       : $TOPICLEN
 
1196
 
 
1197
Use (g)make to compile Charybdis, then (g)make install to install it.
 
1198
"