]> jfr.im git - solanum.git/blob - configure.ac
731bb8e4418ffaad10890621a6456446d4a6585a
[solanum.git] / configure.ac
1 dnl TODO: clean up all the OpenSSL and shared module checking stuff;
2 dnl the most major changes have already been made and it looks like
3 dnl said functions need to be just about as complex as they already are.
4
5 AC_PREREQ(2.60)
6
7 AC_INIT([charybdis], [3.6.0-dev])
8
9 AC_LANG(C)
10 AC_USE_SYSTEM_EXTENSIONS
11 AC_GNU_SOURCE
12
13 AC_PROG_CC_C99
14
15 if test x"$ac_cv_prog_cc_c99" = "xno"; then
16 AC_ERROR([charybdis requires a C99 capable compiler])
17 fi
18
19 AC_PREFIX_DEFAULT($HOME/ircd)
20 AC_CONFIG_MACRO_DIR([m4])
21 AC_CONFIG_HEADER(include/setup.h)
22 AC_CONFIG_SUBDIRS([libratbox])
23 AC_CONFIG_AUX_DIR([libltdl/config])
24
25 AM_INIT_AUTOMAKE([subdir-objects])
26 AM_SILENT_RULES([yes])
27 AM_PROG_AR
28
29 LT_INIT([dlopen disable-static])
30 LT_CONFIG_LTDL_DIR([libltdl])
31 LTDL_INIT
32
33 build_ltdl=$with_included_ltdl
34 AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"])
35
36 if test "$ac_cv_c_compiler_gnu" = yes; then
37 IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall"
38 fi
39
40 dnl If we support -g, use it!
41 if test "$ac_cv_prog_cc_g" = yes; then
42 IRC_CFLAGS="$IRC_CFLAGS -g"
43 fi
44
45 dnl check for /dev/null so we can use it to hold evil fd's
46 AC_MSG_CHECKING([for /dev/null])
47 if test -c /dev/null ; then
48 AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null])
49 AC_MSG_RESULT(yes)
50 else
51 AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null])
52 AC_MSG_RESULT(no - using devnull.log)
53 fi
54
55 dnl jdc -- If CFLAGS is defined, best use it everywhere...
56 dnl NOTE: jv says it must be added to the *END*, because things like
57 dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid.
58 if test ! -z "$CFLAGS"; then
59 IRC_CFLAGS="$IRC_CFLAGS $CFLAGS"
60 fi
61
62 AC_ISC_POSIX
63 AC_C_INLINE
64 AC_PROG_MAKE_SET
65 AC_PROG_INSTALL
66 AC_PATH_PROG(RM, rm)
67 AC_PATH_PROG(CP, cp)
68 AC_PATH_PROG(MV, mv)
69 AC_PATH_PROG(LN, ln)
70 AC_PATH_PROG(SED, sed)
71 AC_PATH_PROG(AR, ar)
72 AC_PATH_PROG(LD, ld)
73 AC_PATH_PROG(RANLIB, ranlib)
74 AC_PATH_PROG(TOUCH, touch)
75
76 AC_PROG_YACC
77
78 dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found
79 if test "$YACC" = "yacc" -a -z "`which $YACC 2>/dev/null`"; then
80 AC_MSG_ERROR([could not locate a suitable parser generator; install bison, yacc, or byacc])
81 fi
82
83 AC_PROG_LEX
84
85 if test "$LEX" = ":"; then
86 AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.])
87 fi
88
89 AC_ARG_ENABLE([fhs-paths],
90 [AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])],
91 [],
92 [dnl detect if the user appears to want --enable-fhs-paths
93 AS_IF([test "$libexecdir" = '${exec_prefix}/libexec' && \
94 test "$localstatedir" = '${prefix}/var' && \
95 test "$libdir" = '${exec_prefix}/lib'],
96 [enable_fhs_paths=no],
97 [enable_fhs_paths=yes])
98 ])
99 dnl use directory structure of cached as default (hack)
100 AS_IF([test "x$enable_fhs_paths" = "xyes"],
101 [dnl Avoid name collisions.
102 pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}'
103 rundir=${rundir-'${prefix}/run'}
104 pkgrundir='${rundir}/${PACKAGE_TARNAME}'
105 pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}'],
106 [libexecdir='${bindir}'
107 pkglibexecdir='${libexecdir}'
108 rundir='${sysconfdir}'
109 pkgrundir='${rundir}'
110 localstatedir='${prefix}'
111 pkglocalstatedir='${sysconfdir}'])
112 pkglibdir='${libdir}/${PACKAGE_TARNAME}'
113 AC_SUBST([pkglibdir])
114 AC_SUBST([rundir])
115 AC_SUBST([pkgrundir])
116 AC_SUBST([pkglocalstatedir])
117 AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]])
118 AC_SUBST([pkglibexecdir])
119 AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
120
121 dnl Checks for header files.
122 AC_HEADER_STDC
123
124 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])
125
126 dnl Stuff that the memory manager (imalloc) depends on
127 dnl ==================================================
128
129 AC_C_CONST
130 if test "$ac_cv_header_machine_endian_h" = "no" ; then
131 AC_C_BIGENDIAN
132 fi
133 AC_TYPE_PID_T
134 AC_TYPE_SIZE_T
135 AC_CHECK_SIZEOF(short)
136 AC_CHECK_SIZEOF(int)
137 AC_CHECK_SIZEOF(long)
138 AC_CHECK_SIZEOF(long long)
139
140 dnl Networking Functions
141 dnl ====================
142
143 AC_SEARCH_LIBS(socket, socket, , [AC_MSG_ERROR([You have no socket()! Aborting.])])
144
145 dnl SunOS/Solaris required libnsl for inet_ntoa()
146 if test x"$SUN" = xyes; then
147 AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
148 fi
149
150 AC_CHECK_TYPE(socklen_t, ,
151 [AC_DEFINE([socklen_t], [unsigned int],
152 [If we don't have a real socklen_t, unsigned int is good enough.])],
153 [#include <sys/types.h>
154 #include <sys/socket.h>])
155
156 AC_ARG_ENABLE(ipv6,
157 AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
158
159 AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
160
161 CRYPT_LIB=$ac_cv_search_crypt
162
163 if test "$CRYPT_LIB" = "none required"; then
164 unset CRYPT_LIB
165 elif test "$CRYPT_LIB" = no; then
166 unset CRYPT_LIB
167 fi
168
169 AC_SUBST(CRYPT_LIB)
170
171 AC_C_BIGENDIAN
172
173 dnl Check for stdarg.h - if we can't find it, halt configure
174 AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])])
175 AC_CHECK_FUNCS([strlcat strlcpy])
176
177 AC_CHECK_TYPE([u_int32_t], [],
178 [
179 AC_CHECK_TYPE([uint32_t],
180 [
181 AC_DEFINE(u_int32_t, [uint32_t], [If system does not define u_int32_t, define a reasonable substitute.])
182 ],
183 [
184 AC_MSG_WARN([system has no u_int32_t or uint32_t, default to unsigned long int])
185 AC_DEFINE(u_int32_t, [unsigned long int], [If system does not define u_int32_t, define to unsigned long int here.])
186 ])
187 ])
188
189 AC_CHECK_TYPE([u_int16_t], [],
190 [
191 AC_CHECK_TYPE([uint16_t],
192 [
193 AC_DEFINE(u_int16_t, [uint16_t], [If system does not define u_int16_t, define a usable substitute])
194 ],
195 [
196 AC_MSG_WARN([system has no u_int16_t or uint16_t, default to unsigned short int])
197 AC_DEFINE(u_int16_t, [unsigned short int], [If system does not define u_int16_t, define a usable substitute.])
198 ])
199 ])
200
201 AC_CHECK_TYPE([in_port_t], [],
202 [AC_DEFINE(in_port_t, [u_int16_t], [If system does not define in_port_t, define it to what it should be.])],
203 [[#include <sys/types.h>
204 #include <netinet/in.h>]])
205
206 AC_CHECK_TYPE([sa_family_t], [],
207 [AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])],
208 [[#include <sys/types.h>
209 #include <sys/socket.h>]])
210
211 AC_CHECK_TYPES([uintptr_t])
212
213 dnl check for various functions...
214 AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
215
216 AC_FUNC_ALLOCA
217
218 dnl Specialized functions checks
219 dnl ============================
220
221 dnl check for nanosleep
222 AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
223 LIBS="${LIBS} -lrt",
224 [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
225 )])])
226 if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
227 then
228 AC_MSG_RESULT("nanosleep not found..using select for delay")
229 else
230 AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
231 fi
232
233 dnl OpenSSL support
234 AC_MSG_CHECKING(for OpenSSL)
235 AC_ARG_ENABLE(openssl,
236 [AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
237 AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
238 [cf_enable_openssl=$enableval],
239 [cf_enable_openssl="auto"])
240
241 if test "$cf_enable_openssl" != "no" ; then
242 cf_openssl_basedir=""
243 if test "$cf_enable_openssl" != "auto" &&
244 test "$cf_enable_openssl" != "yes" ; then
245 dnl Support for --enable-openssl=/some/place
246 cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`"
247 else
248 dnl Do the auto-probe here. Check some common directory paths.
249 for dirs in /usr/local/ssl /usr/pkg /usr/local \
250 /usr/local/openssl ; do
251 if test -f "${dirs}/include/openssl/opensslv.h" ; then
252 cf_openssl_basedir="${dirs}"
253 break
254 fi
255 done
256 unset dirs
257 fi
258 dnl Now check cf_openssl_found to see if we found anything.
259 if test ! -z "$cf_openssl_basedir"; then
260 if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
261 SSL_INCLUDES="-I${cf_openssl_basedir}/include"
262 SSL_LIBS="-L${cf_openssl_basedir}/lib"
263 else
264 dnl OpenSSL wasn't found in the directory specified. Naughty
265 dnl administrator...
266 cf_openssl_basedir=""
267 fi
268 else
269 dnl Check for stock FreeBSD 4.x and 5.x systems, since their files
270 dnl are in /usr/include and /usr/lib. In this case, we don't want to
271 dnl change INCLUDES or LIBS, but still want to enable OpenSSL.
272 dnl We can't do this check above, because some people want two versions
273 dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl)
274 dnl and they want /usr/local/ssl to have preference.
275 if test -f "/usr/include/openssl/opensslv.h" ; then
276 cf_openssl_basedir="/usr"
277 fi
278 fi
279
280 dnl If we have a basedir defined, then everything is okay. Otherwise,
281 dnl we have a problem.
282 if test ! -z "$cf_openssl_basedir"; then
283 AC_MSG_RESULT($cf_openssl_basedir)
284 cf_enable_openssl="yes"
285 else
286 AC_MSG_RESULT([not found. Specify a correct path?])
287 cf_enable_openssl="no"
288 fi
289 unset cf_openssl_basedir
290 else
291 dnl If --disable-openssl was specified
292 AC_MSG_RESULT(disabled)
293 fi
294
295 save_CPPFLAGS="$CPPFLAGS"
296 CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
297 save_LIBS="$LIBS"
298 LIBS="$LIBS $SSL_LIBS"
299 if test "$cf_enable_openssl" != no; then
300 dnl Check OpenSSL version (must be 0.9.6 or above!)
301 AC_MSG_CHECKING(for OpenSSL 0.9.6 or above)
302 AC_RUN_IFELSE(
303 [AC_LANG_PROGRAM(
304 [#include <openssl/opensslv.h>
305 #include <stdlib.h>],
306 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
307 exit(0); else exit(1);]])],
308 cf_openssl_version_ok=yes,
309 cf_openssl_version_ok=no,
310 cf_openssl_version_ok=no)
311
312 if test "$cf_openssl_version_ok" = yes; then
313 AC_MSG_RESULT(found)
314
315 dnl Work around pmake/gmake conditional incompatibilities
316 AC_SUBST(ENCSPEED, encspeed)
317
318 dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
319 CPPFLAGS="$CPPFLAGS $SSL_LIBS"
320 AC_CHECK_LIB(crypto, RSA_free)
321 SSL_LIBS="$SSL_LIBS -lcrypto"
322 SSL_SRCS_ENABLE='$(SSL_SRCS)'
323 else
324 AC_MSG_RESULT(no - OpenSSL support disabled)
325 fi
326 fi
327
328 CPPFLAGS="$save_CPPFLAGS"
329 LIBS="$save_LIBS"
330
331 dnl End OpenSSL detection
332
333
334 dnl Specialized functions and libraries
335 dnl ===================================
336
337 AC_ARG_WITH(zlib-path,
338 AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]),
339 [LIBS="$LIBS -L$withval"],)
340
341 AC_ARG_ENABLE(zlib,
342 AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
343 [zlib=$enableval],[zlib=yes])
344
345 if test "$zlib" = yes; then
346
347 AC_CHECK_HEADER(zlib.h, [
348 AC_CHECK_LIB(z, zlibVersion,
349 [
350 AC_SUBST(ZLIB_LD, -lz)
351 AC_DEFINE(HAVE_LIBZ, 1, [Define to 1 if zlib (-lz) is available.])
352 ], zlib=no)
353 ], zlib=no)
354
355 fi
356
357 dnl Check for shared sqlite
358 dnl ======================
359 AC_ARG_WITH(shared-sqlite,
360 AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]),
361 [shared_sqlite=$withval],[shared_sqlite=no])
362
363 if test "$shared_sqlite" = yes; then
364 PKG_CHECK_MODULES(SQLITE, [sqlite3],
365 [
366 shared_sqlite=yes
367 ], shared_sqlite=no)
368 fi
369
370 if test "$shared_sqlite" = no; then
371 SQLITE_OBJ='sqlite3.$(OBJEXT)'
372 fi
373
374 AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
375 AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
376 AC_SUBST(SQLITE_OBJ)
377
378 dnl **********************************************************************
379 dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
380 dnl **********************************************************************
381
382 AC_ARG_WITH([confdir],
383 [AC_HELP_STRING([--with-confdir=DIR],
384 [Directory to install config files [deprecated, use --sysconfdir instead].])],
385 [ sysconfdir=`echo $withval | sed 's/\/$//'` ],
386 [ confdir='${sysconfdir}' ])
387 AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.])
388
389 dnl **********************************************************************
390 dnl Check for --with-logdir
391 dnl **********************************************************************
392
393 AC_MSG_CHECKING([whether to modify logdir])
394 AC_ARG_WITH(logdir,
395 AC_HELP_STRING([--with-logdir=DIR],
396 [Directory where to write logfiles.]),
397 [ logdir=`echo $withval | sed 's/\/$//'`
398 AC_MSG_RESULT(yes)],
399 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
400 [logdir='${localstatedir}/log/${PACKAGE_TARNAME}'],
401 [logdir='${prefix}/logs'])
402 AC_MSG_RESULT(no)])
403 AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.])
404 AC_SUBST_DIR([logdir])
405
406 dnl **********************************************************************
407 dnl Check for --with-helpdir
408 dnl **********************************************************************
409
410 AC_MSG_CHECKING([whether to modify helpdir])
411 AC_ARG_WITH(helpdir,
412 AC_HELP_STRING([--with-helpdir=DIR],
413 [Directory to install help files.]),
414 [ helpdir=`echo $withval | sed 's/\/$//'`
415 AC_MSG_RESULT(yes) ],
416 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
417 [helpdir='${datadir}/${PACKAGE_TARNAME}/help'],
418 [helpdir='${prefix}/help'])
419 AC_MSG_RESULT(no) ])
420 AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.])
421 AC_SUBST_DIR([helpdir])
422
423 dnl **********************************************************************
424 dnl Check for --with-moduledir
425 dnl **********************************************************************
426
427 AC_MSG_CHECKING([whether to modify moduledir])
428 AC_ARG_WITH(moduledir,
429 [AC_HELP_STRING([--with-moduledir=DIR],
430 [Directory to install modules.])],
431 [ moduledir=`echo $withval | sed 's/\/$//'`
432 AC_MSG_RESULT(yes)],
433 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
434 [moduledir='${pkglibdir}/modules'],
435 [moduledir='${prefix}/modules'])
436 AC_MSG_RESULT(no)
437 ])
438 AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
439 AC_SUBST_DIR([moduledir])
440
441 dnl Check for --with-rundir
442
443 AC_MSG_CHECKING([whether or modify rundir])
444 AC_ARG_WITH([rundir],
445 [AC_HELP_STRING([--with-rundir=DIR],
446 [Directory in which to store pidfile.])],
447 [AC_MSG_RESULT([yes])
448 rundir=`echo $withval | sed 's/\/$//'`],
449 [AC_MSG_RESULT([no])
450 AS_IF([test "x$enable_fhs_paths" = "xyes"],
451 [rundir='${prefix}/run'],
452 [rundir='${sysconfdir}'])])
453 AC_SUBST([rundir])
454 AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.])
455
456 dnl Installed utility program prefixes (does not affect binaries
457 dnl installed into pkglibexecdir)
458 AC_MSG_CHECKING([for program prefix])
459 AC_ARG_WITH([program-prefix],
460 [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])],
461 [test "x$with_program_prefix" = "xno" && with_program_prefix=],
462 [with_program_prefix=])
463 AC_MSG_RESULT(["$with_program_prefix"])
464 PROGRAM_PREFIX="$with_program_prefix"
465 AC_SUBST([PROGRAM_PREFIX])
466 AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.])
467
468 dnl **********************************************************************
469 dnl Branding
470 dnl **********************************************************************
471
472 AC_MSG_CHECKING([whether custom branding is requested])
473 AC_ARG_WITH(custom-branding,
474 AC_HELP_STRING([--with-custom-branding=NAME],
475 [Custom branding name.]),
476 [BRANDING_NAME=$withval
477 AC_MSG_RESULT([yes])],
478 [BRANDING_NAME=$PACKAGE_NAME
479 AC_MSG_RESULT([no])]
480 )
481
482 AC_MSG_CHECKING([whether a custom version is requested])
483 AC_ARG_WITH(custom-version,
484 AC_HELP_STRING([--with-custom-version=NAME],
485 [Custom version branding.]),
486 [BRANDING_VERSION=$withval
487 AC_MSG_RESULT([yes])],
488 [BRANDING_VERSION=$PACKAGE_VERSION
489 AC_MSG_RESULT([no])]
490 )
491
492 AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
493 AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
494
495 if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
496 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
497 fi
498
499 dnl Debug-related options
500 dnl =====================
501
502 AC_ARG_ENABLE(assert,
503 AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]),
504 [assert=$enableval], [assert=no])
505
506 if test "$assert" = no; then
507 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
508 elif test "$assert" = soft; then
509 AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.])
510 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
511 elif test "$assert" = yes; then
512 assert = "hard";
513 fi
514
515 AC_MSG_CHECKING(if you want to do a profile build)
516 AC_ARG_ENABLE(profile,
517 AC_HELP_STRING([--enable-profile],[Enable profiling]),
518 [profile=$enableval], [profile=no])
519
520 if test "$profile" = yes; then
521 if test "$ac_cv_c_compiler_gnu" = yes; then
522 IRC_CFLAGS="$IRC_CFLAGS -pg"
523 AC_MSG_RESULT([yes, adding -pg])
524 AC_DEFINE(CHARYBDIS_PROFILE, 1, [Define this if you are profiling.])
525 else
526 AC_MSG_RESULT([no, profile builds only work with gcc])
527 fi
528 else
529 AC_MSG_RESULT(no)
530 fi
531
532 AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
533 AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
534 AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
535 AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
536 AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
537 AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
538 AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
539 AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
540 AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
541 AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
542 AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
543 AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
544 AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
545 AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
546 AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
547 AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
548
549 AC_ARG_WITH(nicklen,
550 AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
551 [
552 if ! expr "$withval" + 0 >/dev/null 2>&1; then
553 AC_ERROR([NICKLEN must be a numeric value])
554 fi
555 if test $withval -gt 50; then
556 NICKLEN=50
557 AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
558 elif test $withval -lt 9; then
559 NICKLEN=9
560 AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9])
561 else
562 NICKLEN="$withval"
563 fi
564 ], [NICKLEN=31])
565
566 AC_ARG_WITH(topiclen,
567 AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
568 [
569 if test $withval -gt 390; then
570 TOPICLEN=390
571 AC_MSG_WARN([TOPICLEN has a hard limit of 390. Setting TOPICLEN=390])
572 else
573 TOPICLEN=$withval
574 fi
575 ], [TOPICLEN=390])
576
577 AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
578 AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
579
580 # rpath, for finding libratbox.so at run time
581 hold_ldflags=$LDFLAGS
582 AC_MSG_CHECKING(for the ld -rpath flag)
583 LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
584 AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no)
585 LDFLAGS=$hold_ldflags
586 AC_MSG_RESULT($found)
587 if test "$found" = yes; then
588 LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
589 fi
590
591 # This must be down here, or it will mess up checks like the ones
592 # for -Wl,-export-dynamic
593 # -- jilles
594 CWARNS=""
595 AC_ARG_ENABLE(warnings,
596 AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]),
597 [
598 IRC_CFLAGS="$IRC_CFLAGS -O0"
599 CFLAGS="$IRC_CFLAGS"
600
601 CHARYBDIS_C_GCC_TRY_FLAGS([-Wall], charybdis_cv_c_gcc_w_all)
602 CHARYBDIS_C_GCC_TRY_FLAGS([-Wpointer-arith], charybdis_cv_c_gcc_w_pointer_arith)
603 CHARYBDIS_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], charybdis_cv_c_gcc_w_implicit)
604 CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-align], charybdis_cv_c_gcc_w_cast_align)
605 CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-qual], charybdis_cv_c_gcc_w_cast_qual)
606 CHARYBDIS_C_GCC_TRY_FLAGS([-Wwrite-strings], charybdis_cv_c_gcc_w_write_strings)
607 CHARYBDIS_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], charybdis_cv_c_gcc_w_error_implicit_function_declaration)
608 CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], charybdis_cv_c_gcc_prototypes)
609 CHARYBDIS_C_GCC_TRY_FLAGS([-Wparenthesis], charybdis_cv_c_gcc_parenthesis)
610 CHARYBDIS_C_GCC_TRY_FLAGS([-W -Wno-unused], charybdis_cv_c_gcc_w)
611 CHARYBDIS_C_GCC_TRY_FLAGS([-Wextra], charybdis_cv_c_gcc_w_extra)
612 CHARYBDIS_C_GCC_TRY_FLAGS([-Wshadow], charybdis_cv_c_gcc_w_shadow)
613 CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_noreturn)
614 CHARYBDIS_C_GCC_TRY_FLAGS([-Wundef], charybdis_cv_c_gcc_w_undef)
615 CHARYBDIS_C_GCC_TRY_FLAGS([-Wpacked], charybdis_cv_c_gcc_w_packed)
616 CHARYBDIS_C_GCC_TRY_FLAGS([-Wnested-externs], charybdis_cv_c_gcc_w_nested_externs)
617 CHARYBDIS_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], charybdis_cv_c_gcc_w_unused)
618 CHARYBDIS_C_GCC_TRY_FLAGS([-Wredundant-decls], charybdis_cv_c_gcc_w_redundant_decls)
619 CHARYBDIS_C_GCC_TRY_FLAGS([-Wfloat-equal], charybdis_cv_c_gcc_w_float_equal)
620 CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format)
621
622 IRC_CFLAGS="$CFLAGS"
623 ],[])
624
625 IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
626
627 AC_SUBST(MODULES_LIBS)
628 AC_SUBST(MOD_TARGET)
629
630 AC_SUBST(SSL_SRCS_ENABLE)
631 AC_SUBST(SSL_INCLUDES)
632 AC_SUBST(SSL_LIBS)
633
634 AC_SUBST(LDFLAGS)
635 AC_SUBST(PICFLAGS)
636 AC_SUBST(IRC_CFLAGS)
637 AC_SUBST(SEDOBJ)
638
639
640 if test "$prefix" = "NONE"; then
641 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.])
642
643 else
644
645 dnl Don't get bitten by Cygwin's stupidity if the user specified
646 dnl a custom prefix with a trailing slash
647
648 prefix=`echo $prefix | sed 's/\/$//'`
649 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.])
650
651 fi
652
653 AC_CONFIG_FILES( \
654 Makefile \
655 authd/Makefile \
656 bandb/Makefile \
657 ssld/Makefile \
658 extensions/Makefile \
659 ircd/Makefile \
660 modules/Makefile \
661 tools/Makefile \
662 tools/genssl \
663 doc/Makefile \
664 help/Makefile \
665 )
666 AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl])
667
668 AC_OUTPUT
669
670 if test "$cf_openssl_version_ok" = yes; then
671 openssl="yes"
672 else
673 openssl="no"
674 fi
675
676 echo "
677 Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
678 Install directory : $prefix
679
680 Ziplinks : $zlib
681 OpenSSL : $openssl
682
683 Nickname length : $NICKLEN
684 Topic length : $TOPICLEN
685
686 Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
687 "