]> jfr.im git - solanum.git/blob - configure.ac
Merge branch 'master' into release/4
[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], [4-rc1])
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 AC_DEFINE([ENABLE_FHS_PATHS], [1], [Uncomment if FHS pathnames are enabled])],
126 [libexecdir='${bindir}'
127 pkglibexecdir='${libexecdir}'
128 rundir='${sysconfdir}'
129 pkgrundir='${rundir}'
130 localstatedir='${prefix}'
131 pkglocalstatedir='${sysconfdir}'])
132 pkglibdir='${libdir}/${PACKAGE_TARNAME}'
133 AC_SUBST([pkglibdir])
134 AC_SUBST([rundir])
135 AC_SUBST([pkgrundir])
136 AC_SUBST([pkglocalstatedir])
137 AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]])
138 AC_SUBST([pkglibexecdir])
139 AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
140
141 dnl Checks for header files.
142 AC_HEADER_STDC
143 AC_HEADER_STDBOOL
144
145 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])
146
147 dnl Stuff that the memory manager (imalloc) depends on
148 dnl ==================================================
149
150 AC_C_CONST
151 if test "$ac_cv_header_machine_endian_h" = "no" ; then
152 AC_C_BIGENDIAN
153 fi
154 AC_TYPE_PID_T
155 AC_TYPE_SIZE_T
156 AC_CHECK_SIZEOF(short)
157 AC_CHECK_SIZEOF(int)
158 AC_CHECK_SIZEOF(long)
159 AC_CHECK_SIZEOF(long long)
160
161 dnl Networking Functions
162 dnl ====================
163
164 AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])])
165
166 dnl SunOS/Solaris required libnsl for inet_ntoa()
167 if test x"$SUN" = xyes; then
168 AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
169 fi
170
171 AC_ARG_ENABLE(ipv6,
172 AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
173
174 AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
175
176 CRYPT_LIB=$ac_cv_search_crypt
177
178 if test "$CRYPT_LIB" = "none required"; then
179 unset CRYPT_LIB
180 elif test "$CRYPT_LIB" = no; then
181 unset CRYPT_LIB
182 fi
183
184 AC_SUBST(CRYPT_LIB)
185
186 AC_C_BIGENDIAN
187
188 dnl Check for stdarg.h - if we can't find it, halt configure
189 AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])])
190 AC_CHECK_FUNCS([strlcat strlcpy])
191
192 AC_TYPE_INT16_T
193 AC_TYPE_INT32_T
194
195 AC_CHECK_TYPE([sa_family_t], [],
196 [AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])],
197 [[#include <sys/types.h>
198 #include <sys/socket.h>]])
199
200 AC_CHECK_TYPES([uintptr_t])
201
202 dnl check for various functions...
203 AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
204
205 AC_FUNC_ALLOCA
206
207 dnl Specialized functions checks
208 dnl ============================
209
210 dnl check for nanosleep
211 AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
212 LIBS="${LIBS} -lrt",
213 [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
214 )])])
215 if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
216 then
217 AC_MSG_RESULT("nanosleep not found..using select for delay")
218 else
219 AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
220 fi
221
222 dnl OpenSSL support
223 AC_MSG_CHECKING(for OpenSSL)
224 AC_ARG_ENABLE(openssl,
225 [AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
226 AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
227 [cf_enable_openssl=$enableval],
228 [cf_enable_openssl="auto"])
229
230 if test "$cf_enable_openssl" != "no" ; then
231 cf_openssl_basedir=""
232 if test "$cf_enable_openssl" != "auto" &&
233 test "$cf_enable_openssl" != "yes" ; then
234 dnl Support for --enable-openssl=/some/place
235 cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`"
236 else
237 dnl Do the auto-probe here. Check some common directory paths.
238 for dirs in /usr/local/ssl /usr/pkg /usr/local \
239 /usr/local/openssl ; do
240 if test -f "${dirs}/include/openssl/opensslv.h" ; then
241 cf_openssl_basedir="${dirs}"
242 break
243 fi
244 done
245 unset dirs
246 fi
247 dnl Now check cf_openssl_found to see if we found anything.
248 if test ! -z "$cf_openssl_basedir"; then
249 if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
250 SSL_INCLUDES="-I${cf_openssl_basedir}/include"
251 SSL_LIBS="-L${cf_openssl_basedir}/lib"
252 else
253 dnl OpenSSL wasn't found in the directory specified. Naughty
254 dnl administrator...
255 cf_openssl_basedir=""
256 fi
257 else
258 dnl Check for stock FreeBSD 4.x and 5.x systems, since their files
259 dnl are in /usr/include and /usr/lib. In this case, we don't want to
260 dnl change INCLUDES or LIBS, but still want to enable OpenSSL.
261 dnl We can't do this check above, because some people want two versions
262 dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl)
263 dnl and they want /usr/local/ssl to have preference.
264 if test -f "/usr/include/openssl/opensslv.h" ; then
265 cf_openssl_basedir="/usr"
266 fi
267 fi
268
269 dnl If we have a basedir defined, then everything is okay. Otherwise,
270 dnl we have a problem.
271 if test ! -z "$cf_openssl_basedir"; then
272 AC_MSG_RESULT($cf_openssl_basedir)
273 cf_enable_openssl="yes"
274 else
275 AC_MSG_RESULT([not found. Specify a correct path?])
276 cf_enable_openssl="no"
277 fi
278 unset cf_openssl_basedir
279 else
280 dnl If --disable-openssl was specified
281 AC_MSG_RESULT(disabled)
282 fi
283
284 save_CPPFLAGS="$CPPFLAGS"
285 CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
286 save_LIBS="$LIBS"
287 LIBS="$LIBS $SSL_LIBS"
288 if test "$cf_enable_openssl" != no; then
289 dnl Check OpenSSL version (must be 0.9.6 or above!)
290 AC_MSG_CHECKING(for OpenSSL 0.9.6 or above)
291 AC_RUN_IFELSE(
292 [AC_LANG_PROGRAM(
293 [#include <openssl/opensslv.h>
294 #include <stdlib.h>],
295 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
296 exit(0); else exit(1);]])],
297 cf_openssl_version_ok=yes,
298 cf_openssl_version_ok=no,
299 cf_openssl_version_ok=no)
300
301 if test "$cf_openssl_version_ok" = yes; then
302 AC_MSG_RESULT(found)
303
304 dnl Work around pmake/gmake conditional incompatibilities
305 AC_SUBST(ENCSPEED, encspeed)
306
307 dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
308 CPPFLAGS="$CPPFLAGS $SSL_LIBS"
309 AC_CHECK_LIB(crypto, RSA_free)
310 SSL_LIBS="$SSL_LIBS -lcrypto"
311 SSL_SRCS_ENABLE='$(SSL_SRCS)'
312 else
313 AC_MSG_RESULT(no - OpenSSL support disabled)
314 fi
315 fi
316
317 CPPFLAGS="$save_CPPFLAGS"
318 LIBS="$save_LIBS"
319
320 dnl End OpenSSL detection
321
322
323 dnl Specialized functions and libraries
324 dnl ===================================
325
326 AC_ARG_WITH(zlib-path,
327 AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]),
328 [LIBS="$LIBS -L$withval"],)
329
330 AC_ARG_ENABLE(zlib,
331 AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
332 [zlib=$enableval],[zlib=yes])
333
334 if test "$zlib" = yes; then
335
336 AC_CHECK_HEADER(zlib.h, [
337 AC_CHECK_LIB(z, zlibVersion,
338 [
339 AC_SUBST(ZLIB_LD, -lz)
340 AC_DEFINE(HAVE_LIBZ, 1, [Define to 1 if zlib (-lz) is available.])
341 ], zlib=no)
342 ], zlib=no)
343
344 fi
345
346 dnl Check for shared sqlite
347 dnl ======================
348 AC_ARG_WITH(shared-sqlite,
349 AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]),
350 [shared_sqlite=$withval],[shared_sqlite=no])
351
352 if test "$shared_sqlite" = yes; then
353 PKG_CHECK_MODULES(SQLITE, [sqlite3],
354 [
355 shared_sqlite=yes
356 ], shared_sqlite=no)
357 fi
358
359 if test "$shared_sqlite" = no; then
360 SQLITE_OBJ='sqlite3.$(OBJEXT)'
361 fi
362
363 AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
364 AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
365 AC_SUBST(SQLITE_OBJ)
366
367 dnl **********************************************************************
368 dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
369 dnl **********************************************************************
370
371 AC_ARG_WITH([confdir],
372 [AC_HELP_STRING([--with-confdir=DIR],
373 [Directory to install config files [deprecated, use --sysconfdir instead].])],
374 [ sysconfdir=`echo $withval | sed 's/\/$//'` ],
375 [ confdir='${sysconfdir}' ])
376 AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.])
377
378 dnl **********************************************************************
379 dnl Check for --with-logdir
380 dnl **********************************************************************
381
382 AC_MSG_CHECKING([whether to modify logdir])
383 AC_ARG_WITH(logdir,
384 AC_HELP_STRING([--with-logdir=DIR],
385 [Directory where to write logfiles.]),
386 [ logdir=`echo $withval | sed 's/\/$//'`
387 AC_MSG_RESULT(yes)],
388 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
389 [logdir='${localstatedir}/log/${PACKAGE_TARNAME}'],
390 [logdir='${prefix}/logs'])
391 AC_MSG_RESULT(no)])
392 AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.])
393 AC_SUBST_DIR([logdir])
394
395 dnl **********************************************************************
396 dnl Check for --with-helpdir
397 dnl **********************************************************************
398
399 AC_MSG_CHECKING([whether to modify helpdir])
400 AC_ARG_WITH(helpdir,
401 AC_HELP_STRING([--with-helpdir=DIR],
402 [Directory to install help files.]),
403 [ helpdir=`echo $withval | sed 's/\/$//'`
404 AC_MSG_RESULT(yes) ],
405 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
406 [helpdir='${datadir}/${PACKAGE_TARNAME}/help'],
407 [helpdir='${prefix}/help'])
408 AC_MSG_RESULT(no) ])
409 AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.])
410 AC_SUBST_DIR([helpdir])
411
412 dnl **********************************************************************
413 dnl Check for --with-moduledir
414 dnl **********************************************************************
415
416 AC_MSG_CHECKING([whether to modify moduledir])
417 AC_ARG_WITH(moduledir,
418 [AC_HELP_STRING([--with-moduledir=DIR],
419 [Directory to install modules.])],
420 [ moduledir=`echo $withval | sed 's/\/$//'`
421 AC_MSG_RESULT(yes)],
422 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
423 [moduledir='${pkglibdir}/modules'],
424 [moduledir='${prefix}/modules'])
425 AC_MSG_RESULT(no)
426 ])
427 AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
428 AC_SUBST_DIR([moduledir])
429
430 dnl Check for --with-rundir
431
432 AC_MSG_CHECKING([whether or modify rundir])
433 AC_ARG_WITH([rundir],
434 [AC_HELP_STRING([--with-rundir=DIR],
435 [Directory in which to store pidfile.])],
436 [AC_MSG_RESULT([yes])
437 rundir=`echo $withval | sed 's/\/$//'`],
438 [AC_MSG_RESULT([no])
439 AS_IF([test "x$enable_fhs_paths" = "xyes"],
440 [rundir='${prefix}/run'],
441 [rundir='${sysconfdir}'])])
442 AC_SUBST([rundir])
443 AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.])
444
445 dnl Installed utility program prefixes (does not affect binaries
446 dnl installed into pkglibexecdir)
447 AC_MSG_CHECKING([for program prefix])
448 AC_ARG_WITH([program-prefix],
449 [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])],
450 [test "x$with_program_prefix" = "xno" && with_program_prefix=],
451 [with_program_prefix=])
452 AC_MSG_RESULT(["$with_program_prefix"])
453 PROGRAM_PREFIX="$with_program_prefix"
454 AC_SUBST([PROGRAM_PREFIX])
455 AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.])
456
457 dnl **********************************************************************
458 dnl Branding
459 dnl **********************************************************************
460
461 AC_MSG_CHECKING([whether custom branding is requested])
462 AC_ARG_WITH(custom-branding,
463 AC_HELP_STRING([--with-custom-branding=NAME],
464 [Custom branding name.]),
465 [BRANDING_NAME=$withval
466 AC_MSG_RESULT([yes])],
467 [BRANDING_NAME=$PACKAGE_NAME
468 AC_MSG_RESULT([no])]
469 )
470
471 AC_MSG_CHECKING([whether a custom version is requested])
472 AC_ARG_WITH(custom-version,
473 AC_HELP_STRING([--with-custom-version=NAME],
474 [Custom version branding.]),
475 [BRANDING_VERSION=$withval
476 AC_MSG_RESULT([yes])],
477 [BRANDING_VERSION=$PACKAGE_VERSION
478 AC_MSG_RESULT([no])]
479 )
480
481 AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
482 AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
483
484 if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
485 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
486 fi
487
488 dnl **********************************************************************
489 dnl Enable oper chghost
490 dnl **********************************************************************
491
492 AC_ARG_ENABLE(oper-chghost,
493 AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
494 [operchghost=$enableval],[operchghost=no])
495
496 if test "$operchghost" = yes; then
497 AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.])
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 librb.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([-Wparentheses], charybdis_cv_c_gcc_parentheses)
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 wsockd/Makefile \
660 extensions/Makefile \
661 ircd/Makefile \
662 modules/Makefile \
663 tools/Makefile \
664 tools/genssl \
665 doc/Makefile \
666 help/Makefile \
667 )
668 AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl])
669
670 AC_OUTPUT
671
672 if test "$cf_openssl_version_ok" = yes; then
673 openssl="yes"
674 else
675 openssl="no"
676 fi
677
678 echo "
679 Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
680 Install directory : $prefix
681
682 Ziplinks : $zlib
683 OpenSSL : $openssl
684
685 Nickname length : $NICKLEN
686 Topic length : $TOPICLEN
687
688 Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
689 "