]> jfr.im git - solanum.git/blob - configure.ac
valid_temp_time: simplify/correct overflow check
[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([solanum], [1.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([solanum 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 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 AC_DEFINE([ENABLE_FHS_PATHS], [1], [Uncomment if FHS pathnames are enabled])],
108 [libexecdir='${bindir}'
109 pkglibexecdir='${libexecdir}'
110 rundir='${sysconfdir}'
111 pkgrundir='${rundir}'
112 localstatedir='${prefix}'
113 pkglocalstatedir='${sysconfdir}'])
114 pkglibdir='${libdir}/${PACKAGE_TARNAME}'
115 AC_SUBST([pkglibdir])
116 AC_SUBST([rundir])
117 AC_SUBST([pkgrundir])
118 AC_SUBST([pkglocalstatedir])
119 AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]])
120 AC_SUBST([pkglibexecdir])
121 AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
122
123 dnl Checks for header files.
124 AC_HEADER_STDC
125 AC_HEADER_STDBOOL
126
127 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])
128
129 dnl Stuff that the memory manager (imalloc) depends on
130 dnl ==================================================
131
132 AC_C_CONST
133 if test "$ac_cv_header_machine_endian_h" = "no" ; then
134 AC_C_BIGENDIAN
135 fi
136 AC_TYPE_PID_T
137 AC_TYPE_SIZE_T
138 AC_CHECK_SIZEOF(short)
139 AC_CHECK_SIZEOF(int)
140 AC_CHECK_SIZEOF(long)
141 AC_CHECK_SIZEOF(long long)
142
143 dnl Networking Functions
144 dnl ====================
145
146 AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])])
147
148 dnl SunOS/Solaris required libnsl for inet_ntoa()
149 if test x"$SUN" = xyes; then
150 AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
151 fi
152
153 AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
154
155 CRYPT_LIB=$ac_cv_search_crypt
156
157 if test "$CRYPT_LIB" = "none required"; then
158 unset CRYPT_LIB
159 elif test "$CRYPT_LIB" = no; then
160 unset CRYPT_LIB
161 fi
162
163 AC_SUBST(CRYPT_LIB)
164
165 AC_C_BIGENDIAN
166
167 dnl Check for stdarg.h - if we can't find it, halt configure
168 AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - solanum will not compile without it **])])
169 AC_CHECK_FUNCS([strlcat strlcpy])
170
171 AC_TYPE_INT16_T
172 AC_TYPE_INT32_T
173
174 AC_CHECK_TYPE([sa_family_t], [],
175 [AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])],
176 [[#include <sys/types.h>
177 #include <sys/socket.h>]])
178
179 AC_CHECK_TYPES([uintptr_t])
180
181 dnl check for various functions...
182 AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
183
184 AC_FUNC_ALLOCA
185
186 dnl Specialized functions checks
187 dnl ============================
188
189 dnl check for nanosleep
190 AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
191 LIBS="${LIBS} -lrt",
192 [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
193 )])])
194 if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
195 then
196 AC_MSG_RESULT("nanosleep not found..using select for delay")
197 else
198 AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
199 fi
200
201 dnl OpenSSL support
202 AC_MSG_CHECKING(for OpenSSL)
203 AC_ARG_ENABLE(openssl,
204 [AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
205 AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
206 [cf_enable_openssl=$enableval],
207 [cf_enable_openssl="auto"])
208
209 if test "$cf_enable_openssl" != "no" ; then
210 cf_openssl_basedir=""
211 if test "$cf_enable_openssl" != "auto" &&
212 test "$cf_enable_openssl" != "yes" ; then
213 dnl Support for --enable-openssl=/some/place
214 cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`"
215 else
216 dnl Do the auto-probe here. Check some common directory paths.
217 for dirs in /usr/local/ssl /usr/pkg /usr/local \
218 /usr/local/openssl ; do
219 if test -f "${dirs}/include/openssl/opensslv.h" ; then
220 cf_openssl_basedir="${dirs}"
221 break
222 fi
223 done
224 unset dirs
225 fi
226 dnl Now check cf_openssl_found to see if we found anything.
227 if test ! -z "$cf_openssl_basedir"; then
228 if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
229 SSL_INCLUDES="-I${cf_openssl_basedir}/include"
230 SSL_LIBS="-L${cf_openssl_basedir}/lib"
231 else
232 dnl OpenSSL wasn't found in the directory specified. Naughty
233 dnl administrator...
234 cf_openssl_basedir=""
235 fi
236 else
237 dnl Check for stock FreeBSD 4.x and 5.x systems, since their files
238 dnl are in /usr/include and /usr/lib. In this case, we don't want to
239 dnl change INCLUDES or LIBS, but still want to enable OpenSSL.
240 dnl We can't do this check above, because some people want two versions
241 dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl)
242 dnl and they want /usr/local/ssl to have preference.
243 if test -f "/usr/include/openssl/opensslv.h" ; then
244 cf_openssl_basedir="/usr"
245 fi
246 fi
247
248 dnl If we have a basedir defined, then everything is okay. Otherwise,
249 dnl we have a problem.
250 if test ! -z "$cf_openssl_basedir"; then
251 AC_MSG_RESULT($cf_openssl_basedir)
252 cf_enable_openssl="yes"
253 else
254 AC_MSG_RESULT([not found. Specify a correct path?])
255 cf_enable_openssl="no"
256 fi
257 unset cf_openssl_basedir
258 else
259 dnl If --disable-openssl was specified
260 AC_MSG_RESULT(disabled)
261 fi
262
263 save_CPPFLAGS="$CPPFLAGS"
264 CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
265 save_LIBS="$LIBS"
266 LIBS="$LIBS $SSL_LIBS"
267 if test "$cf_enable_openssl" != no; then
268 dnl Check OpenSSL version (must be 0.9.6 or above!)
269 AC_MSG_CHECKING(for OpenSSL 0.9.6 or above)
270 AC_RUN_IFELSE(
271 [AC_LANG_PROGRAM(
272 [#include <openssl/opensslv.h>
273 #include <stdlib.h>],
274 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
275 exit(0); else exit(1);]])],
276 cf_openssl_version_ok=yes,
277 cf_openssl_version_ok=no,
278 cf_openssl_version_ok=no)
279
280 if test "$cf_openssl_version_ok" = yes; then
281 AC_MSG_RESULT(found)
282
283 dnl Work around pmake/gmake conditional incompatibilities
284 AC_SUBST(ENCSPEED, encspeed)
285
286 dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
287 CPPFLAGS="$CPPFLAGS $SSL_LIBS"
288 AC_CHECK_LIB(crypto, RSA_free)
289 SSL_LIBS="$SSL_LIBS -lcrypto"
290 SSL_SRCS_ENABLE='$(SSL_SRCS)'
291 else
292 AC_MSG_RESULT(no - OpenSSL support disabled)
293 fi
294 fi
295
296 CPPFLAGS="$save_CPPFLAGS"
297 LIBS="$save_LIBS"
298
299 dnl End OpenSSL detection
300
301
302 dnl Specialized functions and libraries
303 dnl ===================================
304
305 AC_ARG_ENABLE(hyperscan,
306 AC_HELP_STRING([--disable-hyperscan],[Disable hyperscan support]),
307 [hyperscan=$enableval],[hyperscan=yes])
308
309 AS_IF([test "$hyperscan" = yes], [
310 save_CPPFLAGS="$CPPFLAGS"
311 save_LIBS="$LIBS"
312 PKG_CHECK_MODULES([HS], [libhs >= 4], [], [hyperscan=no])
313 CPPFLAGS="$CPPFLAGS $HS_CFLAGS"
314 LIBS="$LIBS $HS_LIBS"
315 AC_CHECK_HEADER([hs_common.h], [], [hyperscan=no])
316 AC_CHECK_FUNC([hs_scan], [], [hyperscan=no])
317 ])
318
319 AS_IF([test "$hyperscan" = no], [
320 CPPFLAGS="$save_CPPFLAGS"
321 LIBS="$save_LIBS"
322 ])
323
324 AM_CONDITIONAL([HAVE_HYPERSCAN], [test "$hyperscan" = "yes"])
325
326
327 AC_ARG_WITH(sctp-path,
328 AC_HELP_STRING([--with-sctp-path=DIR],[Path to libsctp.so for SCTP support.]),
329 [LIBS="$LIBS -L$withval"],)
330
331 AC_ARG_ENABLE(sctp,
332 AC_HELP_STRING([--disable-sctp],[Disable SCTP support]),
333 [sctp=$enableval],[sctp=yes])
334
335 if test "$sctp" = yes; then
336
337 AC_CHECK_HEADER(netinet/sctp.h, [
338 AC_CHECK_LIB(sctp, sctp_bindx,
339 [
340 AC_SUBST(LIBSCTP_LD, -lsctp)
341 AC_DEFINE(HAVE_LIBSCTP, 1, [Define to 1 if libsctp (-lsctp) is available.])
342 ], sctp=no)
343 ], sctp=no)
344
345 fi
346
347 dnl Check for shared sqlite
348 dnl ======================
349 PKG_CHECK_MODULES(SQLITE, [sqlite3], [], AC_ERROR([sqlite3 is required]))
350
351 AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
352 AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
353
354 dnl **********************************************************************
355 dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
356 dnl **********************************************************************
357
358 AC_ARG_WITH([confdir],
359 [AC_HELP_STRING([--with-confdir=DIR],
360 [Directory to install config files [deprecated, use --sysconfdir instead].])],
361 [ sysconfdir=`echo $withval | sed 's/\/$//'` ],
362 [ confdir='${sysconfdir}' ])
363 AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.])
364
365 dnl **********************************************************************
366 dnl Check for --with-logdir
367 dnl **********************************************************************
368
369 AC_MSG_CHECKING([whether to modify logdir])
370 AC_ARG_WITH(logdir,
371 AC_HELP_STRING([--with-logdir=DIR],
372 [Directory where to write logfiles.]),
373 [ logdir=`echo $withval | sed 's/\/$//'`
374 AC_MSG_RESULT(yes)],
375 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
376 [logdir='${localstatedir}/log/${PACKAGE_TARNAME}'],
377 [logdir='${prefix}/logs'])
378 AC_MSG_RESULT(no)])
379 AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.])
380 AC_SUBST_DIR([logdir])
381
382 dnl **********************************************************************
383 dnl Check for --with-helpdir
384 dnl **********************************************************************
385
386 AC_MSG_CHECKING([whether to modify helpdir])
387 AC_ARG_WITH(helpdir,
388 AC_HELP_STRING([--with-helpdir=DIR],
389 [Directory to install help files.]),
390 [ helpdir=`echo $withval | sed 's/\/$//'`
391 AC_MSG_RESULT(yes) ],
392 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
393 [helpdir='${datadir}/${PACKAGE_TARNAME}/help'],
394 [helpdir='${prefix}/help'])
395 AC_MSG_RESULT(no) ])
396 AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.])
397 AC_SUBST_DIR([helpdir])
398
399 dnl **********************************************************************
400 dnl Check for --with-moduledir
401 dnl **********************************************************************
402
403 AC_MSG_CHECKING([whether to modify moduledir])
404 AC_ARG_WITH(moduledir,
405 [AC_HELP_STRING([--with-moduledir=DIR],
406 [Directory to install modules.])],
407 [ moduledir=`echo $withval | sed 's/\/$//'`
408 AC_MSG_RESULT(yes)],
409 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
410 [moduledir='${pkglibdir}/modules'],
411 [moduledir='${prefix}/modules'])
412 AC_MSG_RESULT(no)
413 ])
414 AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
415 AC_SUBST_DIR([moduledir])
416
417 dnl Check for --with-rundir
418
419 AC_MSG_CHECKING([whether or modify rundir])
420 AC_ARG_WITH([rundir],
421 [AC_HELP_STRING([--with-rundir=DIR],
422 [Directory in which to store pidfile.])],
423 [AC_MSG_RESULT([yes])
424 rundir=`echo $withval | sed 's/\/$//'`],
425 [AC_MSG_RESULT([no])
426 AS_IF([test "x$enable_fhs_paths" = "xyes"],
427 [rundir='${prefix}/run'],
428 [rundir='${sysconfdir}'])])
429 AC_SUBST([rundir])
430 AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.])
431
432 dnl Installed utility program prefixes (does not affect binaries
433 dnl installed into pkglibexecdir)
434 AC_MSG_CHECKING([for program prefix])
435 AC_ARG_WITH([program-prefix],
436 [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])],
437 [test "x$with_program_prefix" = "xno" && with_program_prefix=],
438 [with_program_prefix=])
439 AC_MSG_RESULT(["$with_program_prefix"])
440 PROGRAM_PREFIX="$with_program_prefix"
441 AC_SUBST([PROGRAM_PREFIX])
442 AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.])
443
444 dnl **********************************************************************
445 dnl Branding
446 dnl **********************************************************************
447
448 AC_MSG_CHECKING([whether custom branding is requested])
449 AC_ARG_WITH(custom-branding,
450 AC_HELP_STRING([--with-custom-branding=NAME],
451 [Custom branding name.]),
452 [BRANDING_NAME=$withval
453 AC_MSG_RESULT([yes])],
454 [BRANDING_NAME=$PACKAGE_NAME
455 AC_MSG_RESULT([no])]
456 )
457
458 AC_MSG_CHECKING([whether a custom version is requested])
459 AC_ARG_WITH(custom-version,
460 AC_HELP_STRING([--with-custom-version=NAME],
461 [Custom version branding.]),
462 [BRANDING_VERSION=$withval
463 AC_MSG_RESULT([yes])],
464 [BRANDING_VERSION=$PACKAGE_VERSION
465 AC_MSG_RESULT([no])]
466 )
467
468 AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
469 AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
470
471 if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
472 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
473 fi
474
475 dnl **********************************************************************
476 dnl Enable oper chghost
477 dnl **********************************************************************
478
479 AC_ARG_ENABLE(oper-chghost,
480 AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
481 [operchghost=$enableval],[operchghost=no])
482
483 if test "$operchghost" = yes; then
484 AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.])
485 fi
486
487 dnl Debug-related options
488 dnl =====================
489
490 AC_ARG_ENABLE(assert,
491 AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]),
492 [assert=$enableval], [assert=no])
493
494 if test "$assert" = no; then
495 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
496 elif test "$assert" = soft; then
497 AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.])
498 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
499 elif test "$assert" = yes; then
500 assert = "hard";
501 fi
502
503 AC_MSG_CHECKING(if you want to do a profile build)
504 AC_ARG_ENABLE(profile,
505 AC_HELP_STRING([--enable-profile],[Enable profiling]),
506 [profile=$enableval], [profile=no])
507
508 if test "$profile" = yes; then
509 if test "$ac_cv_c_compiler_gnu" = yes; then
510 IRC_CFLAGS="$IRC_CFLAGS -pg"
511 AC_MSG_RESULT([yes, adding -pg])
512 AC_DEFINE(SOLANUM_PROFILE, 1, [Define this if you are profiling.])
513 else
514 AC_MSG_RESULT([no, profile builds only work with gcc])
515 fi
516 else
517 AC_MSG_RESULT(no)
518 fi
519
520 AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
521 AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
522 AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
523 AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
524 AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
525 AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
526 AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
527 AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
528 AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
529 AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
530 AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
531 AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
532 AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
533 AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
534 AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
535 AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
536
537 AC_ARG_WITH(nicklen,
538 AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
539 [
540 if ! expr "$withval" + 0 >/dev/null 2>&1; then
541 AC_ERROR([NICKLEN must be a numeric value])
542 fi
543 if test $withval -gt 50; then
544 NICKLEN=50
545 AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
546 elif test $withval -lt 9; then
547 NICKLEN=9
548 AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9])
549 else
550 NICKLEN="$withval"
551 fi
552 ], [NICKLEN=31])
553
554 AC_ARG_WITH(topiclen,
555 AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
556 [
557 if test $withval -gt 390; then
558 TOPICLEN=390
559 AC_MSG_WARN([TOPICLEN has a hard limit of 390. Setting TOPICLEN=390])
560 else
561 TOPICLEN=$withval
562 fi
563 ], [TOPICLEN=390])
564
565 AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
566 AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
567
568
569 AC_ARG_WITH(asan,
570 AC_HELP_STRING([--with-asan],[Build with Address Sanitizer]),
571 [
572 CFLAGS="$CFLAGS -fsanitize=address"
573 LDFLAGS="$LDFLAGS -fsanitize=address"
574 ])
575
576 # rpath, for finding librb.so at run time
577 hold_ldflags=$LDFLAGS
578 AC_MSG_CHECKING(for the ld -rpath flag)
579 LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
580 AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no)
581 LDFLAGS=$hold_ldflags
582 AC_MSG_RESULT($found)
583 if test "$found" = yes; then
584 LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
585 fi
586
587 # This must be down here, or it will mess up checks like the ones
588 # for -Wl,-export-dynamic
589 # -- jilles
590 CWARNS=""
591 AC_ARG_ENABLE(warnings,
592 AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]),
593 [
594 IRC_CFLAGS="$IRC_CFLAGS -O0"
595 CFLAGS="$IRC_CFLAGS"
596
597 SOLANUM_C_GCC_TRY_FLAGS([-Wall], solanum_cv_c_gcc_w_all)
598 SOLANUM_C_GCC_TRY_FLAGS([-Wpointer-arith], solanum_cv_c_gcc_w_pointer_arith)
599 SOLANUM_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], solanum_cv_c_gcc_w_implicit)
600 SOLANUM_C_GCC_TRY_FLAGS([-Wcast-align], solanum_cv_c_gcc_w_cast_align)
601 SOLANUM_C_GCC_TRY_FLAGS([-Wcast-qual], solanum_cv_c_gcc_w_cast_qual)
602 SOLANUM_C_GCC_TRY_FLAGS([-Wwrite-strings], solanum_cv_c_gcc_w_write_strings)
603 SOLANUM_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], solanum_cv_c_gcc_w_error_implicit_function_declaration)
604 SOLANUM_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], solanum_cv_c_gcc_prototypes)
605 SOLANUM_C_GCC_TRY_FLAGS([-Wparentheses], solanum_cv_c_gcc_parentheses)
606 SOLANUM_C_GCC_TRY_FLAGS([-W -Wno-unused], solanum_cv_c_gcc_w)
607 SOLANUM_C_GCC_TRY_FLAGS([-Wextra], solanum_cv_c_gcc_w_extra)
608 SOLANUM_C_GCC_TRY_FLAGS([-Wshadow], solanum_cv_c_gcc_w_shadow)
609 SOLANUM_C_GCC_TRY_FLAGS([-Wmissing-noreturn], solanum_cv_c_gcc_w_missing_noreturn)
610 SOLANUM_C_GCC_TRY_FLAGS([-Wundef], solanum_cv_c_gcc_w_undef)
611 SOLANUM_C_GCC_TRY_FLAGS([-Wpacked], solanum_cv_c_gcc_w_packed)
612 SOLANUM_C_GCC_TRY_FLAGS([-Wnested-externs], solanum_cv_c_gcc_w_nested_externs)
613 SOLANUM_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], solanum_cv_c_gcc_w_unused)
614 SOLANUM_C_GCC_TRY_FLAGS([-Wredundant-decls], solanum_cv_c_gcc_w_redundant_decls)
615 SOLANUM_C_GCC_TRY_FLAGS([-Wfloat-equal], solanum_cv_c_gcc_w_float_equal)
616 SOLANUM_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], solanum_cv_c_gcc_w_format)
617
618 IRC_CFLAGS="$CFLAGS"
619 ],[])
620
621 IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
622
623 AC_SUBST(MODULES_LIBS)
624 AC_SUBST(MOD_TARGET)
625
626 AC_SUBST(SSL_SRCS_ENABLE)
627 AC_SUBST(SSL_INCLUDES)
628 AC_SUBST(SSL_LIBS)
629
630 AC_SUBST(LDFLAGS)
631 AC_SUBST(PICFLAGS)
632 AC_SUBST(IRC_CFLAGS)
633 AC_SUBST(SEDOBJ)
634
635
636 if test "$prefix" = "NONE"; then
637 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.])
638 else
639 dnl Strip trailing slashes to prevent a path of '//'
640 prefix=`echo $prefix | sed 's/\/$//'`
641 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.])
642 fi
643
644 AC_CONFIG_FILES( \
645 Makefile \
646 authd/Makefile \
647 bandb/Makefile \
648 ssld/Makefile \
649 wsockd/Makefile \
650 extensions/Makefile \
651 ircd/Makefile \
652 modules/Makefile \
653 tests/Makefile \
654 tools/Makefile \
655 tools/genssl \
656 doc/Makefile \
657 help/Makefile \
658 )
659 AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl])
660
661 AC_OUTPUT
662
663 if test "$cf_openssl_version_ok" = yes; then
664 openssl="yes"
665 else
666 openssl="no"
667 fi
668
669 echo "
670 Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
671 Install directory : $prefix
672
673 OpenSSL : $openssl
674 SCTP : $sctp
675
676 Nickname length : $NICKLEN
677 Topic length : $TOPICLEN
678
679 Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
680 "