]> jfr.im git - solanum.git/blob - configure.ac
Cleanup more BSD-isms
[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
23 AC_CONFIG_SUBDIRS([librb])
24 AC_CONFIG_AUX_DIR([libltdl/config])
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 case "$host_os" in
38 *cygwin*)
39 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
40 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
41 ;;
42 *mingw* | *msys*)
43 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
44 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
45 AC_CHECK_HEADER(winsock2.h, , [AC_MSG_ERROR([** MinGW and no winsock2.h. I give up.])])
46 LIBS="$LIBS -lws2_32 -liphlpapi"
47 is_mingw="yes"
48 ;;
49 *)
50 ;;
51 esac
52
53 AM_CONDITIONAL([MINGW], [test "$is_mingw" = "yes"])
54
55 if test "$ac_cv_c_compiler_gnu" = yes; then
56 IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall"
57 fi
58
59 dnl If we support -g, use it!
60 if test "$ac_cv_prog_cc_g" = yes; then
61 IRC_CFLAGS="$IRC_CFLAGS -g"
62 fi
63
64 dnl check for /dev/null so we can use it to hold evil fd's
65 AC_MSG_CHECKING([for /dev/null])
66 if test -c /dev/null ; then
67 AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null])
68 AC_MSG_RESULT(yes)
69 else
70 AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null])
71 AC_MSG_RESULT(no - using devnull.log)
72 fi
73
74 dnl jdc -- If CFLAGS is defined, best use it everywhere...
75 dnl NOTE: jv says it must be added to the *END*, because things like
76 dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid.
77 if test ! -z "$CFLAGS"; then
78 IRC_CFLAGS="$IRC_CFLAGS $CFLAGS"
79 fi
80
81 AC_ISC_POSIX
82 AC_C_INLINE
83 AC_PROG_MAKE_SET
84 AC_PROG_INSTALL
85 AC_PATH_PROG(RM, rm)
86 AC_PATH_PROG(CP, cp)
87 AC_PATH_PROG(MV, mv)
88 AC_PATH_PROG(LN, ln)
89 AC_PATH_PROG(SED, sed)
90 AC_PATH_PROG(AR, ar)
91 AC_PATH_PROG(LD, ld)
92 AC_PATH_PROG(RANLIB, ranlib)
93 AC_PATH_PROG(TOUCH, touch)
94
95 AC_PROG_YACC
96
97 dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found
98 if test "$YACC" = "yacc" -a -z "`which $YACC 2>/dev/null`"; then
99 AC_MSG_ERROR([could not locate a suitable parser generator; install bison, yacc, or byacc])
100 fi
101
102 AC_PROG_LEX
103
104 if test "$LEX" = ":"; then
105 AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.])
106 fi
107
108 AC_ARG_ENABLE([fhs-paths],
109 [AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])],
110 [],
111 [dnl detect if the user appears to want --enable-fhs-paths
112 AS_IF([test "$libexecdir" = '${exec_prefix}/libexec' && \
113 test "$localstatedir" = '${prefix}/var' && \
114 test "$libdir" = '${exec_prefix}/lib'],
115 [enable_fhs_paths=no],
116 [enable_fhs_paths=yes])
117 ])
118 dnl use directory structure of cached as default (hack)
119 AS_IF([test "x$enable_fhs_paths" = "xyes"],
120 [dnl Avoid name collisions.
121 pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}'
122 rundir=${rundir-'${prefix}/run'}
123 pkgrundir='${rundir}/${PACKAGE_TARNAME}'
124 pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}'],
125 [libexecdir='${bindir}'
126 pkglibexecdir='${libexecdir}'
127 rundir='${sysconfdir}'
128 pkgrundir='${rundir}'
129 localstatedir='${prefix}'
130 pkglocalstatedir='${sysconfdir}'])
131 pkglibdir='${libdir}/${PACKAGE_TARNAME}'
132 AC_SUBST([pkglibdir])
133 AC_SUBST([rundir])
134 AC_SUBST([pkgrundir])
135 AC_SUBST([pkglocalstatedir])
136 AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]])
137 AC_SUBST([pkglibexecdir])
138 AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
139
140 dnl Checks for header files.
141 AC_HEADER_STDC
142 AC_HEADER_STDBOOL
143
144 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])
145
146 dnl Stuff that the memory manager (imalloc) depends on
147 dnl ==================================================
148
149 AC_C_CONST
150 if test "$ac_cv_header_machine_endian_h" = "no" ; then
151 AC_C_BIGENDIAN
152 fi
153 AC_TYPE_PID_T
154 AC_TYPE_SIZE_T
155 AC_CHECK_SIZEOF(short)
156 AC_CHECK_SIZEOF(int)
157 AC_CHECK_SIZEOF(long)
158 AC_CHECK_SIZEOF(long long)
159
160 dnl Networking Functions
161 dnl ====================
162
163 AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])])
164
165 dnl SunOS/Solaris required libnsl for inet_ntoa()
166 if test x"$SUN" = xyes; then
167 AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
168 fi
169
170 AC_ARG_ENABLE(ipv6,
171 AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
172
173 AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
174
175 CRYPT_LIB=$ac_cv_search_crypt
176
177 if test "$CRYPT_LIB" = "none required"; then
178 unset CRYPT_LIB
179 elif test "$CRYPT_LIB" = no; then
180 unset CRYPT_LIB
181 fi
182
183 AC_SUBST(CRYPT_LIB)
184
185 AC_C_BIGENDIAN
186
187 dnl Check for stdarg.h - if we can't find it, halt configure
188 AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])])
189 AC_CHECK_FUNCS([strlcat strlcpy])
190
191 AC_TYPE_INT16_T
192 AC_TYPE_INT32_T
193
194 AC_CHECK_TYPE([sa_family_t], [],
195 [AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])],
196 [[#include <sys/types.h>
197 #include <sys/socket.h>]])
198
199 AC_CHECK_TYPES([uintptr_t])
200
201 dnl check for various functions...
202 AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
203
204 AC_FUNC_ALLOCA
205
206 dnl Specialized functions checks
207 dnl ============================
208
209 dnl check for nanosleep
210 AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
211 LIBS="${LIBS} -lrt",
212 [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
213 )])])
214 if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
215 then
216 AC_MSG_RESULT("nanosleep not found..using select for delay")
217 else
218 AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
219 fi
220
221 dnl OpenSSL support
222 AC_MSG_CHECKING(for OpenSSL)
223 AC_ARG_ENABLE(openssl,
224 [AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
225 AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
226 [cf_enable_openssl=$enableval],
227 [cf_enable_openssl="auto"])
228
229 if test "$cf_enable_openssl" != "no" ; then
230 cf_openssl_basedir=""
231 if test "$cf_enable_openssl" != "auto" &&
232 test "$cf_enable_openssl" != "yes" ; then
233 dnl Support for --enable-openssl=/some/place
234 cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`"
235 else
236 dnl Do the auto-probe here. Check some common directory paths.
237 for dirs in /usr/local/ssl /usr/pkg /usr/local \
238 /usr/local/openssl ; do
239 if test -f "${dirs}/include/openssl/opensslv.h" ; then
240 cf_openssl_basedir="${dirs}"
241 break
242 fi
243 done
244 unset dirs
245 fi
246 dnl Now check cf_openssl_found to see if we found anything.
247 if test ! -z "$cf_openssl_basedir"; then
248 if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
249 SSL_INCLUDES="-I${cf_openssl_basedir}/include"
250 SSL_LIBS="-L${cf_openssl_basedir}/lib"
251 else
252 dnl OpenSSL wasn't found in the directory specified. Naughty
253 dnl administrator...
254 cf_openssl_basedir=""
255 fi
256 else
257 dnl Check for stock FreeBSD 4.x and 5.x systems, since their files
258 dnl are in /usr/include and /usr/lib. In this case, we don't want to
259 dnl change INCLUDES or LIBS, but still want to enable OpenSSL.
260 dnl We can't do this check above, because some people want two versions
261 dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl)
262 dnl and they want /usr/local/ssl to have preference.
263 if test -f "/usr/include/openssl/opensslv.h" ; then
264 cf_openssl_basedir="/usr"
265 fi
266 fi
267
268 dnl If we have a basedir defined, then everything is okay. Otherwise,
269 dnl we have a problem.
270 if test ! -z "$cf_openssl_basedir"; then
271 AC_MSG_RESULT($cf_openssl_basedir)
272 cf_enable_openssl="yes"
273 else
274 AC_MSG_RESULT([not found. Specify a correct path?])
275 cf_enable_openssl="no"
276 fi
277 unset cf_openssl_basedir
278 else
279 dnl If --disable-openssl was specified
280 AC_MSG_RESULT(disabled)
281 fi
282
283 save_CPPFLAGS="$CPPFLAGS"
284 CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
285 save_LIBS="$LIBS"
286 LIBS="$LIBS $SSL_LIBS"
287 if test "$cf_enable_openssl" != no; then
288 dnl Check OpenSSL version (must be 0.9.6 or above!)
289 AC_MSG_CHECKING(for OpenSSL 0.9.6 or above)
290 AC_RUN_IFELSE(
291 [AC_LANG_PROGRAM(
292 [#include <openssl/opensslv.h>
293 #include <stdlib.h>],
294 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
295 exit(0); else exit(1);]])],
296 cf_openssl_version_ok=yes,
297 cf_openssl_version_ok=no,
298 cf_openssl_version_ok=no)
299
300 if test "$cf_openssl_version_ok" = yes; then
301 AC_MSG_RESULT(found)
302
303 dnl Work around pmake/gmake conditional incompatibilities
304 AC_SUBST(ENCSPEED, encspeed)
305
306 dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
307 CPPFLAGS="$CPPFLAGS $SSL_LIBS"
308 AC_CHECK_LIB(crypto, RSA_free)
309 SSL_LIBS="$SSL_LIBS -lcrypto"
310 SSL_SRCS_ENABLE='$(SSL_SRCS)'
311 else
312 AC_MSG_RESULT(no - OpenSSL support disabled)
313 fi
314 fi
315
316 CPPFLAGS="$save_CPPFLAGS"
317 LIBS="$save_LIBS"
318
319 dnl End OpenSSL detection
320
321
322 dnl Specialized functions and libraries
323 dnl ===================================
324
325 AC_ARG_WITH(zlib-path,
326 AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]),
327 [LIBS="$LIBS -L$withval"],)
328
329 AC_ARG_ENABLE(zlib,
330 AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
331 [zlib=$enableval],[zlib=yes])
332
333 if test "$zlib" = yes; then
334
335 AC_CHECK_HEADER(zlib.h, [
336 AC_CHECK_LIB(z, zlibVersion,
337 [
338 AC_SUBST(ZLIB_LD, -lz)
339 AC_DEFINE(HAVE_LIBZ, 1, [Define to 1 if zlib (-lz) is available.])
340 ], zlib=no)
341 ], zlib=no)
342
343 fi
344
345 dnl Check for shared sqlite
346 dnl ======================
347 AC_ARG_WITH(shared-sqlite,
348 AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]),
349 [shared_sqlite=$withval],[shared_sqlite=no])
350
351 if test "$shared_sqlite" = yes; then
352 PKG_CHECK_MODULES(SQLITE, [sqlite3],
353 [
354 shared_sqlite=yes
355 ], shared_sqlite=no)
356 fi
357
358 if test "$shared_sqlite" = no; then
359 SQLITE_OBJ='sqlite3.$(OBJEXT)'
360 fi
361
362 AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
363 AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
364 AC_SUBST(SQLITE_OBJ)
365
366 dnl **********************************************************************
367 dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
368 dnl **********************************************************************
369
370 AC_ARG_WITH([confdir],
371 [AC_HELP_STRING([--with-confdir=DIR],
372 [Directory to install config files [deprecated, use --sysconfdir instead].])],
373 [ sysconfdir=`echo $withval | sed 's/\/$//'` ],
374 [ confdir='${sysconfdir}' ])
375 AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.])
376
377 dnl **********************************************************************
378 dnl Check for --with-logdir
379 dnl **********************************************************************
380
381 AC_MSG_CHECKING([whether to modify logdir])
382 AC_ARG_WITH(logdir,
383 AC_HELP_STRING([--with-logdir=DIR],
384 [Directory where to write logfiles.]),
385 [ logdir=`echo $withval | sed 's/\/$//'`
386 AC_MSG_RESULT(yes)],
387 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
388 [logdir='${localstatedir}/log/${PACKAGE_TARNAME}'],
389 [logdir='${prefix}/logs'])
390 AC_MSG_RESULT(no)])
391 AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.])
392 AC_SUBST_DIR([logdir])
393
394 dnl **********************************************************************
395 dnl Check for --with-helpdir
396 dnl **********************************************************************
397
398 AC_MSG_CHECKING([whether to modify helpdir])
399 AC_ARG_WITH(helpdir,
400 AC_HELP_STRING([--with-helpdir=DIR],
401 [Directory to install help files.]),
402 [ helpdir=`echo $withval | sed 's/\/$//'`
403 AC_MSG_RESULT(yes) ],
404 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
405 [helpdir='${datadir}/${PACKAGE_TARNAME}/help'],
406 [helpdir='${prefix}/help'])
407 AC_MSG_RESULT(no) ])
408 AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.])
409 AC_SUBST_DIR([helpdir])
410
411 dnl **********************************************************************
412 dnl Check for --with-moduledir
413 dnl **********************************************************************
414
415 AC_MSG_CHECKING([whether to modify moduledir])
416 AC_ARG_WITH(moduledir,
417 [AC_HELP_STRING([--with-moduledir=DIR],
418 [Directory to install modules.])],
419 [ moduledir=`echo $withval | sed 's/\/$//'`
420 AC_MSG_RESULT(yes)],
421 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
422 [moduledir='${pkglibdir}/modules'],
423 [moduledir='${prefix}/modules'])
424 AC_MSG_RESULT(no)
425 ])
426 AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
427 AC_SUBST_DIR([moduledir])
428
429 dnl Check for --with-rundir
430
431 AC_MSG_CHECKING([whether or modify rundir])
432 AC_ARG_WITH([rundir],
433 [AC_HELP_STRING([--with-rundir=DIR],
434 [Directory in which to store pidfile.])],
435 [AC_MSG_RESULT([yes])
436 rundir=`echo $withval | sed 's/\/$//'`],
437 [AC_MSG_RESULT([no])
438 AS_IF([test "x$enable_fhs_paths" = "xyes"],
439 [rundir='${prefix}/run'],
440 [rundir='${sysconfdir}'])])
441 AC_SUBST([rundir])
442 AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.])
443
444 dnl Installed utility program prefixes (does not affect binaries
445 dnl installed into pkglibexecdir)
446 AC_MSG_CHECKING([for program prefix])
447 AC_ARG_WITH([program-prefix],
448 [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])],
449 [test "x$with_program_prefix" = "xno" && with_program_prefix=],
450 [with_program_prefix=])
451 AC_MSG_RESULT(["$with_program_prefix"])
452 PROGRAM_PREFIX="$with_program_prefix"
453 AC_SUBST([PROGRAM_PREFIX])
454 AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.])
455
456 dnl **********************************************************************
457 dnl Branding
458 dnl **********************************************************************
459
460 AC_MSG_CHECKING([whether custom branding is requested])
461 AC_ARG_WITH(custom-branding,
462 AC_HELP_STRING([--with-custom-branding=NAME],
463 [Custom branding name.]),
464 [BRANDING_NAME=$withval
465 AC_MSG_RESULT([yes])],
466 [BRANDING_NAME=$PACKAGE_NAME
467 AC_MSG_RESULT([no])]
468 )
469
470 AC_MSG_CHECKING([whether a custom version is requested])
471 AC_ARG_WITH(custom-version,
472 AC_HELP_STRING([--with-custom-version=NAME],
473 [Custom version branding.]),
474 [BRANDING_VERSION=$withval
475 AC_MSG_RESULT([yes])],
476 [BRANDING_VERSION=$PACKAGE_VERSION
477 AC_MSG_RESULT([no])]
478 )
479
480 AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
481 AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
482
483 if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
484 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
485 fi
486
487 dnl **********************************************************************
488 dnl Enable oper chghost
489 dnl **********************************************************************
490
491 AC_ARG_ENABLE(oper-chghost,
492 AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
493 [operchghost=$enableval],[operchghost=no])
494
495 if test "$operchghost" = yes; then
496 AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.])
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 librb.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([-Wparentheses], charybdis_cv_c_gcc_parentheses)
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 "