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