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