]> jfr.im git - solanum.git/blame - configure.ac
configure: check for MINGW
[solanum.git] / configure.ac
CommitLineData
212380e3
AC
1dnl TODO: clean up all the OpenSSL and shared module checking stuff;
2dnl the most major changes have already been made and it looks like
3dnl said functions need to be just about as complex as they already are.
4
eec2776c 5AC_PREREQ(2.60)
212380e3 6
f2621986 7AC_INIT([charybdis], [3.6.0-dev])
212380e3 8
eec2776c 9AC_LANG(C)
eec2776c
AJ
10AC_USE_SYSTEM_EXTENSIONS
11AC_GNU_SOURCE
12
9258de81
VI
13AC_PROG_CC_C99
14
15if test x"$ac_cv_prog_cc_c99" = "xno"; then
16 AC_ERROR([charybdis requires a C99 capable compiler])
17fi
18
c52df125 19AC_PREFIX_DEFAULT($HOME/ircd)
a5471f24 20AC_CONFIG_MACRO_DIR([m4])
212380e3 21AC_CONFIG_HEADER(include/setup.h)
3f97a5c5
AC
22
23case "$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 ;;
37esac
38
39AM_CONDITIONAL([MINGW], [test "$is_mingw" = "yes"])
40
c83f2f5e 41AC_CONFIG_SUBDIRS([librb])
c52df125 42AC_CONFIG_AUX_DIR([libltdl/config])
eec2776c
AJ
43
44AM_INIT_AUTOMAKE([subdir-objects])
c52df125
AC
45AM_SILENT_RULES([yes])
46AM_PROG_AR
47
48LT_INIT([dlopen disable-static])
f0718c93 49LT_CONFIG_LTDL_DIR([libltdl])
c52df125
AC
50LTDL_INIT
51
52build_ltdl=$with_included_ltdl
d8c4154d 53AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"])
db137867 54
7585af0f 55if test "$ac_cv_c_compiler_gnu" = yes; then
eec2776c 56 IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall"
212380e3
AC
57fi
58
59dnl If we support -g, use it!
60if test "$ac_cv_prog_cc_g" = yes; then
2a19fc3f 61 IRC_CFLAGS="$IRC_CFLAGS -g"
212380e3
AC
62fi
63
212380e3
AC
64dnl check for /dev/null so we can use it to hold evil fd's
65AC_MSG_CHECKING([for /dev/null])
66if test -c /dev/null ; then
67 AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null])
68 AC_MSG_RESULT(yes)
69else
70 AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null])
71 AC_MSG_RESULT(no - using devnull.log)
72fi
73
74dnl jdc -- If CFLAGS is defined, best use it everywhere...
75dnl NOTE: jv says it must be added to the *END*, because things like
76dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid.
77if test ! -z "$CFLAGS"; then
78 IRC_CFLAGS="$IRC_CFLAGS $CFLAGS"
79fi
80
81AC_ISC_POSIX
82AC_C_INLINE
212380e3
AC
83AC_PROG_MAKE_SET
84AC_PROG_INSTALL
85AC_PATH_PROG(RM, rm)
86AC_PATH_PROG(CP, cp)
87AC_PATH_PROG(MV, mv)
88AC_PATH_PROG(LN, ln)
89AC_PATH_PROG(SED, sed)
90AC_PATH_PROG(AR, ar)
91AC_PATH_PROG(LD, ld)
92AC_PATH_PROG(RANLIB, ranlib)
93AC_PATH_PROG(TOUCH, touch)
94
95AC_PROG_YACC
96
97dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found
98if test "$YACC" = "yacc" -a -z "`which $YACC 2>/dev/null`"; then
99 AC_MSG_ERROR([could not locate a suitable parser generator; install bison, yacc, or byacc])
100fi
101
102AC_PROG_LEX
103
104if test "$LEX" = ":"; then
105 AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.])
106fi
107
c74836dc 108AC_ARG_ENABLE([fhs-paths],
6929cd01 109 [AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])],
c74836dc
NPB
110 [],
111 [dnl detect if the user appears to want --enable-fhs-paths
112 AS_IF([test "$libexecdir" = '${exec_prefix}/libexec' && \
113 test "$localstatedir" = '${prefix}/var' && \
114 test "$libdir" = '${exec_prefix}/lib'],
115 [enable_fhs_paths=no],
116 [enable_fhs_paths=yes])
117 ])
212380e3 118dnl use directory structure of cached as default (hack)
c74836dc
NPB
119AS_IF([test "x$enable_fhs_paths" = "xyes"],
120 [dnl Avoid name collisions.
121 pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}'
122 rundir=${rundir-'${prefix}/run'}
123 pkgrundir='${rundir}/${PACKAGE_TARNAME}'
124 pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}'],
125 [libexecdir='${bindir}'
126 pkglibexecdir='${libexecdir}'
127 rundir='${sysconfdir}'
128 pkgrundir='${rundir}'
212380e3 129 localstatedir='${prefix}'
c74836dc
NPB
130 pkglocalstatedir='${sysconfdir}'])
131pkglibdir='${libdir}/${PACKAGE_TARNAME}'
132AC_SUBST([pkglibdir])
133AC_SUBST([rundir])
134AC_SUBST([pkgrundir])
135AC_SUBST([pkglocalstatedir])
1870e06a 136AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]])
c74836dc
NPB
137AC_SUBST([pkglibexecdir])
138AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
212380e3
AC
139
140dnl Checks for header files.
141AC_HEADER_STDC
07554369 142AC_HEADER_STDBOOL
212380e3
AC
143
144AC_CHECK_HEADERS([crypt.h sys/resource.h sys/param.h errno.h sys/syslog.h stddef.h sys/wait.h wait.h sys/epoll.h sys/uio.h machine/endian.h])
145
146dnl Stuff that the memory manager (imalloc) depends on
147dnl ==================================================
148
149AC_C_CONST
150if test "$ac_cv_header_machine_endian_h" = "no" ; then
151 AC_C_BIGENDIAN
152fi
153AC_TYPE_PID_T
154AC_TYPE_SIZE_T
155AC_CHECK_SIZEOF(short)
156AC_CHECK_SIZEOF(int)
157AC_CHECK_SIZEOF(long)
158AC_CHECK_SIZEOF(long long)
159
212380e3
AC
160dnl Networking Functions
161dnl ====================
162
b45a2f35 163AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])])
212380e3
AC
164
165dnl SunOS/Solaris required libnsl for inet_ntoa()
166if test x"$SUN" = xyes; then
167 AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
168fi
169
212380e3
AC
170AC_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
176AC_ARG_ENABLE(ipv6,
177AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
178
212380e3
AC
179AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
180
181CRYPT_LIB=$ac_cv_search_crypt
182
183if test "$CRYPT_LIB" = "none required"; then
184 unset CRYPT_LIB
185elif test "$CRYPT_LIB" = no; then
186 unset CRYPT_LIB
187fi
188
189AC_SUBST(CRYPT_LIB)
190
212380e3
AC
191AC_C_BIGENDIAN
192
193dnl Check for stdarg.h - if we can't find it, halt configure
ec86417c 194AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])])
212380e3
AC
195AC_CHECK_FUNCS([strlcat strlcpy])
196
212380e3
AC
197AC_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
209AC_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
221AC_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
226AC_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
231AC_CHECK_TYPES([uintptr_t])
232
233dnl check for various functions...
5203cba5 234AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
212380e3
AC
235
236AC_FUNC_ALLOCA
237
238dnl Specialized functions checks
239dnl ============================
240
b79edd3e 241dnl check for nanosleep
212380e3
AC
242AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
243 LIBS="${LIBS} -lrt",
244 [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
245 )])])
246if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
b79edd3e 247then
212380e3 248 AC_MSG_RESULT("nanosleep not found..using select for delay")
b79edd3e 249else
212380e3
AC
250 AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
251fi
252
253dnl OpenSSL support
254AC_MSG_CHECKING(for OpenSSL)
255AC_ARG_ENABLE(openssl,
256[AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
257AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
258[cf_enable_openssl=$enableval],
259[cf_enable_openssl="auto"])
260
261if 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
310else
311 dnl If --disable-openssl was specified
312 AC_MSG_RESULT(disabled)
313fi
314
315save_CPPFLAGS="$CPPFLAGS"
316CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
317save_LIBS="$LIBS"
318LIBS="$LIBS $SSL_LIBS"
319if 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(
d5ef3fd3 323 [AC_LANG_PROGRAM(
212380e3
AC
324 [#include <openssl/opensslv.h>
325 #include <stdlib.h>],
326 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
d5ef3fd3 327 exit(0); else exit(1);]])],
212380e3
AC
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)
b79edd3e 337
212380e3
AC
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
346fi
347
348CPPFLAGS="$save_CPPFLAGS"
349LIBS="$save_LIBS"
350
351dnl End OpenSSL detection
352
353
354dnl Specialized functions and libraries
355dnl ===================================
356
357AC_ARG_WITH(zlib-path,
358AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]),
359[LIBS="$LIBS -L$withval"],)
360
361AC_ARG_ENABLE(zlib,
362AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
363[zlib=$enableval],[zlib=yes])
364
365if test "$zlib" = yes; then
366
367AC_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
375fi
376
cf1001a7
LS
377dnl Check for shared sqlite
378dnl ======================
a6ef3156
LS
379AC_ARG_WITH(shared-sqlite,
380AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]),
381[shared_sqlite=$withval],[shared_sqlite=no])
497e30a0
LS
382
383if test "$shared_sqlite" = yes; then
a5471f24
LS
384 PKG_CHECK_MODULES(SQLITE, [sqlite3],
385 [
386 shared_sqlite=yes
cf1001a7 387 ], shared_sqlite=no)
497e30a0
LS
388fi
389
74ab6be0 390if test "$shared_sqlite" = no; then
c52df125 391 SQLITE_OBJ='sqlite3.$(OBJEXT)'
74ab6be0
LS
392fi
393
a5471f24
LS
394AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
395AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
c52df125 396AC_SUBST(SQLITE_OBJ)
cf1001a7 397
212380e3 398dnl **********************************************************************
634d4aad 399dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
212380e3
AC
400dnl **********************************************************************
401
634d4aad
NPB
402AC_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}' ])
407AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.])
212380e3
AC
408
409dnl **********************************************************************
410dnl Check for --with-logdir
411dnl **********************************************************************
412
413AC_MSG_CHECKING([whether to modify logdir])
b79edd3e 414AC_ARG_WITH(logdir,
212380e3
AC
415AC_HELP_STRING([--with-logdir=DIR],
416 [Directory where to write logfiles.]),
417 [ logdir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
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)])
423AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.])
424AC_SUBST_DIR([logdir])
212380e3
AC
425
426dnl **********************************************************************
427dnl Check for --with-helpdir
428dnl **********************************************************************
429
430AC_MSG_CHECKING([whether to modify helpdir])
b79edd3e 431AC_ARG_WITH(helpdir,
212380e3
AC
432AC_HELP_STRING([--with-helpdir=DIR],
433 [Directory to install help files.]),
434 [ helpdir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
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) ])
440AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.])
441AC_SUBST_DIR([helpdir])
212380e3
AC
442
443dnl **********************************************************************
444dnl Check for --with-moduledir
445dnl **********************************************************************
446
447AC_MSG_CHECKING([whether to modify moduledir])
b79edd3e 448AC_ARG_WITH(moduledir,
c74836dc
NPB
449 [AC_HELP_STRING([--with-moduledir=DIR],
450 [Directory to install modules.])],
212380e3 451 [ moduledir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
452 AC_MSG_RESULT(yes)],
453 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
454 [moduledir='${pkglibdir}/modules'],
455 [moduledir='${prefix}/modules'])
212380e3 456 AC_MSG_RESULT(no)
c74836dc
NPB
457 ])
458AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
459AC_SUBST_DIR([moduledir])
460
461dnl Check for --with-rundir
462
463AC_MSG_CHECKING([whether or modify rundir])
464AC_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}'])])
473AC_SUBST([rundir])
474AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.])
475
476dnl Installed utility program prefixes (does not affect binaries
477dnl installed into pkglibexecdir)
478AC_MSG_CHECKING([for program prefix])
479AC_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=])
483AC_MSG_RESULT(["$with_program_prefix"])
484PROGRAM_PREFIX="$with_program_prefix"
485AC_SUBST([PROGRAM_PREFIX])
486AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.])
212380e3 487
b6d0720c
AC
488dnl **********************************************************************
489dnl Branding
490dnl **********************************************************************
491
492AC_MSG_CHECKING([whether custom branding is requested])
493AC_ARG_WITH(custom-branding,
494AC_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
502AC_MSG_CHECKING([whether a custom version is requested])
503AC_ARG_WITH(custom-version,
504AC_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
512AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
513AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
514
f5493691
AC
515if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
516 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
517fi
518
0e99e13a
EM
519dnl **********************************************************************
520dnl Enable oper chghost
521dnl **********************************************************************
522
523AC_ARG_ENABLE(oper-chghost,
cca418c9 524AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
0e99e13a
EM
525[operchghost=$enableval],[operchghost=no])
526
527if test "$operchghost" = yes; then
528 AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.])
529fi
530
212380e3
AC
531dnl Debug-related options
532dnl =====================
533
534AC_ARG_ENABLE(assert,
535AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]),
536[assert=$enableval], [assert=no])
537
538if test "$assert" = no; then
539 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
540elif 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.])
543elif test "$assert" = yes; then
544 assert = "hard";
545fi
546
212380e3
AC
547AC_MSG_CHECKING(if you want to do a profile build)
548AC_ARG_ENABLE(profile,
549AC_HELP_STRING([--enable-profile],[Enable profiling]),
550[profile=$enableval], [profile=no])
551
552if 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
560else
561 AC_MSG_RESULT(no)
562fi
563
190a5970
AC
564AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
565AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
566AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
567AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
568AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
569AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
570AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
571AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
572AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
573AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
574AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
575AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
576AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
577AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
578AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
579AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
212380e3
AC
580
581AC_ARG_WITH(nicklen,
b225bf93 582AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
212380e3 583[
b79edd3e 584 if ! expr "$withval" + 0 >/dev/null 2>&1; then
f173c7d8 585 AC_ERROR([NICKLEN must be a numeric value])
b79edd3e 586 fi
ca8ff483 587 if test $withval -gt 50; then
212380e3
AC
588 NICKLEN=50
589 AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
ca8ff483
JT
590 elif test $withval -lt 9; then
591 NICKLEN=9
592 AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9])
212380e3
AC
593 else
594 NICKLEN="$withval"
595 fi
b225bf93 596], [NICKLEN=31])
212380e3 597
b79edd3e 598AC_ARG_WITH(topiclen,
212380e3
AC
599AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
600[
173a2f4d 601 if test $withval -gt 390; then
212380e3
AC
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
212380e3
AC
609AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
610AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
212380e3 611
34dbd2d4 612# rpath, for finding librb.so at run time
794816af
JT
613hold_ldflags=$LDFLAGS
614AC_MSG_CHECKING(for the ld -rpath flag)
615LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
d5ef3fd3 616AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no)
794816af
JT
617LDFLAGS=$hold_ldflags
618AC_MSG_RESULT($found)
619if test "$found" = yes; then
620 LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
621fi
622
212380e3
AC
623# This must be down here, or it will mess up checks like the ones
624# for -Wl,-export-dynamic
625# -- jilles
97199fb3 626CWARNS=""
212380e3
AC
627AC_ARG_ENABLE(warnings,
628AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]),
629[
630IRC_CFLAGS="$IRC_CFLAGS -O0"
631CFLAGS="$IRC_CFLAGS"
632
633CHARYBDIS_C_GCC_TRY_FLAGS([-Wall], charybdis_cv_c_gcc_w_all)
634CHARYBDIS_C_GCC_TRY_FLAGS([-Wpointer-arith], charybdis_cv_c_gcc_w_pointer_arith)
635CHARYBDIS_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], charybdis_cv_c_gcc_w_implicit)
636CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-align], charybdis_cv_c_gcc_w_cast_align)
637CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-qual], charybdis_cv_c_gcc_w_cast_qual)
c0e90a8e
JT
638CHARYBDIS_C_GCC_TRY_FLAGS([-Wwrite-strings], charybdis_cv_c_gcc_w_write_strings)
639CHARYBDIS_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], charybdis_cv_c_gcc_w_error_implicit_function_declaration)
212380e3
AC
640CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], charybdis_cv_c_gcc_prototypes)
641CHARYBDIS_C_GCC_TRY_FLAGS([-Wparenthesis], charybdis_cv_c_gcc_parenthesis)
642CHARYBDIS_C_GCC_TRY_FLAGS([-W -Wno-unused], charybdis_cv_c_gcc_w)
643CHARYBDIS_C_GCC_TRY_FLAGS([-Wextra], charybdis_cv_c_gcc_w_extra)
644CHARYBDIS_C_GCC_TRY_FLAGS([-Wshadow], charybdis_cv_c_gcc_w_shadow)
645CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_noreturn)
646CHARYBDIS_C_GCC_TRY_FLAGS([-Wundef], charybdis_cv_c_gcc_w_undef)
647CHARYBDIS_C_GCC_TRY_FLAGS([-Wpacked], charybdis_cv_c_gcc_w_packed)
648CHARYBDIS_C_GCC_TRY_FLAGS([-Wnested-externs], charybdis_cv_c_gcc_w_nested_externs)
212380e3
AC
649CHARYBDIS_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], charybdis_cv_c_gcc_w_unused)
650CHARYBDIS_C_GCC_TRY_FLAGS([-Wredundant-decls], charybdis_cv_c_gcc_w_redundant_decls)
651CHARYBDIS_C_GCC_TRY_FLAGS([-Wfloat-equal], charybdis_cv_c_gcc_w_float_equal)
f9a9ffac 652CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], charybdis_cv_c_gcc_w_format)
212380e3
AC
653
654IRC_CFLAGS="$CFLAGS"
655],[])
656
97199fb3
JT
657IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
658
212380e3
AC
659AC_SUBST(MODULES_LIBS)
660AC_SUBST(MOD_TARGET)
661
662AC_SUBST(SSL_SRCS_ENABLE)
663AC_SUBST(SSL_INCLUDES)
664AC_SUBST(SSL_LIBS)
665
666AC_SUBST(LDFLAGS)
667AC_SUBST(PICFLAGS)
668AC_SUBST(IRC_CFLAGS)
669AC_SUBST(SEDOBJ)
670
671
b79edd3e 672if test "$prefix" = "NONE"; then
212380e3
AC
673 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.])
674
675else
676
677dnl Don't get bitten by Cygwin's stupidity if the user specified
678dnl 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.])
b79edd3e 682
212380e3
AC
683fi
684
685AC_CONFIG_FILES( \
686 Makefile \
0d73e7db 687 authd/Makefile \
734ce253 688 bandb/Makefile \
d261b578 689 ssld/Makefile \
212380e3 690 extensions/Makefile \
46fded53 691 ircd/Makefile \
212380e3
AC
692 modules/Makefile \
693 tools/Makefile \
14048b96 694 tools/genssl \
212380e3
AC
695 doc/Makefile \
696 help/Makefile \
697)
14048b96 698AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl])
212380e3
AC
699
700AC_OUTPUT
701
702if test "$cf_openssl_version_ok" = yes; then
703 openssl="yes"
704else
705 openssl="no"
706fi
707
212380e3 708echo "
b6d0720c 709Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
212380e3
AC
710 Install directory : $prefix
711
712 Ziplinks : $zlib
713 OpenSSL : $openssl
212380e3
AC
714
715 Nickname length : $NICKLEN
716 Topic length : $TOPICLEN
717
b6d0720c 718Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
212380e3 719"