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