]> jfr.im git - solanum.git/blob - configure.ac
appveyor: sanity check cc1
[solanum.git] / configure.ac
1 dnl TODO: clean up all the OpenSSL and shared module checking stuff;
2 dnl the most major changes have already been made and it looks like
3 dnl said functions need to be just about as complex as they already are.
4
5 AC_PREREQ(2.60)
6
7 AC_INIT([charybdis], [3.6.0-dev])
8
9 AC_LANG(C)
10 AC_USE_SYSTEM_EXTENSIONS
11 AC_GNU_SOURCE
12
13 AC_PROG_CC_C99
14
15 if test x"$ac_cv_prog_cc_c99" = "xno"; then
16 AC_ERROR([charybdis requires a C99 capable compiler])
17 fi
18
19 AC_PREFIX_DEFAULT($HOME/ircd)
20 AC_CONFIG_MACRO_DIR([m4])
21 AC_CONFIG_HEADER(include/setup.h)
22
23 AC_CONFIG_SUBDIRS([librb])
24 AC_CONFIG_AUX_DIR([libltdl/config])
25
26 AM_INIT_AUTOMAKE([subdir-objects])
27 AM_SILENT_RULES([yes])
28 AM_PROG_AR
29
30 LT_INIT([dlopen disable-static])
31 LT_CONFIG_LTDL_DIR([libltdl])
32 LTDL_INIT
33
34 build_ltdl=$with_included_ltdl
35 AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"])
36
37 case "$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*)
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 ;;
51 esac
52
53 AM_CONDITIONAL([MINGW], [test "$is_mingw" = "yes"])
54
55 if test "$ac_cv_c_compiler_gnu" = yes; then
56 IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall"
57 fi
58
59 dnl If we support -g, use it!
60 if test "$ac_cv_prog_cc_g" = yes; then
61 IRC_CFLAGS="$IRC_CFLAGS -g"
62 fi
63
64 dnl check for /dev/null so we can use it to hold evil fd's
65 AC_MSG_CHECKING([for /dev/null])
66 if test -c /dev/null ; then
67 AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null])
68 AC_MSG_RESULT(yes)
69 else
70 AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null])
71 AC_MSG_RESULT(no - using devnull.log)
72 fi
73
74 dnl jdc -- If CFLAGS is defined, best use it everywhere...
75 dnl NOTE: jv says it must be added to the *END*, because things like
76 dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid.
77 if test ! -z "$CFLAGS"; then
78 IRC_CFLAGS="$IRC_CFLAGS $CFLAGS"
79 fi
80
81 AC_ISC_POSIX
82 AC_C_INLINE
83 AC_PROG_MAKE_SET
84 AC_PROG_INSTALL
85 AC_PATH_PROG(RM, rm)
86 AC_PATH_PROG(CP, cp)
87 AC_PATH_PROG(MV, mv)
88 AC_PATH_PROG(LN, ln)
89 AC_PATH_PROG(SED, sed)
90 AC_PATH_PROG(AR, ar)
91 AC_PATH_PROG(LD, ld)
92 AC_PATH_PROG(RANLIB, ranlib)
93 AC_PATH_PROG(TOUCH, touch)
94
95 AC_PROG_YACC
96
97 dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found
98 if 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])
100 fi
101
102 AC_PROG_LEX
103
104 if test "$LEX" = ":"; then
105 AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.])
106 fi
107
108 AC_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 ])
118 dnl use directory structure of cached as default (hack)
119 AS_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}'
129 localstatedir='${prefix}'
130 pkglocalstatedir='${sysconfdir}'])
131 pkglibdir='${libdir}/${PACKAGE_TARNAME}'
132 AC_SUBST([pkglibdir])
133 AC_SUBST([rundir])
134 AC_SUBST([pkgrundir])
135 AC_SUBST([pkglocalstatedir])
136 AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]])
137 AC_SUBST([pkglibexecdir])
138 AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
139
140 dnl Checks for header files.
141 AC_HEADER_STDC
142 AC_HEADER_STDBOOL
143
144 AC_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
146 dnl Stuff that the memory manager (imalloc) depends on
147 dnl ==================================================
148
149 AC_C_CONST
150 if test "$ac_cv_header_machine_endian_h" = "no" ; then
151 AC_C_BIGENDIAN
152 fi
153 AC_TYPE_PID_T
154 AC_TYPE_SIZE_T
155 AC_CHECK_SIZEOF(short)
156 AC_CHECK_SIZEOF(int)
157 AC_CHECK_SIZEOF(long)
158 AC_CHECK_SIZEOF(long long)
159
160 dnl Networking Functions
161 dnl ====================
162
163 AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])])
164
165 dnl SunOS/Solaris required libnsl for inet_ntoa()
166 if test x"$SUN" = xyes; then
167 AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
168 fi
169
170 AC_ARG_ENABLE(ipv6,
171 AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
172
173 AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
174
175 CRYPT_LIB=$ac_cv_search_crypt
176
177 if test "$CRYPT_LIB" = "none required"; then
178 unset CRYPT_LIB
179 elif test "$CRYPT_LIB" = no; then
180 unset CRYPT_LIB
181 fi
182
183 AC_SUBST(CRYPT_LIB)
184
185 AC_C_BIGENDIAN
186
187 dnl Check for stdarg.h - if we can't find it, halt configure
188 AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])])
189 AC_CHECK_FUNCS([strlcat strlcpy])
190
191 AC_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
203 AC_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
215 AC_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
220 AC_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
225 AC_CHECK_TYPES([uintptr_t])
226
227 dnl check for various functions...
228 AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
229
230 AC_FUNC_ALLOCA
231
232 dnl Specialized functions checks
233 dnl ============================
234
235 dnl check for nanosleep
236 AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
237 LIBS="${LIBS} -lrt",
238 [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
239 )])])
240 if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
241 then
242 AC_MSG_RESULT("nanosleep not found..using select for delay")
243 else
244 AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
245 fi
246
247 dnl OpenSSL support
248 AC_MSG_CHECKING(for OpenSSL)
249 AC_ARG_ENABLE(openssl,
250 [AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
251 AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
252 [cf_enable_openssl=$enableval],
253 [cf_enable_openssl="auto"])
254
255 if 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
304 else
305 dnl If --disable-openssl was specified
306 AC_MSG_RESULT(disabled)
307 fi
308
309 save_CPPFLAGS="$CPPFLAGS"
310 CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
311 save_LIBS="$LIBS"
312 LIBS="$LIBS $SSL_LIBS"
313 if 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(
317 [AC_LANG_PROGRAM(
318 [#include <openssl/opensslv.h>
319 #include <stdlib.h>],
320 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
321 exit(0); else exit(1);]])],
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)
331
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
340 fi
341
342 CPPFLAGS="$save_CPPFLAGS"
343 LIBS="$save_LIBS"
344
345 dnl End OpenSSL detection
346
347
348 dnl Specialized functions and libraries
349 dnl ===================================
350
351 AC_ARG_WITH(zlib-path,
352 AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]),
353 [LIBS="$LIBS -L$withval"],)
354
355 AC_ARG_ENABLE(zlib,
356 AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
357 [zlib=$enableval],[zlib=yes])
358
359 if test "$zlib" = yes; then
360
361 AC_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
369 fi
370
371 dnl Check for shared sqlite
372 dnl ======================
373 AC_ARG_WITH(shared-sqlite,
374 AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]),
375 [shared_sqlite=$withval],[shared_sqlite=no])
376
377 if test "$shared_sqlite" = yes; then
378 PKG_CHECK_MODULES(SQLITE, [sqlite3],
379 [
380 shared_sqlite=yes
381 ], shared_sqlite=no)
382 fi
383
384 if test "$shared_sqlite" = no; then
385 SQLITE_OBJ='sqlite3.$(OBJEXT)'
386 fi
387
388 AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
389 AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
390 AC_SUBST(SQLITE_OBJ)
391
392 dnl **********************************************************************
393 dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
394 dnl **********************************************************************
395
396 AC_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}' ])
401 AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.])
402
403 dnl **********************************************************************
404 dnl Check for --with-logdir
405 dnl **********************************************************************
406
407 AC_MSG_CHECKING([whether to modify logdir])
408 AC_ARG_WITH(logdir,
409 AC_HELP_STRING([--with-logdir=DIR],
410 [Directory where to write logfiles.]),
411 [ logdir=`echo $withval | sed 's/\/$//'`
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)])
417 AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.])
418 AC_SUBST_DIR([logdir])
419
420 dnl **********************************************************************
421 dnl Check for --with-helpdir
422 dnl **********************************************************************
423
424 AC_MSG_CHECKING([whether to modify helpdir])
425 AC_ARG_WITH(helpdir,
426 AC_HELP_STRING([--with-helpdir=DIR],
427 [Directory to install help files.]),
428 [ helpdir=`echo $withval | sed 's/\/$//'`
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) ])
434 AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.])
435 AC_SUBST_DIR([helpdir])
436
437 dnl **********************************************************************
438 dnl Check for --with-moduledir
439 dnl **********************************************************************
440
441 AC_MSG_CHECKING([whether to modify moduledir])
442 AC_ARG_WITH(moduledir,
443 [AC_HELP_STRING([--with-moduledir=DIR],
444 [Directory to install modules.])],
445 [ moduledir=`echo $withval | sed 's/\/$//'`
446 AC_MSG_RESULT(yes)],
447 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
448 [moduledir='${pkglibdir}/modules'],
449 [moduledir='${prefix}/modules'])
450 AC_MSG_RESULT(no)
451 ])
452 AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
453 AC_SUBST_DIR([moduledir])
454
455 dnl Check for --with-rundir
456
457 AC_MSG_CHECKING([whether or modify rundir])
458 AC_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}'])])
467 AC_SUBST([rundir])
468 AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.])
469
470 dnl Installed utility program prefixes (does not affect binaries
471 dnl installed into pkglibexecdir)
472 AC_MSG_CHECKING([for program prefix])
473 AC_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=])
477 AC_MSG_RESULT(["$with_program_prefix"])
478 PROGRAM_PREFIX="$with_program_prefix"
479 AC_SUBST([PROGRAM_PREFIX])
480 AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.])
481
482 dnl **********************************************************************
483 dnl Branding
484 dnl **********************************************************************
485
486 AC_MSG_CHECKING([whether custom branding is requested])
487 AC_ARG_WITH(custom-branding,
488 AC_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
496 AC_MSG_CHECKING([whether a custom version is requested])
497 AC_ARG_WITH(custom-version,
498 AC_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
506 AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
507 AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
508
509 if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
510 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
511 fi
512
513 dnl **********************************************************************
514 dnl Enable oper chghost
515 dnl **********************************************************************
516
517 AC_ARG_ENABLE(oper-chghost,
518 AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
519 [operchghost=$enableval],[operchghost=no])
520
521 if test "$operchghost" = yes; then
522 AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.])
523 fi
524
525 dnl Debug-related options
526 dnl =====================
527
528 AC_ARG_ENABLE(assert,
529 AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]),
530 [assert=$enableval], [assert=no])
531
532 if test "$assert" = no; then
533 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
534 elif 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.])
537 elif test "$assert" = yes; then
538 assert = "hard";
539 fi
540
541 AC_MSG_CHECKING(if you want to do a profile build)
542 AC_ARG_ENABLE(profile,
543 AC_HELP_STRING([--enable-profile],[Enable profiling]),
544 [profile=$enableval], [profile=no])
545
546 if 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
554 else
555 AC_MSG_RESULT(no)
556 fi
557
558 AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
559 AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
560 AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
561 AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
562 AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
563 AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
564 AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
565 AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
566 AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
567 AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
568 AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
569 AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
570 AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
571 AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
572 AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
573 AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
574
575 AC_ARG_WITH(nicklen,
576 AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
577 [
578 if ! expr "$withval" + 0 >/dev/null 2>&1; then
579 AC_ERROR([NICKLEN must be a numeric value])
580 fi
581 if test $withval -gt 50; then
582 NICKLEN=50
583 AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
584 elif test $withval -lt 9; then
585 NICKLEN=9
586 AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9])
587 else
588 NICKLEN="$withval"
589 fi
590 ], [NICKLEN=31])
591
592 AC_ARG_WITH(topiclen,
593 AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
594 [
595 if test $withval -gt 390; then
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
603 AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
604 AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
605
606 # rpath, for finding librb.so at run time
607 hold_ldflags=$LDFLAGS
608 AC_MSG_CHECKING(for the ld -rpath flag)
609 LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
610 AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no)
611 LDFLAGS=$hold_ldflags
612 AC_MSG_RESULT($found)
613 if test "$found" = yes; then
614 LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
615 fi
616
617 # This must be down here, or it will mess up checks like the ones
618 # for -Wl,-export-dynamic
619 # -- jilles
620 CWARNS=""
621 AC_ARG_ENABLE(warnings,
622 AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]),
623 [
624 IRC_CFLAGS="$IRC_CFLAGS -O0"
625 CFLAGS="$IRC_CFLAGS"
626
627 CHARYBDIS_C_GCC_TRY_FLAGS([-Wall], charybdis_cv_c_gcc_w_all)
628 CHARYBDIS_C_GCC_TRY_FLAGS([-Wpointer-arith], charybdis_cv_c_gcc_w_pointer_arith)
629 CHARYBDIS_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], charybdis_cv_c_gcc_w_implicit)
630 CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-align], charybdis_cv_c_gcc_w_cast_align)
631 CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-qual], charybdis_cv_c_gcc_w_cast_qual)
632 CHARYBDIS_C_GCC_TRY_FLAGS([-Wwrite-strings], charybdis_cv_c_gcc_w_write_strings)
633 CHARYBDIS_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], charybdis_cv_c_gcc_w_error_implicit_function_declaration)
634 CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], charybdis_cv_c_gcc_prototypes)
635 CHARYBDIS_C_GCC_TRY_FLAGS([-Wparenthesis], charybdis_cv_c_gcc_parenthesis)
636 CHARYBDIS_C_GCC_TRY_FLAGS([-W -Wno-unused], charybdis_cv_c_gcc_w)
637 CHARYBDIS_C_GCC_TRY_FLAGS([-Wextra], charybdis_cv_c_gcc_w_extra)
638 CHARYBDIS_C_GCC_TRY_FLAGS([-Wshadow], charybdis_cv_c_gcc_w_shadow)
639 CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_noreturn)
640 CHARYBDIS_C_GCC_TRY_FLAGS([-Wundef], charybdis_cv_c_gcc_w_undef)
641 CHARYBDIS_C_GCC_TRY_FLAGS([-Wpacked], charybdis_cv_c_gcc_w_packed)
642 CHARYBDIS_C_GCC_TRY_FLAGS([-Wnested-externs], charybdis_cv_c_gcc_w_nested_externs)
643 CHARYBDIS_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], charybdis_cv_c_gcc_w_unused)
644 CHARYBDIS_C_GCC_TRY_FLAGS([-Wredundant-decls], charybdis_cv_c_gcc_w_redundant_decls)
645 CHARYBDIS_C_GCC_TRY_FLAGS([-Wfloat-equal], charybdis_cv_c_gcc_w_float_equal)
646 CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format)
647
648 IRC_CFLAGS="$CFLAGS"
649 ],[])
650
651 IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
652
653 AC_SUBST(MODULES_LIBS)
654 AC_SUBST(MOD_TARGET)
655
656 AC_SUBST(SSL_SRCS_ENABLE)
657 AC_SUBST(SSL_INCLUDES)
658 AC_SUBST(SSL_LIBS)
659
660 AC_SUBST(LDFLAGS)
661 AC_SUBST(PICFLAGS)
662 AC_SUBST(IRC_CFLAGS)
663 AC_SUBST(SEDOBJ)
664
665
666 if test "$prefix" = "NONE"; then
667 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.])
668
669 else
670
671 dnl Don't get bitten by Cygwin's stupidity if the user specified
672 dnl 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.])
676
677 fi
678
679 AC_CONFIG_FILES( \
680 Makefile \
681 authd/Makefile \
682 bandb/Makefile \
683 ssld/Makefile \
684 extensions/Makefile \
685 ircd/Makefile \
686 modules/Makefile \
687 tools/Makefile \
688 tools/genssl \
689 doc/Makefile \
690 help/Makefile \
691 )
692 AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl])
693
694 AC_OUTPUT
695
696 if test "$cf_openssl_version_ok" = yes; then
697 openssl="yes"
698 else
699 openssl="no"
700 fi
701
702 echo "
703 Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
704 Install directory : $prefix
705
706 Ziplinks : $zlib
707 OpenSSL : $openssl
708
709 Nickname length : $NICKLEN
710 Topic length : $TOPICLEN
711
712 Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
713 "