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