]> jfr.im git - solanum.git/blame - configure.ac
Update NEWS.
[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)
3f97a5c5 22
3c27591e
AC
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
3f97a5c5
AC
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 ;;
8978ab4e 42*mingw* | *msys*)
3f97a5c5
AC
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
7585af0f 55if test "$ac_cv_c_compiler_gnu" = yes; then
eec2776c 56 IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall"
212380e3
AC
57fi
58
59dnl If we support -g, use it!
60if test "$ac_cv_prog_cc_g" = yes; then
2a19fc3f 61 IRC_CFLAGS="$IRC_CFLAGS -g"
212380e3
AC
62fi
63
212380e3
AC
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
212380e3
AC
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
c74836dc 108AC_ARG_ENABLE([fhs-paths],
6929cd01 109 [AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])],
c74836dc
NPB
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 ])
212380e3 118dnl use directory structure of cached as default (hack)
c74836dc
NPB
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}'
212380e3 129 localstatedir='${prefix}'
c74836dc
NPB
130 pkglocalstatedir='${sysconfdir}'])
131pkglibdir='${libdir}/${PACKAGE_TARNAME}'
132AC_SUBST([pkglibdir])
133AC_SUBST([rundir])
134AC_SUBST([pkgrundir])
135AC_SUBST([pkglocalstatedir])
1870e06a 136AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]])
c74836dc
NPB
137AC_SUBST([pkglibexecdir])
138AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
212380e3
AC
139
140dnl Checks for header files.
141AC_HEADER_STDC
07554369 142AC_HEADER_STDBOOL
212380e3
AC
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
212380e3
AC
160dnl Networking Functions
161dnl ====================
162
b45a2f35 163AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])])
212380e3
AC
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
212380e3
AC
170AC_ARG_ENABLE(ipv6,
171AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
172
212380e3
AC
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
212380e3
AC
185AC_C_BIGENDIAN
186
187dnl Check for stdarg.h - if we can't find it, halt configure
ec86417c 188AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])])
212380e3
AC
189AC_CHECK_FUNCS([strlcat strlcpy])
190
212380e3
AC
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...
5203cba5 228AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
212380e3
AC
229
230AC_FUNC_ALLOCA
231
232dnl Specialized functions checks
233dnl ============================
234
b79edd3e 235dnl check for nanosleep
212380e3
AC
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
b79edd3e 241then
212380e3 242 AC_MSG_RESULT("nanosleep not found..using select for delay")
b79edd3e 243else
212380e3
AC
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(
d5ef3fd3 317 [AC_LANG_PROGRAM(
212380e3
AC
318 [#include <openssl/opensslv.h>
319 #include <stdlib.h>],
320 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
d5ef3fd3 321 exit(0); else exit(1);]])],
212380e3
AC
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)
b79edd3e 331
212380e3
AC
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
cf1001a7
LS
371dnl Check for shared sqlite
372dnl ======================
a6ef3156
LS
373AC_ARG_WITH(shared-sqlite,
374AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]),
375[shared_sqlite=$withval],[shared_sqlite=no])
497e30a0
LS
376
377if test "$shared_sqlite" = yes; then
a5471f24
LS
378 PKG_CHECK_MODULES(SQLITE, [sqlite3],
379 [
380 shared_sqlite=yes
cf1001a7 381 ], shared_sqlite=no)
497e30a0
LS
382fi
383
74ab6be0 384if test "$shared_sqlite" = no; then
c52df125 385 SQLITE_OBJ='sqlite3.$(OBJEXT)'
74ab6be0
LS
386fi
387
a5471f24
LS
388AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
389AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
c52df125 390AC_SUBST(SQLITE_OBJ)
cf1001a7 391
212380e3 392dnl **********************************************************************
634d4aad 393dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
212380e3
AC
394dnl **********************************************************************
395
634d4aad
NPB
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.])
212380e3
AC
402
403dnl **********************************************************************
404dnl Check for --with-logdir
405dnl **********************************************************************
406
407AC_MSG_CHECKING([whether to modify logdir])
b79edd3e 408AC_ARG_WITH(logdir,
212380e3
AC
409AC_HELP_STRING([--with-logdir=DIR],
410 [Directory where to write logfiles.]),
411 [ logdir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
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])
212380e3
AC
419
420dnl **********************************************************************
421dnl Check for --with-helpdir
422dnl **********************************************************************
423
424AC_MSG_CHECKING([whether to modify helpdir])
b79edd3e 425AC_ARG_WITH(helpdir,
212380e3
AC
426AC_HELP_STRING([--with-helpdir=DIR],
427 [Directory to install help files.]),
428 [ helpdir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
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])
212380e3
AC
436
437dnl **********************************************************************
438dnl Check for --with-moduledir
439dnl **********************************************************************
440
441AC_MSG_CHECKING([whether to modify moduledir])
b79edd3e 442AC_ARG_WITH(moduledir,
c74836dc
NPB
443 [AC_HELP_STRING([--with-moduledir=DIR],
444 [Directory to install modules.])],
212380e3 445 [ moduledir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
446 AC_MSG_RESULT(yes)],
447 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
448 [moduledir='${pkglibdir}/modules'],
449 [moduledir='${prefix}/modules'])
212380e3 450 AC_MSG_RESULT(no)
c74836dc
NPB
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.])
212380e3 481
b6d0720c
AC
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
f5493691
AC
509if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
510 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
511fi
512
0e99e13a
EM
513dnl **********************************************************************
514dnl Enable oper chghost
515dnl **********************************************************************
516
517AC_ARG_ENABLE(oper-chghost,
cca418c9 518AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
0e99e13a
EM
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
212380e3
AC
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
212380e3
AC
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
190a5970
AC
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.])
212380e3
AC
574
575AC_ARG_WITH(nicklen,
b225bf93 576AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
212380e3 577[
b79edd3e 578 if ! expr "$withval" + 0 >/dev/null 2>&1; then
f173c7d8 579 AC_ERROR([NICKLEN must be a numeric value])
b79edd3e 580 fi
ca8ff483 581 if test $withval -gt 50; then
212380e3
AC
582 NICKLEN=50
583 AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
ca8ff483
JT
584 elif test $withval -lt 9; then
585 NICKLEN=9
586 AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9])
212380e3
AC
587 else
588 NICKLEN="$withval"
589 fi
b225bf93 590], [NICKLEN=31])
212380e3 591
b79edd3e 592AC_ARG_WITH(topiclen,
212380e3
AC
593AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
594[
173a2f4d 595 if test $withval -gt 390; then
212380e3
AC
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
212380e3
AC
603AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
604AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
212380e3 605
34dbd2d4 606# rpath, for finding librb.so at run time
794816af
JT
607hold_ldflags=$LDFLAGS
608AC_MSG_CHECKING(for the ld -rpath flag)
609LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
d5ef3fd3 610AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no)
794816af
JT
611LDFLAGS=$hold_ldflags
612AC_MSG_RESULT($found)
613if test "$found" = yes; then
614 LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
615fi
616
212380e3
AC
617# This must be down here, or it will mess up checks like the ones
618# for -Wl,-export-dynamic
619# -- jilles
97199fb3 620CWARNS=""
212380e3
AC
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)
c0e90a8e
JT
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)
212380e3 634CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], charybdis_cv_c_gcc_prototypes)
35472d0f 635CHARYBDIS_C_GCC_TRY_FLAGS([-Wparentheses], charybdis_cv_c_gcc_parentheses)
212380e3
AC
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)
212380e3
AC
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)
f9a9ffac 646CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format)
212380e3
AC
647
648IRC_CFLAGS="$CFLAGS"
649],[])
650
97199fb3
JT
651IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
652
212380e3
AC
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
b79edd3e 666if test "$prefix" = "NONE"; then
212380e3
AC
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.])
b79edd3e 676
212380e3
AC
677fi
678
679AC_CONFIG_FILES( \
680 Makefile \
0d73e7db 681 authd/Makefile \
734ce253 682 bandb/Makefile \
d261b578 683 ssld/Makefile \
212380e3 684 extensions/Makefile \
46fded53 685 ircd/Makefile \
212380e3
AC
686 modules/Makefile \
687 tools/Makefile \
14048b96 688 tools/genssl \
212380e3
AC
689 doc/Makefile \
690 help/Makefile \
691)
14048b96 692AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl])
212380e3
AC
693
694AC_OUTPUT
695
696if test "$cf_openssl_version_ok" = yes; then
697 openssl="yes"
698else
699 openssl="no"
700fi
701
212380e3 702echo "
b6d0720c 703Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
212380e3
AC
704 Install directory : $prefix
705
706 Ziplinks : $zlib
707 OpenSSL : $openssl
212380e3
AC
708
709 Nickname length : $NICKLEN
710 Topic length : $TOPICLEN
711
b6d0720c 712Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
212380e3 713"