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