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