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