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