]> jfr.im git - solanum.git/blame - configure.ac
Merge pull request #178 from staticfox/bsdisms
[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
2e45f5d8
MU
191AC_TYPE_INT16_T
192AC_TYPE_INT32_T
212380e3
AC
193
194AC_CHECK_TYPE([sa_family_t], [],
195[AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])],
196[[#include <sys/types.h>
197#include <sys/socket.h>]])
198
199AC_CHECK_TYPES([uintptr_t])
200
201dnl check for various functions...
5203cba5 202AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
212380e3
AC
203
204AC_FUNC_ALLOCA
205
206dnl Specialized functions checks
207dnl ============================
208
b79edd3e 209dnl check for nanosleep
212380e3
AC
210AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
211 LIBS="${LIBS} -lrt",
212 [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
213 )])])
214if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
b79edd3e 215then
212380e3 216 AC_MSG_RESULT("nanosleep not found..using select for delay")
b79edd3e 217else
212380e3
AC
218 AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
219fi
220
221dnl OpenSSL support
222AC_MSG_CHECKING(for OpenSSL)
223AC_ARG_ENABLE(openssl,
224[AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
225AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
226[cf_enable_openssl=$enableval],
227[cf_enable_openssl="auto"])
228
229if test "$cf_enable_openssl" != "no" ; then
230 cf_openssl_basedir=""
231 if test "$cf_enable_openssl" != "auto" &&
232 test "$cf_enable_openssl" != "yes" ; then
233 dnl Support for --enable-openssl=/some/place
234 cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`"
235 else
236 dnl Do the auto-probe here. Check some common directory paths.
237 for dirs in /usr/local/ssl /usr/pkg /usr/local \
238 /usr/local/openssl ; do
239 if test -f "${dirs}/include/openssl/opensslv.h" ; then
240 cf_openssl_basedir="${dirs}"
241 break
242 fi
243 done
244 unset dirs
245 fi
246 dnl Now check cf_openssl_found to see if we found anything.
247 if test ! -z "$cf_openssl_basedir"; then
248 if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
249 SSL_INCLUDES="-I${cf_openssl_basedir}/include"
250 SSL_LIBS="-L${cf_openssl_basedir}/lib"
251 else
252 dnl OpenSSL wasn't found in the directory specified. Naughty
253 dnl administrator...
254 cf_openssl_basedir=""
255 fi
256 else
257 dnl Check for stock FreeBSD 4.x and 5.x systems, since their files
258 dnl are in /usr/include and /usr/lib. In this case, we don't want to
259 dnl change INCLUDES or LIBS, but still want to enable OpenSSL.
260 dnl We can't do this check above, because some people want two versions
261 dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl)
262 dnl and they want /usr/local/ssl to have preference.
263 if test -f "/usr/include/openssl/opensslv.h" ; then
264 cf_openssl_basedir="/usr"
265 fi
266 fi
267
268 dnl If we have a basedir defined, then everything is okay. Otherwise,
269 dnl we have a problem.
270 if test ! -z "$cf_openssl_basedir"; then
271 AC_MSG_RESULT($cf_openssl_basedir)
272 cf_enable_openssl="yes"
273 else
274 AC_MSG_RESULT([not found. Specify a correct path?])
275 cf_enable_openssl="no"
276 fi
277 unset cf_openssl_basedir
278else
279 dnl If --disable-openssl was specified
280 AC_MSG_RESULT(disabled)
281fi
282
283save_CPPFLAGS="$CPPFLAGS"
284CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
285save_LIBS="$LIBS"
286LIBS="$LIBS $SSL_LIBS"
287if test "$cf_enable_openssl" != no; then
288 dnl Check OpenSSL version (must be 0.9.6 or above!)
289 AC_MSG_CHECKING(for OpenSSL 0.9.6 or above)
290 AC_RUN_IFELSE(
d5ef3fd3 291 [AC_LANG_PROGRAM(
212380e3
AC
292 [#include <openssl/opensslv.h>
293 #include <stdlib.h>],
294 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
d5ef3fd3 295 exit(0); else exit(1);]])],
212380e3
AC
296 cf_openssl_version_ok=yes,
297 cf_openssl_version_ok=no,
298 cf_openssl_version_ok=no)
299
300 if test "$cf_openssl_version_ok" = yes; then
301 AC_MSG_RESULT(found)
302
303 dnl Work around pmake/gmake conditional incompatibilities
304 AC_SUBST(ENCSPEED, encspeed)
b79edd3e 305
212380e3
AC
306 dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
307 CPPFLAGS="$CPPFLAGS $SSL_LIBS"
308 AC_CHECK_LIB(crypto, RSA_free)
309 SSL_LIBS="$SSL_LIBS -lcrypto"
310 SSL_SRCS_ENABLE='$(SSL_SRCS)'
311 else
312 AC_MSG_RESULT(no - OpenSSL support disabled)
313 fi
314fi
315
316CPPFLAGS="$save_CPPFLAGS"
317LIBS="$save_LIBS"
318
319dnl End OpenSSL detection
320
321
322dnl Specialized functions and libraries
323dnl ===================================
324
325AC_ARG_WITH(zlib-path,
326AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]),
327[LIBS="$LIBS -L$withval"],)
328
329AC_ARG_ENABLE(zlib,
330AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
331[zlib=$enableval],[zlib=yes])
332
333if test "$zlib" = yes; then
334
335AC_CHECK_HEADER(zlib.h, [
336 AC_CHECK_LIB(z, zlibVersion,
337 [
338 AC_SUBST(ZLIB_LD, -lz)
339 AC_DEFINE(HAVE_LIBZ, 1, [Define to 1 if zlib (-lz) is available.])
340 ], zlib=no)
341], zlib=no)
342
343fi
344
cf1001a7
LS
345dnl Check for shared sqlite
346dnl ======================
a6ef3156
LS
347AC_ARG_WITH(shared-sqlite,
348AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]),
349[shared_sqlite=$withval],[shared_sqlite=no])
497e30a0
LS
350
351if test "$shared_sqlite" = yes; then
a5471f24
LS
352 PKG_CHECK_MODULES(SQLITE, [sqlite3],
353 [
354 shared_sqlite=yes
cf1001a7 355 ], shared_sqlite=no)
497e30a0
LS
356fi
357
74ab6be0 358if test "$shared_sqlite" = no; then
c52df125 359 SQLITE_OBJ='sqlite3.$(OBJEXT)'
74ab6be0
LS
360fi
361
a5471f24
LS
362AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
363AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
c52df125 364AC_SUBST(SQLITE_OBJ)
cf1001a7 365
212380e3 366dnl **********************************************************************
634d4aad 367dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
212380e3
AC
368dnl **********************************************************************
369
634d4aad
NPB
370AC_ARG_WITH([confdir],
371 [AC_HELP_STRING([--with-confdir=DIR],
372 [Directory to install config files [deprecated, use --sysconfdir instead].])],
373 [ sysconfdir=`echo $withval | sed 's/\/$//'` ],
374 [ confdir='${sysconfdir}' ])
375AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.])
212380e3
AC
376
377dnl **********************************************************************
378dnl Check for --with-logdir
379dnl **********************************************************************
380
381AC_MSG_CHECKING([whether to modify logdir])
b79edd3e 382AC_ARG_WITH(logdir,
212380e3
AC
383AC_HELP_STRING([--with-logdir=DIR],
384 [Directory where to write logfiles.]),
385 [ logdir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
386 AC_MSG_RESULT(yes)],
387 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
388 [logdir='${localstatedir}/log/${PACKAGE_TARNAME}'],
389 [logdir='${prefix}/logs'])
390 AC_MSG_RESULT(no)])
391AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.])
392AC_SUBST_DIR([logdir])
212380e3
AC
393
394dnl **********************************************************************
395dnl Check for --with-helpdir
396dnl **********************************************************************
397
398AC_MSG_CHECKING([whether to modify helpdir])
b79edd3e 399AC_ARG_WITH(helpdir,
212380e3
AC
400AC_HELP_STRING([--with-helpdir=DIR],
401 [Directory to install help files.]),
402 [ helpdir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
403 AC_MSG_RESULT(yes) ],
404 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
405 [helpdir='${datadir}/${PACKAGE_TARNAME}/help'],
406 [helpdir='${prefix}/help'])
407 AC_MSG_RESULT(no) ])
408AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.])
409AC_SUBST_DIR([helpdir])
212380e3
AC
410
411dnl **********************************************************************
412dnl Check for --with-moduledir
413dnl **********************************************************************
414
415AC_MSG_CHECKING([whether to modify moduledir])
b79edd3e 416AC_ARG_WITH(moduledir,
c74836dc
NPB
417 [AC_HELP_STRING([--with-moduledir=DIR],
418 [Directory to install modules.])],
212380e3 419 [ moduledir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
420 AC_MSG_RESULT(yes)],
421 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
422 [moduledir='${pkglibdir}/modules'],
423 [moduledir='${prefix}/modules'])
212380e3 424 AC_MSG_RESULT(no)
c74836dc
NPB
425 ])
426AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
427AC_SUBST_DIR([moduledir])
428
429dnl Check for --with-rundir
430
431AC_MSG_CHECKING([whether or modify rundir])
432AC_ARG_WITH([rundir],
433 [AC_HELP_STRING([--with-rundir=DIR],
434 [Directory in which to store pidfile.])],
435 [AC_MSG_RESULT([yes])
436 rundir=`echo $withval | sed 's/\/$//'`],
437 [AC_MSG_RESULT([no])
438 AS_IF([test "x$enable_fhs_paths" = "xyes"],
439 [rundir='${prefix}/run'],
440 [rundir='${sysconfdir}'])])
441AC_SUBST([rundir])
442AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.])
443
444dnl Installed utility program prefixes (does not affect binaries
445dnl installed into pkglibexecdir)
446AC_MSG_CHECKING([for program prefix])
447AC_ARG_WITH([program-prefix],
448 [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])],
449 [test "x$with_program_prefix" = "xno" && with_program_prefix=],
450 [with_program_prefix=])
451AC_MSG_RESULT(["$with_program_prefix"])
452PROGRAM_PREFIX="$with_program_prefix"
453AC_SUBST([PROGRAM_PREFIX])
454AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.])
212380e3 455
b6d0720c
AC
456dnl **********************************************************************
457dnl Branding
458dnl **********************************************************************
459
460AC_MSG_CHECKING([whether custom branding is requested])
461AC_ARG_WITH(custom-branding,
462AC_HELP_STRING([--with-custom-branding=NAME],
463 [Custom branding name.]),
464 [BRANDING_NAME=$withval
465 AC_MSG_RESULT([yes])],
466 [BRANDING_NAME=$PACKAGE_NAME
467 AC_MSG_RESULT([no])]
468)
469
470AC_MSG_CHECKING([whether a custom version is requested])
471AC_ARG_WITH(custom-version,
472AC_HELP_STRING([--with-custom-version=NAME],
473 [Custom version branding.]),
474 [BRANDING_VERSION=$withval
475 AC_MSG_RESULT([yes])],
476 [BRANDING_VERSION=$PACKAGE_VERSION
477 AC_MSG_RESULT([no])]
478)
479
480AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
481AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
482
f5493691
AC
483if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
484 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
485fi
486
0e99e13a
EM
487dnl **********************************************************************
488dnl Enable oper chghost
489dnl **********************************************************************
490
491AC_ARG_ENABLE(oper-chghost,
cca418c9 492AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
0e99e13a
EM
493[operchghost=$enableval],[operchghost=no])
494
495if test "$operchghost" = yes; then
496 AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.])
497fi
498
212380e3
AC
499dnl Debug-related options
500dnl =====================
501
502AC_ARG_ENABLE(assert,
503AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]),
504[assert=$enableval], [assert=no])
505
506if test "$assert" = no; then
507 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
508elif test "$assert" = soft; then
509 AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.])
510 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
511elif test "$assert" = yes; then
512 assert = "hard";
513fi
514
212380e3
AC
515AC_MSG_CHECKING(if you want to do a profile build)
516AC_ARG_ENABLE(profile,
517AC_HELP_STRING([--enable-profile],[Enable profiling]),
518[profile=$enableval], [profile=no])
519
520if test "$profile" = yes; then
521 if test "$ac_cv_c_compiler_gnu" = yes; then
522 IRC_CFLAGS="$IRC_CFLAGS -pg"
523 AC_MSG_RESULT([yes, adding -pg])
524 AC_DEFINE(CHARYBDIS_PROFILE, 1, [Define this if you are profiling.])
525 else
526 AC_MSG_RESULT([no, profile builds only work with gcc])
527 fi
528else
529 AC_MSG_RESULT(no)
530fi
531
190a5970
AC
532AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
533AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
534AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
535AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
536AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
537AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
538AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
539AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
540AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
541AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
542AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
543AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
544AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
545AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
546AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
547AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
212380e3
AC
548
549AC_ARG_WITH(nicklen,
b225bf93 550AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
212380e3 551[
b79edd3e 552 if ! expr "$withval" + 0 >/dev/null 2>&1; then
f173c7d8 553 AC_ERROR([NICKLEN must be a numeric value])
b79edd3e 554 fi
ca8ff483 555 if test $withval -gt 50; then
212380e3
AC
556 NICKLEN=50
557 AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
ca8ff483
JT
558 elif test $withval -lt 9; then
559 NICKLEN=9
560 AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9])
212380e3
AC
561 else
562 NICKLEN="$withval"
563 fi
b225bf93 564], [NICKLEN=31])
212380e3 565
b79edd3e 566AC_ARG_WITH(topiclen,
212380e3
AC
567AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
568[
173a2f4d 569 if test $withval -gt 390; then
212380e3
AC
570 TOPICLEN=390
571 AC_MSG_WARN([TOPICLEN has a hard limit of 390. Setting TOPICLEN=390])
572 else
573 TOPICLEN=$withval
574 fi
575], [TOPICLEN=390])
576
212380e3
AC
577AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
578AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
212380e3 579
34dbd2d4 580# rpath, for finding librb.so at run time
794816af
JT
581hold_ldflags=$LDFLAGS
582AC_MSG_CHECKING(for the ld -rpath flag)
583LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
d5ef3fd3 584AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no)
794816af
JT
585LDFLAGS=$hold_ldflags
586AC_MSG_RESULT($found)
587if test "$found" = yes; then
588 LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
589fi
590
212380e3
AC
591# This must be down here, or it will mess up checks like the ones
592# for -Wl,-export-dynamic
593# -- jilles
97199fb3 594CWARNS=""
212380e3
AC
595AC_ARG_ENABLE(warnings,
596AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]),
597[
598IRC_CFLAGS="$IRC_CFLAGS -O0"
599CFLAGS="$IRC_CFLAGS"
600
601CHARYBDIS_C_GCC_TRY_FLAGS([-Wall], charybdis_cv_c_gcc_w_all)
602CHARYBDIS_C_GCC_TRY_FLAGS([-Wpointer-arith], charybdis_cv_c_gcc_w_pointer_arith)
603CHARYBDIS_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], charybdis_cv_c_gcc_w_implicit)
604CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-align], charybdis_cv_c_gcc_w_cast_align)
605CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-qual], charybdis_cv_c_gcc_w_cast_qual)
c0e90a8e
JT
606CHARYBDIS_C_GCC_TRY_FLAGS([-Wwrite-strings], charybdis_cv_c_gcc_w_write_strings)
607CHARYBDIS_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], charybdis_cv_c_gcc_w_error_implicit_function_declaration)
212380e3 608CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], charybdis_cv_c_gcc_prototypes)
35472d0f 609CHARYBDIS_C_GCC_TRY_FLAGS([-Wparentheses], charybdis_cv_c_gcc_parentheses)
212380e3
AC
610CHARYBDIS_C_GCC_TRY_FLAGS([-W -Wno-unused], charybdis_cv_c_gcc_w)
611CHARYBDIS_C_GCC_TRY_FLAGS([-Wextra], charybdis_cv_c_gcc_w_extra)
612CHARYBDIS_C_GCC_TRY_FLAGS([-Wshadow], charybdis_cv_c_gcc_w_shadow)
613CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_noreturn)
614CHARYBDIS_C_GCC_TRY_FLAGS([-Wundef], charybdis_cv_c_gcc_w_undef)
615CHARYBDIS_C_GCC_TRY_FLAGS([-Wpacked], charybdis_cv_c_gcc_w_packed)
616CHARYBDIS_C_GCC_TRY_FLAGS([-Wnested-externs], charybdis_cv_c_gcc_w_nested_externs)
212380e3
AC
617CHARYBDIS_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], charybdis_cv_c_gcc_w_unused)
618CHARYBDIS_C_GCC_TRY_FLAGS([-Wredundant-decls], charybdis_cv_c_gcc_w_redundant_decls)
619CHARYBDIS_C_GCC_TRY_FLAGS([-Wfloat-equal], charybdis_cv_c_gcc_w_float_equal)
f9a9ffac 620CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format)
212380e3
AC
621
622IRC_CFLAGS="$CFLAGS"
623],[])
624
97199fb3
JT
625IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
626
212380e3
AC
627AC_SUBST(MODULES_LIBS)
628AC_SUBST(MOD_TARGET)
629
630AC_SUBST(SSL_SRCS_ENABLE)
631AC_SUBST(SSL_INCLUDES)
632AC_SUBST(SSL_LIBS)
633
634AC_SUBST(LDFLAGS)
635AC_SUBST(PICFLAGS)
636AC_SUBST(IRC_CFLAGS)
637AC_SUBST(SEDOBJ)
638
639
b79edd3e 640if test "$prefix" = "NONE"; then
212380e3
AC
641 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.])
642
643else
644
645dnl Don't get bitten by Cygwin's stupidity if the user specified
646dnl a custom prefix with a trailing slash
647
648 prefix=`echo $prefix | sed 's/\/$//'`
649 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.])
b79edd3e 650
212380e3
AC
651fi
652
653AC_CONFIG_FILES( \
654 Makefile \
0d73e7db 655 authd/Makefile \
734ce253 656 bandb/Makefile \
d261b578 657 ssld/Makefile \
212380e3 658 extensions/Makefile \
46fded53 659 ircd/Makefile \
212380e3
AC
660 modules/Makefile \
661 tools/Makefile \
14048b96 662 tools/genssl \
212380e3
AC
663 doc/Makefile \
664 help/Makefile \
665)
14048b96 666AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl])
212380e3
AC
667
668AC_OUTPUT
669
670if test "$cf_openssl_version_ok" = yes; then
671 openssl="yes"
672else
673 openssl="no"
674fi
675
212380e3 676echo "
b6d0720c 677Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
212380e3
AC
678 Install directory : $prefix
679
680 Ziplinks : $zlib
681 OpenSSL : $openssl
212380e3
AC
682
683 Nickname length : $NICKLEN
684 Topic length : $TOPICLEN
685
b6d0720c 686Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
212380e3 687"