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