]> jfr.im git - solanum.git/blame - configure.ac
reference.conf: Document the common syntax for flags
[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
a6f63a82 7AC_INIT([solanum], [1.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
a6f63a82 16 AC_ERROR([solanum requires a C99 capable compiler])
9258de81
VI
17fi
18
c52df125 19AC_PREFIX_DEFAULT($HOME/ircd)
a5471f24 20AC_CONFIG_MACRO_DIR([m4])
212380e3 21AC_CONFIG_HEADER(include/setup.h)
3f97a5c5 22
3c27591e
AC
23AC_CONFIG_SUBDIRS([librb])
24AC_CONFIG_AUX_DIR([libltdl/config])
25
26AM_INIT_AUTOMAKE([subdir-objects])
27AM_SILENT_RULES([yes])
28AM_PROG_AR
29
30LT_INIT([dlopen disable-static])
31LT_CONFIG_LTDL_DIR([libltdl])
32LTDL_INIT
33
34build_ltdl=$with_included_ltdl
35AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"])
36
7585af0f 37if test "$ac_cv_c_compiler_gnu" = yes; then
eec2776c 38 IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall"
212380e3
AC
39fi
40
41dnl If we support -g, use it!
42if test "$ac_cv_prog_cc_g" = yes; then
2a19fc3f 43 IRC_CFLAGS="$IRC_CFLAGS -g"
212380e3
AC
44fi
45
212380e3
AC
46dnl check for /dev/null so we can use it to hold evil fd's
47AC_MSG_CHECKING([for /dev/null])
48if test -c /dev/null ; then
49 AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null])
50 AC_MSG_RESULT(yes)
51else
52 AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null])
53 AC_MSG_RESULT(no - using devnull.log)
54fi
55
56dnl jdc -- If CFLAGS is defined, best use it everywhere...
57dnl NOTE: jv says it must be added to the *END*, because things like
58dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid.
59if test ! -z "$CFLAGS"; then
60 IRC_CFLAGS="$IRC_CFLAGS $CFLAGS"
61fi
62
63AC_ISC_POSIX
64AC_C_INLINE
212380e3
AC
65AC_PROG_MAKE_SET
66AC_PROG_INSTALL
67AC_PATH_PROG(RM, rm)
68AC_PATH_PROG(CP, cp)
69AC_PATH_PROG(MV, mv)
70AC_PATH_PROG(LN, ln)
71AC_PATH_PROG(SED, sed)
72AC_PATH_PROG(AR, ar)
73AC_PATH_PROG(LD, ld)
74AC_PATH_PROG(RANLIB, ranlib)
75AC_PATH_PROG(TOUCH, touch)
76
77AC_PROG_YACC
78
79dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found
80if test "$YACC" = "yacc" -a -z "`which $YACC 2>/dev/null`"; then
81 AC_MSG_ERROR([could not locate a suitable parser generator; install bison, yacc, or byacc])
82fi
83
84AC_PROG_LEX
85
86if test "$LEX" = ":"; then
87 AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.])
88fi
89
c74836dc 90AC_ARG_ENABLE([fhs-paths],
6929cd01 91 [AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])],
c74836dc
NPB
92 [],
93 [dnl detect if the user appears to want --enable-fhs-paths
94 AS_IF([test "$libexecdir" = '${exec_prefix}/libexec' && \
95 test "$localstatedir" = '${prefix}/var' && \
96 test "$libdir" = '${exec_prefix}/lib'],
97 [enable_fhs_paths=no],
98 [enable_fhs_paths=yes])
99 ])
212380e3 100dnl use directory structure of cached as default (hack)
c74836dc
NPB
101AS_IF([test "x$enable_fhs_paths" = "xyes"],
102 [dnl Avoid name collisions.
103 pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}'
104 rundir=${rundir-'${prefix}/run'}
105 pkgrundir='${rundir}/${PACKAGE_TARNAME}'
80a0125f
AC
106 pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}'
107 AC_DEFINE([ENABLE_FHS_PATHS], [1], [Uncomment if FHS pathnames are enabled])],
c74836dc
NPB
108 [libexecdir='${bindir}'
109 pkglibexecdir='${libexecdir}'
110 rundir='${sysconfdir}'
111 pkgrundir='${rundir}'
212380e3 112 localstatedir='${prefix}'
c74836dc
NPB
113 pkglocalstatedir='${sysconfdir}'])
114pkglibdir='${libdir}/${PACKAGE_TARNAME}'
115AC_SUBST([pkglibdir])
116AC_SUBST([rundir])
117AC_SUBST([pkgrundir])
118AC_SUBST([pkglocalstatedir])
1870e06a 119AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]])
c74836dc
NPB
120AC_SUBST([pkglibexecdir])
121AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live])
212380e3
AC
122
123dnl Checks for header files.
124AC_HEADER_STDC
07554369 125AC_HEADER_STDBOOL
212380e3
AC
126
127AC_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])
128
129dnl Stuff that the memory manager (imalloc) depends on
130dnl ==================================================
131
132AC_C_CONST
133if test "$ac_cv_header_machine_endian_h" = "no" ; then
134 AC_C_BIGENDIAN
135fi
136AC_TYPE_PID_T
137AC_TYPE_SIZE_T
138AC_CHECK_SIZEOF(short)
139AC_CHECK_SIZEOF(int)
140AC_CHECK_SIZEOF(long)
141AC_CHECK_SIZEOF(long long)
142
212380e3
AC
143dnl Networking Functions
144dnl ====================
145
b45a2f35 146AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])])
212380e3
AC
147
148dnl SunOS/Solaris required libnsl for inet_ntoa()
149if test x"$SUN" = xyes; then
150 AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
151fi
152
212380e3
AC
153AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
154
155CRYPT_LIB=$ac_cv_search_crypt
156
157if test "$CRYPT_LIB" = "none required"; then
158 unset CRYPT_LIB
159elif test "$CRYPT_LIB" = no; then
160 unset CRYPT_LIB
161fi
162
163AC_SUBST(CRYPT_LIB)
164
212380e3
AC
165AC_C_BIGENDIAN
166
167dnl Check for stdarg.h - if we can't find it, halt configure
a6f63a82 168AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - solanum will not compile without it **])])
212380e3
AC
169AC_CHECK_FUNCS([strlcat strlcpy])
170
2e45f5d8
MU
171AC_TYPE_INT16_T
172AC_TYPE_INT32_T
212380e3
AC
173
174AC_CHECK_TYPE([sa_family_t], [],
175[AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])],
176[[#include <sys/types.h>
177#include <sys/socket.h>]])
178
179AC_CHECK_TYPES([uintptr_t])
180
181dnl check for various functions...
5203cba5 182AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ])
212380e3
AC
183
184AC_FUNC_ALLOCA
185
186dnl Specialized functions checks
187dnl ============================
188
b79edd3e 189dnl check for nanosleep
212380e3
AC
190AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
191 LIBS="${LIBS} -lrt",
192 [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
193 )])])
194if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
b79edd3e 195then
212380e3 196 AC_MSG_RESULT("nanosleep not found..using select for delay")
b79edd3e 197else
212380e3
AC
198 AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
199fi
200
201dnl OpenSSL support
202AC_MSG_CHECKING(for OpenSSL)
203AC_ARG_ENABLE(openssl,
204[AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
205AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
206[cf_enable_openssl=$enableval],
207[cf_enable_openssl="auto"])
208
209if test "$cf_enable_openssl" != "no" ; then
210 cf_openssl_basedir=""
211 if test "$cf_enable_openssl" != "auto" &&
212 test "$cf_enable_openssl" != "yes" ; then
213 dnl Support for --enable-openssl=/some/place
214 cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`"
215 else
216 dnl Do the auto-probe here. Check some common directory paths.
217 for dirs in /usr/local/ssl /usr/pkg /usr/local \
218 /usr/local/openssl ; do
219 if test -f "${dirs}/include/openssl/opensslv.h" ; then
220 cf_openssl_basedir="${dirs}"
221 break
222 fi
223 done
224 unset dirs
225 fi
226 dnl Now check cf_openssl_found to see if we found anything.
227 if test ! -z "$cf_openssl_basedir"; then
228 if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
229 SSL_INCLUDES="-I${cf_openssl_basedir}/include"
230 SSL_LIBS="-L${cf_openssl_basedir}/lib"
231 else
232 dnl OpenSSL wasn't found in the directory specified. Naughty
233 dnl administrator...
234 cf_openssl_basedir=""
235 fi
236 else
237 dnl Check for stock FreeBSD 4.x and 5.x systems, since their files
238 dnl are in /usr/include and /usr/lib. In this case, we don't want to
239 dnl change INCLUDES or LIBS, but still want to enable OpenSSL.
240 dnl We can't do this check above, because some people want two versions
241 dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl)
242 dnl and they want /usr/local/ssl to have preference.
243 if test -f "/usr/include/openssl/opensslv.h" ; then
244 cf_openssl_basedir="/usr"
245 fi
246 fi
247
248 dnl If we have a basedir defined, then everything is okay. Otherwise,
249 dnl we have a problem.
250 if test ! -z "$cf_openssl_basedir"; then
251 AC_MSG_RESULT($cf_openssl_basedir)
252 cf_enable_openssl="yes"
253 else
254 AC_MSG_RESULT([not found. Specify a correct path?])
255 cf_enable_openssl="no"
256 fi
257 unset cf_openssl_basedir
258else
259 dnl If --disable-openssl was specified
260 AC_MSG_RESULT(disabled)
261fi
262
263save_CPPFLAGS="$CPPFLAGS"
264CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
265save_LIBS="$LIBS"
266LIBS="$LIBS $SSL_LIBS"
267if test "$cf_enable_openssl" != no; then
268 dnl Check OpenSSL version (must be 0.9.6 or above!)
269 AC_MSG_CHECKING(for OpenSSL 0.9.6 or above)
270 AC_RUN_IFELSE(
d5ef3fd3 271 [AC_LANG_PROGRAM(
212380e3
AC
272 [#include <openssl/opensslv.h>
273 #include <stdlib.h>],
274 [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
d5ef3fd3 275 exit(0); else exit(1);]])],
212380e3
AC
276 cf_openssl_version_ok=yes,
277 cf_openssl_version_ok=no,
278 cf_openssl_version_ok=no)
279
280 if test "$cf_openssl_version_ok" = yes; then
281 AC_MSG_RESULT(found)
282
283 dnl Work around pmake/gmake conditional incompatibilities
284 AC_SUBST(ENCSPEED, encspeed)
b79edd3e 285
212380e3
AC
286 dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
287 CPPFLAGS="$CPPFLAGS $SSL_LIBS"
288 AC_CHECK_LIB(crypto, RSA_free)
289 SSL_LIBS="$SSL_LIBS -lcrypto"
290 SSL_SRCS_ENABLE='$(SSL_SRCS)'
291 else
292 AC_MSG_RESULT(no - OpenSSL support disabled)
293 fi
294fi
295
296CPPFLAGS="$save_CPPFLAGS"
297LIBS="$save_LIBS"
298
299dnl End OpenSSL detection
300
301
302dnl Specialized functions and libraries
303dnl ===================================
304
1905ab5f
EK
305AC_ARG_ENABLE(hyperscan,
306AC_HELP_STRING([--disable-hyperscan],[Disable hyperscan support]),
307[hyperscan=$enableval],[hyperscan=yes])
308
9fe8bccb
EK
309AS_IF([test "$hyperscan" = yes], [
310 save_CPPFLAGS="$CPPFLAGS"
311 save_LIBS="$LIBS"
312 PKG_CHECK_MODULES([HS], [libhs >= 4], [], [hyperscan=no])
313 CPPFLAGS="$CPPFLAGS $HS_CFLAGS"
314 LIBS="$LIBS $HS_LIBS"
315 AC_CHECK_HEADER([hs_common.h], [], [hyperscan=no])
316 AC_CHECK_FUNC([hs_scan], [], [hyperscan=no])
317])
318
319AS_IF([test "$hyperscan" = no], [
320 CPPFLAGS="$save_CPPFLAGS"
321 LIBS="$save_LIBS"
322])
323
324AM_CONDITIONAL([HAVE_HYPERSCAN], [test "$hyperscan" = "yes"])
1905ab5f 325
1905ab5f 326
c6ad9b0c
SA
327AC_ARG_WITH(sctp-path,
328AC_HELP_STRING([--with-sctp-path=DIR],[Path to libsctp.so for SCTP support.]),
329[LIBS="$LIBS -L$withval"],)
330
331AC_ARG_ENABLE(sctp,
332AC_HELP_STRING([--disable-sctp],[Disable SCTP support]),
333[sctp=$enableval],[sctp=yes])
334
335if test "$sctp" = yes; then
336
337AC_CHECK_HEADER(netinet/sctp.h, [
338 AC_CHECK_LIB(sctp, sctp_bindx,
339 [
340 AC_SUBST(LIBSCTP_LD, -lsctp)
341 AC_DEFINE(HAVE_LIBSCTP, 1, [Define to 1 if libsctp (-lsctp) is available.])
342 ], sctp=no)
343], sctp=no)
344
345fi
346
cf1001a7
LS
347dnl Check for shared sqlite
348dnl ======================
31f9d9b2 349PKG_CHECK_MODULES(SQLITE, [sqlite3], [], AC_ERROR([sqlite3 is required]))
74ab6be0 350
a5471f24
LS
351AC_SUBST(SQLITE_LD, "$SQLITE_LIBS")
352AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS")
cf1001a7 353
212380e3 354dnl **********************************************************************
634d4aad 355dnl Check for --with-confdir [deprecated, use --sysconfdir instead]
212380e3
AC
356dnl **********************************************************************
357
634d4aad
NPB
358AC_ARG_WITH([confdir],
359 [AC_HELP_STRING([--with-confdir=DIR],
360 [Directory to install config files [deprecated, use --sysconfdir instead].])],
361 [ sysconfdir=`echo $withval | sed 's/\/$//'` ],
362 [ confdir='${sysconfdir}' ])
363AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.])
212380e3
AC
364
365dnl **********************************************************************
366dnl Check for --with-logdir
367dnl **********************************************************************
368
369AC_MSG_CHECKING([whether to modify logdir])
b79edd3e 370AC_ARG_WITH(logdir,
212380e3
AC
371AC_HELP_STRING([--with-logdir=DIR],
372 [Directory where to write logfiles.]),
373 [ logdir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
374 AC_MSG_RESULT(yes)],
375 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
376 [logdir='${localstatedir}/log/${PACKAGE_TARNAME}'],
377 [logdir='${prefix}/logs'])
378 AC_MSG_RESULT(no)])
379AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.])
380AC_SUBST_DIR([logdir])
212380e3
AC
381
382dnl **********************************************************************
383dnl Check for --with-helpdir
384dnl **********************************************************************
385
386AC_MSG_CHECKING([whether to modify helpdir])
b79edd3e 387AC_ARG_WITH(helpdir,
212380e3
AC
388AC_HELP_STRING([--with-helpdir=DIR],
389 [Directory to install help files.]),
390 [ helpdir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
391 AC_MSG_RESULT(yes) ],
392 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
393 [helpdir='${datadir}/${PACKAGE_TARNAME}/help'],
394 [helpdir='${prefix}/help'])
395 AC_MSG_RESULT(no) ])
396AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.])
397AC_SUBST_DIR([helpdir])
212380e3
AC
398
399dnl **********************************************************************
400dnl Check for --with-moduledir
401dnl **********************************************************************
402
403AC_MSG_CHECKING([whether to modify moduledir])
b79edd3e 404AC_ARG_WITH(moduledir,
c74836dc
NPB
405 [AC_HELP_STRING([--with-moduledir=DIR],
406 [Directory to install modules.])],
212380e3 407 [ moduledir=`echo $withval | sed 's/\/$//'`
c74836dc
NPB
408 AC_MSG_RESULT(yes)],
409 [ AS_IF([test "x$enable_fhs_paths" = "xyes"],
410 [moduledir='${pkglibdir}/modules'],
411 [moduledir='${prefix}/modules'])
212380e3 412 AC_MSG_RESULT(no)
c74836dc
NPB
413 ])
414AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
415AC_SUBST_DIR([moduledir])
416
417dnl Check for --with-rundir
418
419AC_MSG_CHECKING([whether or modify rundir])
420AC_ARG_WITH([rundir],
421 [AC_HELP_STRING([--with-rundir=DIR],
422 [Directory in which to store pidfile.])],
423 [AC_MSG_RESULT([yes])
424 rundir=`echo $withval | sed 's/\/$//'`],
425 [AC_MSG_RESULT([no])
426 AS_IF([test "x$enable_fhs_paths" = "xyes"],
427 [rundir='${prefix}/run'],
428 [rundir='${sysconfdir}'])])
429AC_SUBST([rundir])
430AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.])
431
432dnl Installed utility program prefixes (does not affect binaries
433dnl installed into pkglibexecdir)
434AC_MSG_CHECKING([for program prefix])
435AC_ARG_WITH([program-prefix],
436 [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])],
437 [test "x$with_program_prefix" = "xno" && with_program_prefix=],
438 [with_program_prefix=])
439AC_MSG_RESULT(["$with_program_prefix"])
440PROGRAM_PREFIX="$with_program_prefix"
441AC_SUBST([PROGRAM_PREFIX])
442AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.])
212380e3 443
b6d0720c
AC
444dnl **********************************************************************
445dnl Branding
446dnl **********************************************************************
447
448AC_MSG_CHECKING([whether custom branding is requested])
449AC_ARG_WITH(custom-branding,
450AC_HELP_STRING([--with-custom-branding=NAME],
451 [Custom branding name.]),
452 [BRANDING_NAME=$withval
453 AC_MSG_RESULT([yes])],
454 [BRANDING_NAME=$PACKAGE_NAME
455 AC_MSG_RESULT([no])]
456)
457
458AC_MSG_CHECKING([whether a custom version is requested])
459AC_ARG_WITH(custom-version,
460AC_HELP_STRING([--with-custom-version=NAME],
461 [Custom version branding.]),
462 [BRANDING_VERSION=$withval
463 AC_MSG_RESULT([yes])],
464 [BRANDING_VERSION=$PACKAGE_VERSION
465 AC_MSG_RESULT([no])]
466)
467
468AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.])
469AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.])
470
f5493691
AC
471if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then
472 AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.])
473fi
474
0e99e13a
EM
475dnl **********************************************************************
476dnl Enable oper chghost
477dnl **********************************************************************
478
479AC_ARG_ENABLE(oper-chghost,
cca418c9 480AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]),
0e99e13a
EM
481[operchghost=$enableval],[operchghost=no])
482
483if test "$operchghost" = yes; then
484 AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.])
485fi
486
212380e3
AC
487dnl Debug-related options
488dnl =====================
489
490AC_ARG_ENABLE(assert,
491AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]),
492[assert=$enableval], [assert=no])
493
494if test "$assert" = no; then
495 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
496elif test "$assert" = soft; then
497 AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.])
498 AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.])
499elif test "$assert" = yes; then
500 assert = "hard";
501fi
502
212380e3
AC
503AC_MSG_CHECKING(if you want to do a profile build)
504AC_ARG_ENABLE(profile,
505AC_HELP_STRING([--enable-profile],[Enable profiling]),
506[profile=$enableval], [profile=no])
507
508if test "$profile" = yes; then
509 if test "$ac_cv_c_compiler_gnu" = yes; then
510 IRC_CFLAGS="$IRC_CFLAGS -pg"
511 AC_MSG_RESULT([yes, adding -pg])
a6f63a82 512 AC_DEFINE(SOLANUM_PROFILE, 1, [Define this if you are profiling.])
212380e3
AC
513 else
514 AC_MSG_RESULT([no, profile builds only work with gcc])
515 fi
516else
517 AC_MSG_RESULT(no)
518fi
519
190a5970
AC
520AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.])
521AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.])
522AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.])
523AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.])
524AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.])
525AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.])
526AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.])
527AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.])
528AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.])
529AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.])
530AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.])
531AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.])
532AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.])
533AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.])
534AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.])
535AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.])
212380e3
AC
536
537AC_ARG_WITH(nicklen,
b225bf93 538AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]),
212380e3 539[
b79edd3e 540 if ! expr "$withval" + 0 >/dev/null 2>&1; then
f173c7d8 541 AC_ERROR([NICKLEN must be a numeric value])
b79edd3e 542 fi
ca8ff483 543 if test $withval -gt 50; then
212380e3
AC
544 NICKLEN=50
545 AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50])
ca8ff483
JT
546 elif test $withval -lt 9; then
547 NICKLEN=9
548 AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9])
212380e3
AC
549 else
550 NICKLEN="$withval"
551 fi
b225bf93 552], [NICKLEN=31])
212380e3 553
b79edd3e 554AC_ARG_WITH(topiclen,
212380e3
AC
555AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]),
556[
173a2f4d 557 if test $withval -gt 390; then
212380e3
AC
558 TOPICLEN=390
559 AC_MSG_WARN([TOPICLEN has a hard limit of 390. Setting TOPICLEN=390])
560 else
561 TOPICLEN=$withval
562 fi
563], [TOPICLEN=390])
564
212380e3
AC
565AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)])
566AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length])
212380e3 567
6d174635
EK
568
569AC_ARG_WITH(asan,
570AC_HELP_STRING([--with-asan],[Build with Address Sanitizer]),
571[
572 CFLAGS="$CFLAGS -fsanitize=address"
30a14c58 573 LDFLAGS="$LDFLAGS -fsanitize=address"
6d174635
EK
574])
575
34dbd2d4 576# rpath, for finding librb.so at run time
794816af
JT
577hold_ldflags=$LDFLAGS
578AC_MSG_CHECKING(for the ld -rpath flag)
579LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}"
d5ef3fd3 580AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no)
794816af
JT
581LDFLAGS=$hold_ldflags
582AC_MSG_RESULT($found)
583if test "$found" = yes; then
584 LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}"
585fi
586
212380e3
AC
587# This must be down here, or it will mess up checks like the ones
588# for -Wl,-export-dynamic
589# -- jilles
97199fb3 590CWARNS=""
212380e3
AC
591AC_ARG_ENABLE(warnings,
592AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]),
593[
594IRC_CFLAGS="$IRC_CFLAGS -O0"
595CFLAGS="$IRC_CFLAGS"
596
a6f63a82
EK
597SOLANUM_C_GCC_TRY_FLAGS([-Wall], solanum_cv_c_gcc_w_all)
598SOLANUM_C_GCC_TRY_FLAGS([-Wpointer-arith], solanum_cv_c_gcc_w_pointer_arith)
599SOLANUM_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], solanum_cv_c_gcc_w_implicit)
600SOLANUM_C_GCC_TRY_FLAGS([-Wcast-align], solanum_cv_c_gcc_w_cast_align)
601SOLANUM_C_GCC_TRY_FLAGS([-Wcast-qual], solanum_cv_c_gcc_w_cast_qual)
602SOLANUM_C_GCC_TRY_FLAGS([-Wwrite-strings], solanum_cv_c_gcc_w_write_strings)
603SOLANUM_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], solanum_cv_c_gcc_w_error_implicit_function_declaration)
604SOLANUM_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], solanum_cv_c_gcc_prototypes)
605SOLANUM_C_GCC_TRY_FLAGS([-Wparentheses], solanum_cv_c_gcc_parentheses)
606SOLANUM_C_GCC_TRY_FLAGS([-W -Wno-unused], solanum_cv_c_gcc_w)
607SOLANUM_C_GCC_TRY_FLAGS([-Wextra], solanum_cv_c_gcc_w_extra)
608SOLANUM_C_GCC_TRY_FLAGS([-Wshadow], solanum_cv_c_gcc_w_shadow)
609SOLANUM_C_GCC_TRY_FLAGS([-Wmissing-noreturn], solanum_cv_c_gcc_w_missing_noreturn)
610SOLANUM_C_GCC_TRY_FLAGS([-Wundef], solanum_cv_c_gcc_w_undef)
611SOLANUM_C_GCC_TRY_FLAGS([-Wpacked], solanum_cv_c_gcc_w_packed)
612SOLANUM_C_GCC_TRY_FLAGS([-Wnested-externs], solanum_cv_c_gcc_w_nested_externs)
613SOLANUM_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-value -Wunused-variable], solanum_cv_c_gcc_w_unused)
614SOLANUM_C_GCC_TRY_FLAGS([-Wredundant-decls], solanum_cv_c_gcc_w_redundant_decls)
615SOLANUM_C_GCC_TRY_FLAGS([-Wfloat-equal], solanum_cv_c_gcc_w_float_equal)
616SOLANUM_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], solanum_cv_c_gcc_w_format)
212380e3
AC
617
618IRC_CFLAGS="$CFLAGS"
619],[])
620
97199fb3
JT
621IRC_CFLAGS="$IRC_CFLAGS $CWARNS"
622
212380e3
AC
623AC_SUBST(MODULES_LIBS)
624AC_SUBST(MOD_TARGET)
625
626AC_SUBST(SSL_SRCS_ENABLE)
627AC_SUBST(SSL_INCLUDES)
628AC_SUBST(SSL_LIBS)
629
630AC_SUBST(LDFLAGS)
631AC_SUBST(PICFLAGS)
632AC_SUBST(IRC_CFLAGS)
633AC_SUBST(SEDOBJ)
634
635
b79edd3e 636if test "$prefix" = "NONE"; then
212380e3 637 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.])
212380e3 638else
8f0c3422 639 dnl Strip trailing slashes to prevent a path of '//'
212380e3
AC
640 prefix=`echo $prefix | sed 's/\/$//'`
641 AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.])
212380e3
AC
642fi
643
644AC_CONFIG_FILES( \
645 Makefile \
0d73e7db 646 authd/Makefile \
734ce253 647 bandb/Makefile \
d261b578 648 ssld/Makefile \
caebeeca 649 wsockd/Makefile \
212380e3 650 extensions/Makefile \
46fded53 651 ircd/Makefile \
212380e3 652 modules/Makefile \
8fe5ef5a 653 tests/Makefile \
212380e3 654 tools/Makefile \
14048b96 655 tools/genssl \
212380e3
AC
656 doc/Makefile \
657 help/Makefile \
658)
14048b96 659AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl])
212380e3
AC
660
661AC_OUTPUT
662
663if test "$cf_openssl_version_ok" = yes; then
664 openssl="yes"
665else
666 openssl="no"
667fi
668
212380e3 669echo "
b6d0720c 670Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}:
212380e3
AC
671 Install directory : $prefix
672
212380e3 673 OpenSSL : $openssl
c6ad9b0c 674 SCTP : $sctp
212380e3
AC
675
676 Nickname length : $NICKLEN
677 Topic length : $TOPICLEN
678
b6d0720c 679Use (g)make to compile $BRANDING_NAME, then (g)make install to install it.
212380e3 680"