Blob


1 #
2 # ngIRCd -- The Next Generation IRC Daemon
3 # Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
9 # Please read the file COPYING, README and AUTHORS for more information.
10 #
12 define(VERSION_ID,esyscmd([
13 V=`git describe 2>/dev/null | sed -e 's/rel-//g' | sed -e 's/-/~/'`;
14 [ -z "$V" -a -r configure ] \
15 && V=`grep "PACKAGE_STRING=" configure | cut -d"'" -f2 | cut -d' ' -f2`
16 ( [ -n "$V" ] && echo "$V" || echo "??" ) | tr -d '\n';
17 ]))
19 m4_ifdef([AM_SILENT_RULES],
20 [m4_define([ng_color_tests], [color-tests])],
21 [m4_define([ng_color_tests], [])])
23 # -- Initialisation --
25 AC_PREREQ([2.61])
26 AC_INIT([ngIRCd],[VERSION_ID],[ngircd-ml@ngircd.barton.de],[ngircd],[http://ngircd.barton.de/])
28 AC_CONFIG_SRCDIR([src/ngircd/ngircd.c])
29 AC_CONFIG_HEADER([src/config.h])
30 AC_CANONICAL_HOST
32 AM_INIT_AUTOMAKE([-Wall 1.10 foreign ]ng_color_tests)
34 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
36 # -- Templates for config.h --
38 AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
39 AH_TEMPLATE([HAVE_sockaddr_in_len], [Define if sockaddr_in.sin_len exists])
40 AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
41 AH_TEMPLATE([ICONV], [Define if libiconv can be used, e.g. for CHARCONV])
42 AH_TEMPLATE([IDENTAUTH], [Define if the server should do IDENT requests])
43 AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol should be used])
44 AH_TEMPLATE([PAM], [Define if PAM should be used])
45 AH_TEMPLATE([SNIFFER], [Define if IRC sniffer should be enabled])
46 AH_TEMPLATE([STRICT_RFC], [Define if ngIRCd should behave strict RFC compliant])
47 AH_TEMPLATE([SYSLOG], [Define if syslog should be used for logging])
48 AH_TEMPLATE([TCPWRAP], [Define if TCP wrappers should be used])
49 AH_TEMPLATE([WANT_IPV6], [Define if IPV6 protocol should be enabled])
50 AH_TEMPLATE([ZLIB], [Define if zlib compression should be enabled])
52 AH_TEMPLATE([HOST_OS], [Target operating system name])
53 AH_TEMPLATE([HOST_VENDOR], [Target system vendor])
54 AH_TEMPLATE([HOST_CPU], [Target CPU name])
56 # -- C Compiler --
58 AC_PROG_CC
59 AC_PROG_CC_STDC
61 # -- Helper programs --
63 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
65 AC_PROG_AWK
66 AC_PROG_INSTALL
67 AC_PROG_LN_S
68 AC_PROG_MAKE_SET
69 AC_PROG_MKDIR_P
70 AC_PROG_RANLIB
72 # -- Compiler Features --
74 AC_C_CONST
75 AC_C_INLINE
76 __ng_PROTOTYPES__
78 # -- Function Definitions --
80 AC_DEFUN([GCC_STACK_PROTECT_CC],[
81 ssp_cc=yes
82 # Use -fstack-protector-all for the test to enfoce the use of the
83 # guard variable
84 AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector])
85 ssp_old_cflags="$CFLAGS"
86 CFLAGS="$CFLAGS -fstack-protector-all"
87 AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],[],[ssp_cc=no])
88 echo $ssp_cc
89 CFLAGS="$ssp_old_cflags"
90 if test "X$ssp_cc" = "Xyes"; then
91 CFLAGS="$CFLAGS -fstack-protector"
92 AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.])
93 fi
94 ])
96 AC_DEFUN([WORKING_GETADDRINFO],[
97 AC_CHECK_FUNCS([getaddrinfo],[
98 AC_MSG_CHECKING([whether getaddrinfo() works])
99 AC_RUN_IFELSE([AC_LANG_SOURCE([[
100 #include <stdio.h>
101 #include <sys/types.h>
102 #include <sys/socket.h>
103 #include <netdb.h>
104 int
105 main(int argc, char **argv)
107 struct addrinfo hints, *ai;
108 memset(&hints, 0, sizeof(hints));
109 hints.ai_flags = AI_PASSIVE;
110 hints.ai_socktype = SOCK_STREAM;
111 hints.ai_family = PF_UNSPEC;
112 if(getaddrinfo(NULL, "0", &hints, &ai) != 0)
113 return 1;
114 return 0;
116 ]])],[
117 AC_DEFINE([HAVE_WORKING_GETADDRINFO], 1, [getaddrinfo(0)])
118 AC_MSG_RESULT(yes)
119 ],[
120 AC_MSG_RESULT(no)
121 ],[
122 AC_MSG_RESULT(no)
123 ])
124 ])
125 ])
127 # -- Hard coded system and compiler dependencies/features/options ... --
129 if test "$GCC" = "yes"; then
130 # We are using the GNU C compiler. Good!
131 CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes"
133 GCC_STACK_PROTECT_CC
134 fi
136 case "$host_os" in
137 hpux*)
138 # This is HP/UX, we need to define _XOPEN_SOURCE_EXTENDED
139 # (tested with HP/UX 11.11)
140 CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
141 ;;
142 esac
144 # Add additional CFLAGS, eventually specified on the command line:
145 test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD"
147 CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"' -DDOCDIR='\"\$(docdir)\"'"
149 # -- Headers --
151 AC_HEADER_STDC
152 AC_HEADER_SYS_WAIT
153 AC_HEADER_TIME
155 # Required header files
156 AC_CHECK_HEADERS([ \
157 fcntl.h \
158 netdb.h \
159 netinet/in.h \
160 stdlib.h \
161 string.h \
162 strings.h \
163 sys/socket.h \
164 sys/time.h \
165 sys/types.h \
166 unistd.h \
167 ],,AC_MSG_ERROR([required C header missing!]))
169 # Optional header files
170 AC_CHECK_HEADERS_ONCE([ \
171 arpa/inet.h \
172 inttypes.h \
173 malloc.h \
174 netinet/in_systm.h \
175 netinet/ip.h \
176 stdbool.h \
177 stddef.h \
178 stdint.h \
179 varargs.h \
180 ])
182 # -- Datatypes --
184 AC_MSG_CHECKING(whether socklen_t exists)
185 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
186 #include <sys/types.h>
187 #include <sys/socket.h>
188 ]],[[
189 socklen_t a, b;
190 a = 2; b = 4; a += b;
191 ]])],[
192 AC_DEFINE(HAVE_socklen_t) AC_MSG_RESULT(yes)
193 ],[
194 AC_MSG_RESULT(no)
195 ])
197 AC_TYPE_PID_T
198 AC_TYPE_SIZE_T
199 AC_TYPE_SSIZE_T
200 AC_TYPE_UID_T
201 AC_TYPE_UINT16_T
202 AC_TYPE_UINT32_T
203 AC_TYPE_UINT8_T
205 AC_CHECK_MEMBER([struct sockaddr_in.sin_len], AC_DEFINE(HAVE_sockaddr_in_len),,
206 [#include <arpa/inet.h>])
208 # -- Libraries --
210 # memmove: A/UX libUTIL
211 AC_SEARCH_LIBS([memmove], [UTIL], [], [
212 AC_MSG_ERROR([unable to find the memmove() function])
213 ])
214 # gethostbyname: Solaris libnsl
215 AC_SEARCH_LIBS([gethostbyname], [bind nsl network], [], [
216 AC_MSG_ERROR([unable to find the gethostbyname() function])
217 ])
218 # bind: SVR4 libsocket
219 AC_SEARCH_LIBS([bind], [socket network], [], [
220 AC_MSG_ERROR([unable to find the bind() function])
221 ])
223 # -- Functions --
225 AC_FUNC_FORK
226 AC_FUNC_STRFTIME
228 # Required functions
229 AC_CHECK_FUNCS([ \
230 alarm \
231 dup2 \
232 endpwent \
233 gethostbyaddr \
234 gethostbyname \
235 gethostname \
236 gettimeofday \
237 inet_ntoa \
238 memmove \
239 memset \
240 setsid \
241 socket \
242 strcasecmp \
243 strchr \
244 strcspn \
245 strerror \
246 strncasecmp \
247 strrchr \
248 strspn \
249 strstr \
250 ],,
251 AC_MSG_ERROR([required function missing!]))
253 # Optional functions
254 AC_CHECK_FUNCS_ONCE([
255 arc4random \
256 arc4random_stir \
257 gai_strerror \
258 getnameinfo \
259 inet_aton \
260 setgroups \
261 sigaction \
262 sigprocmask \
263 snprintf \
264 strdup \
265 strlcat \
266 strlcpy \
267 strndup \
268 strsignal \
269 strtok_r \
270 unsetenv \
271 vsnprintf \
272 waitpid \
273 ])
275 WORKING_GETADDRINFO
277 # -- Configuration options --
279 # use syslog?
281 x_syslog_on=no
282 AC_ARG_WITH(syslog,
283 AS_HELP_STRING([--without-syslog],
284 [disable syslog (autodetected by default)]),
285 [ if test "$withval" != "no"; then
286 if test "$withval" != "yes"; then
287 CFLAGS="-I$withval/include $CFLAGS"
288 CPPFLAGS="-I$withval/include $CPPFLAGS"
289 LDFLAGS="-L$withval/lib $LDFLAGS"
290 fi
291 AC_SEARCH_LIBS([syslog], [be], [x_syslog_on=yes], [
292 AC_MSG_ERROR([Can't enable syslog!])
293 ])
294 fi
295 ],
296 [ AC_SEARCH_LIBS([syslog], [be], [x_syslog_on=yes])
299 if test "$x_syslog_on" = "yes"; then
300 AC_DEFINE(SYSLOG, 1)
301 AC_CHECK_HEADERS(syslog.h,,AC_MSG_ERROR([required C header missing!]))
302 fi
304 # use zlib compression?
306 x_zlib_on=no
307 AC_ARG_WITH(zlib,
308 AS_HELP_STRING([--without-zlib],
309 [disable zlib compression (autodetected by default)]),
310 [ if test "$withval" != "no"; then
311 if test "$withval" != "yes"; then
312 CFLAGS="-I$withval/include $CFLAGS"
313 CPPFLAGS="-I$withval/include $CPPFLAGS"
314 LDFLAGS="-L$withval/lib $LDFLAGS"
315 fi
316 AC_CHECK_LIB(z, deflate)
317 AC_CHECK_FUNCS(deflate, x_zlib_on=yes,
318 AC_MSG_ERROR([Can't enable zlib!])
320 fi
321 ],
322 [ AC_CHECK_LIB(z, deflate)
323 AC_CHECK_FUNCS(deflate, x_zlib_on=yes)
326 if test "$x_zlib_on" = "yes"; then
327 AC_DEFINE(ZLIB, 1)
328 AC_CHECK_HEADERS(zlib.h,,AC_MSG_ERROR([required C header missing!]))
329 fi
331 # detect which IO API to use:
333 x_io_backend=none
335 AC_ARG_WITH(select,
336 AS_HELP_STRING([--without-select],
337 [disable select IO support (autodetected by default)]),
338 [ if test "$withval" != "no"; then
339 if test "$withval" != "yes"; then
340 CFLAGS="-I$withval/include $CFLAGS"
341 CPPFLAGS="-I$withval/include $CPPFLAGS"
342 LDFLAGS="-L$withval/lib $LDFLAGS"
343 fi
344 AC_CHECK_FUNCS(select, x_io_select=yes,
345 AC_MSG_ERROR([Can't enable select IO support!])
347 fi
348 ],
350 AC_CHECK_FUNCS(select, x_io_select=yes)
354 AC_ARG_WITH(poll,
355 AS_HELP_STRING([--without-poll],
356 [disable poll support (autodetected by default)]),
357 [ if test "$withval" != "no"; then
358 if test "$withval" != "yes"; then
359 CFLAGS="-I$withval/include $CFLAGS"
360 CPPFLAGS="-I$withval/include $CPPFLAGS"
361 LDFLAGS="-L$withval/lib $LDFLAGS"
362 fi
363 AC_CHECK_FUNCS(poll, [
364 AC_CHECK_HEADERS(poll.h,
365 x_io_backend=poll\(\),
366 AC_MSG_ERROR(
367 [Can't enable poll IO support!])
369 ], [
370 AC_MSG_ERROR([Can't enable poll IO support!])
371 ])
372 fi
373 ],
375 AC_CHECK_FUNCS(poll, [
376 AC_CHECK_HEADERS(poll.h, x_io_backend=poll\(\))
377 ])
381 AC_ARG_WITH(devpoll,
382 AS_HELP_STRING([--without-devpoll],
383 [disable /dev/poll IO support (autodetected by default)]),
384 [ if test "$withval" != "no"; then
385 if test "$withval" != "yes"; then
386 CFLAGS="-I$withval/include $CFLAGS"
387 CPPFLAGS="-I$withval/include $CPPFLAGS"
388 LDFLAGS="-L$withval/lib $LDFLAGS"
389 fi
391 AC_CHECK_HEADERS(sys/devpoll.h,,AC_MSG_ERROR([required C header missing!]))
392 fi
393 ],
395 AC_CHECK_HEADERS(sys/devpoll.h, x_io_backend=/dev/poll)
399 AC_ARG_WITH(epoll,
400 AS_HELP_STRING([--without-epoll],
401 [disable epoll IO support (autodetected by default)]),
402 [ if test "$withval" != "no"; then
403 if test "$withval" != "yes"; then
404 CFLAGS="-I$withval/include $CFLAGS"
405 CPPFLAGS="-I$withval/include $CPPFLAGS"
406 LDFLAGS="-L$withval/lib $LDFLAGS"
407 fi
408 AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes,
409 AC_MSG_ERROR([Can't enable epoll IO support!])
411 fi
412 ],
414 AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes)
418 AC_ARG_WITH(kqueue,
419 AS_HELP_STRING([--without-kqueue],
420 [disable kqueue IO support (autodetected by default)]),
421 [ if test "$withval" != "no"; then
422 if test "$withval" != "yes"; then
423 CFLAGS="-I$withval/include $CFLAGS"
424 CPPFLAGS="-I$withval/include $CPPFLAGS"
425 LDFLAGS="-L$withval/lib $LDFLAGS"
426 fi
427 AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\),
428 AC_MSG_ERROR([Can't enable kqueue IO support!])
430 fi
431 ],
433 AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\))
437 if test "$x_io_epoll" = "yes" -a "$x_io_select" = "yes"; then
438 # when epoll() and select() are available, we'll use both!
439 x_io_backend="epoll(), select()"
440 else
441 if test "$x_io_epoll" = "yes"; then
442 # we prefere epoll() if it is available
443 x_io_backend="epoll()"
444 else
445 if test "$x_io_select" = "yes" -a "$x_io_backend" = "none"; then
446 # we'll use select, when available and no "better"
447 # interface has been detected ...
448 x_io_backend="select()"
449 fi
450 fi
451 fi
453 if test "$x_io_backend" = "none"; then
454 AC_MSG_ERROR([No useable IO API activated/found!?])
455 fi
457 # use SSL?
459 AC_ARG_WITH(openssl,
460 AS_HELP_STRING([--with-openssl],
461 [enable SSL support using OpenSSL]),
462 [ if test "$withval" != "no"; then
463 if test "$withval" != "yes"; then
464 CFLAGS="-I$withval/include $CFLAGS"
465 CPPFLAGS="-I$withval/include $CPPFLAGS"
466 LDFLAGS="-L$withval/lib $LDFLAGS"
467 fi
468 PKG_CHECK_MODULES([OPENSSL], [libssl libcrypto],
469 [LIBS="$LIBS $OPENSSL_LIBS" CFLAGS="$CFLAGS $OPENSSL_CFLAGS"
470 AC_DEFINE(HAVE_LIBSSL, 1)],
471 [AC_CHECK_LIB(crypto, BIO_s_mem)
472 AC_CHECK_LIB(ssl, SSL_new)]
474 AC_CHECK_FUNCS(SSL_new, x_ssl_openssl=yes,
475 AC_MSG_ERROR([Can't enable openssl])
477 fi
481 AC_ARG_WITH(gnutls,
482 AS_HELP_STRING([--with-gnutls],
483 [enable SSL support using gnutls]),
484 [ if test "$withval" != "no"; then
485 if test "$withval" != "yes"; then
486 CFLAGS="-I$withval/include $CFLAGS"
487 CPPFLAGS="-I$withval/include $CPPFLAGS"
488 LDFLAGS="-L$withval/lib $LDFLAGS"
489 fi
490 AC_CHECK_LIB(gnutls, gnutls_global_init)
491 AC_CHECK_FUNCS(gnutls_global_init, x_ssl_gnutls=yes,
492 AC_MSG_ERROR([Can't enable gnutls])
494 fi
498 x_ssl_lib="no"
499 if test "$x_ssl_gnutls" = "yes"; then
500 if test "$x_ssl_openssl" = "yes";then
501 AC_MSG_ERROR([Cannot enable both gnutls and openssl])
502 fi
503 x_ssl_lib=gnutls
504 fi
505 if test "$x_ssl_openssl" = "yes"; then
506 x_ssl_lib=openssl
507 fi
509 AM_CONDITIONAL(HAVE_SSL, [test $x_ssl_lib != "no"])
511 # use TCP wrappers?
513 x_tcpwrap_on=no
514 AC_ARG_WITH(tcp-wrappers,
515 AS_HELP_STRING([--with-tcp-wrappers],
516 [enable TCP wrappers support]),
517 [ if test "$withval" != "no"; then
518 if test "$withval" != "yes"; then
519 CFLAGS="-I$withval/include $CFLAGS"
520 CPPFLAGS="-I$withval/include $CPPFLAGS"
521 LDFLAGS="-L$withval/lib $LDFLAGS"
522 fi
523 AC_MSG_CHECKING(for hosts_access)
524 saved_LIBS="$LIBS"
525 LIBS="-lwrap $LIBS"
526 LIBS_END="-lwrap $LIBS_END"
527 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
528 #include <sys/types.h>
529 #include <sys/socket.h>
530 #include <tcpd.h>
531 int allow_severity = 0;
532 int deny_severity = 0;
533 ]],[[
534 tcpd_warn("link test");
535 ]])],[
536 AC_MSG_RESULT(yes)
537 AC_DEFINE(TCPWRAP, 1)
538 x_tcpwrap_on=yes
539 ],[
540 AC_MSG_RESULT(no)
541 AC_MSG_ERROR([Can't enable TCP wrappers!])
542 ])
543 LIBS="$saved_LIBS"
544 fi
548 # do IDENT requests using libident?
550 x_identauth_on=no
551 AC_ARG_WITH(ident,
552 AS_HELP_STRING([--with-ident],
553 [enable "IDENT" ("AUTH") protocol support]),
554 [ if test "$withval" != "no"; then
555 if test "$withval" != "yes"; then
556 CFLAGS="-I$withval/include $CFLAGS"
557 CPPFLAGS="-I$withval/include $CPPFLAGS"
558 LDFLAGS="-L$withval/lib $LDFLAGS"
559 fi
560 AC_CHECK_LIB(ident, ident_id)
561 AC_CHECK_FUNCS(ident_id, x_identauth_on=yes,
562 AC_MSG_ERROR([Can't enable IDENT support!])
564 fi
567 if test "$x_identauth_on" = "yes"; then
568 AC_DEFINE(IDENTAUTH, 1)
569 AC_CHECK_HEADERS(ident.h,,AC_MSG_ERROR([required C header missing!]))
570 fi
572 # compile in PAM support?
574 x_pam_on=no
575 AC_ARG_WITH(pam,
576 AS_HELP_STRING([--with-pam],
577 [enable user authentication using PAM]),
578 [ if test "$withval" != "no"; then
579 if test "$withval" != "yes"; then
580 CFLAGS="-I$withval/include $CFLAGS"
581 CPPFLAGS="-I$withval/include $CPPFLAGS"
582 LDFLAGS="-L$withval/lib $LDFLAGS"
583 fi
584 AC_CHECK_LIB(pam, pam_authenticate)
585 AC_CHECK_FUNCS(pam_authenticate, x_pam_on=yes,
586 AC_MSG_ERROR([Can't enable PAM support!])
588 fi
591 if test "$x_pam_on" = "yes"; then
592 AC_DEFINE(PAM, 1)
593 AC_CHECK_HEADERS(security/pam_appl.h,pam_ok=yes)
594 if test "$pam_ok" != "yes"; then
595 AC_CHECK_HEADERS(pam/pam_appl.h,pam_ok=yes,
596 AC_MSG_ERROR([required C header missing!]))
597 fi
598 fi
600 # compile in IRC+ protocol support?
602 x_ircplus_on=yes
603 AC_ARG_ENABLE(ircplus,
604 AS_HELP_STRING([--disable-ircplus],
605 [disable IRC+ protocol]),
606 if test "$enableval" = "no"; then x_ircplus_on=no; fi
608 if test "$x_ircplus_on" = "yes"; then
609 AC_DEFINE(IRCPLUS, 1)
611 # Compile in iconv support?
612 # We only check for it when IRC+ is enabled, because the IRC+ command
613 # CHARCONV is the only function depending on it.
614 x_iconv_on=no
615 AC_ARG_WITH(iconv,
616 AS_HELP_STRING([--with-iconv],
617 [enable character conversion using libiconv]),
618 [ if test "$withval" != "no"; then
619 if test "$withval" != "yes"; then
620 CFLAGS="-I$withval/include $CFLAGS"
621 CPPFLAGS="-I$withval/include $CPPFLAGS"
622 LDFLAGS="-L$withval/lib $LDFLAGS"
623 fi
624 AC_CHECK_LIB(iconv, iconv_open)
625 AC_CHECK_FUNCS(iconv_open, x_iconv_on=yes)
626 if test "$x_iconv_on" != "yes"; then
627 AC_CHECK_LIB(iconv, libiconv_open)
628 AC_CHECK_FUNCS(libiconv_open, x_iconv_on=yes)
629 fi
630 if test "$x_iconv_on" != "yes"; then
631 AC_MSG_ERROR([Can't enable libiconv support!])
632 fi
633 fi ]
635 if test "$x_iconv_on" = "yes"; then
636 AC_DEFINE(ICONV, 1)
637 fi
638 fi
640 # enable support for IPv6?
641 x_ipv6_on=no
642 AC_ARG_ENABLE(ipv6,
643 AS_HELP_STRING([--enable-ipv6],
644 [enable IPv6 protocol support]),
645 if test "$enableval" = "yes"; then x_ipv6_on=yes; fi
647 if test "$x_ipv6_on" = "yes"; then
648 # getaddrinfo() and getnameinfo() are optional when not compiling
649 # with IPv6 support, but are required for IPv6 to work!
650 AC_CHECK_FUNCS([ \
651 getaddrinfo getnameinfo \
652 ],,AC_MSG_ERROR([required function missing for IPv6 support!]))
653 AC_DEFINE(WANT_IPV6, 1)
654 fi
656 # compile in IRC "sniffer"?
658 x_sniffer_on=no; x_debug_on=no
659 AC_ARG_ENABLE(sniffer,
660 AS_HELP_STRING([--enable-sniffer],
661 [enable IRC traffic sniffer (enables debug mode)]),
662 if test "$enableval" = "yes"; then
663 AC_DEFINE(SNIFFER, 1)
664 x_sniffer_on=yes; x_debug_on=yes
665 fi
668 # enable additional debugging code?
670 AC_ARG_ENABLE(debug,
671 AS_HELP_STRING([--enable-debug],
672 [show additional debug output]),
673 if test "$enableval" = "yes"; then x_debug_on=yes; fi
675 if test "$x_debug_on" = "yes"; then
676 AC_DEFINE(DEBUG, 1)
677 test "$GCC" = "yes" && CFLAGS="-pedantic $CFLAGS"
678 AC_CHECK_FUNCS(mtrace)
679 fi
681 # enable "strict RFC rules"?
683 x_strict_rfc_on=no
684 AC_ARG_ENABLE(strict-rfc,
685 AS_HELP_STRING([--enable-strict-rfc],
686 [strict RFC conformance -- may break clients!]),
687 if test "$enableval" = "yes"; then
688 AC_DEFINE(STRICT_RFC, 1)
689 x_strict_rfc_on=yes
690 fi
693 # -- Definitions --
695 AC_DEFINE_UNQUOTED(HOST_CPU, "$host_cpu" )
696 AC_DEFINE_UNQUOTED(HOST_VENDOR, "$host_vendor" )
697 AC_DEFINE_UNQUOTED(HOST_OS, "$host_os" )
699 # Add additional CFLAGS, LDFLAGS and LIBS which were specified on the command
700 # line or by some tests from above, but after running this script. Useful for
701 # adding "-Werror", for example:
702 test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END"
703 test -n "$LDFLAGS_END" && LDFLAGS="$LDFLAGS $LDFLAGS_END"
704 test -n "$LIBS_END" && LIBS="$LIBS $LIBS_END"
706 # -- Generate files --
708 AC_CONFIG_FILES([ \
709 Makefile \
710 contrib/Debian/Makefile \
711 contrib/MacOSX/Makefile \
712 contrib/MacOSX/ngIRCd.pmdoc/Makefile \
713 contrib/MacOSX/ngIRCd.xcodeproj/Makefile \
714 contrib/Makefile \
715 doc/Makefile \
716 doc/src/Makefile \
717 man/Makefile \
718 src/ipaddr/Makefile \
719 src/Makefile \
720 src/ngircd/Makefile \
721 src/portab/Makefile \
722 src/testsuite/Makefile \
723 src/tool/Makefile \
724 ])
726 AC_OUTPUT
728 type dpkg >/dev/null 2>&1
729 if test $? -eq 0; then
730 # Generate debian/ link if the dpkg command exists
731 # (read: if we are running on a debian compatible system)
732 echo "creating Debian-specific links ..."
733 if test ! -f debian/rules -a -f contrib/Debian/rules; then
734 ln -s contrib/Debian debian
735 fi
736 fi
738 # -- Result --
740 echo
741 echo "ngIRCd $PACKAGE_VERSION has been configured with the following options:"
742 echo
744 # Someone please show me a better way :) [borrowed by OpenSSH]
745 B=`eval echo ${bindir}` ; B=`eval echo ${B}`
746 S=`eval echo ${sbindir}` ; S=`eval echo ${S}`
747 C=`eval echo ${sysconfdir}` ; C=`eval echo ${C}`
748 M=`eval echo ${mandir}` ; M=`eval echo ${M}`
749 D=`eval echo ${docdir}` ; D=`eval echo ${D}`
751 echo " Host: ${host}"
752 echo " Compiler: ${CC}"
753 test -n "$CFLAGS" && echo " Compiler flags: ${CFLAGS}"
754 test -n "$CPPFLAGS" && echo " Preprocessor flags: ${CPPFLAGS}"
755 test -n "$LDFLAGS" && echo " Linker flags: ${LDFLAGS}"
756 test -n "$LIBS" && echo " Libraries: ${LIBS}"
757 echo
758 echo " 'ngircd' binary: $S"
759 echo " Configuration file: $C"
760 echo " Manual pages: $M"
761 echo " Documentation: $D"
762 echo
764 echo $ECHO_N " Syslog support: $ECHO_C"
765 test "$x_syslog_on" = "yes" \
766 && echo $ECHO_N "yes $ECHO_C" \
767 || echo $ECHO_N "no $ECHO_C"
768 echo $ECHO_N " Enable debug code: $ECHO_C"
769 test "$x_debug_on" = "yes" \
770 && echo "yes" \
771 || echo "no"
773 echo $ECHO_N " zlib compression: $ECHO_C"
774 test "$x_zlib_on" = "yes" \
775 && echo $ECHO_N "yes $ECHO_C" \
776 || echo $ECHO_N "no $ECHO_C"
777 echo $ECHO_N " IRC sniffer: $ECHO_C"
778 test "$x_sniffer_on" = "yes" \
779 && echo "yes" \
780 || echo "no"
782 echo $ECHO_N " Use TCP Wrappers: $ECHO_C"
783 test "$x_tcpwrap_on" = "yes" \
784 && echo $ECHO_N "yes $ECHO_C" \
785 || echo $ECHO_N "no $ECHO_C"
786 echo $ECHO_N " Strict RFC mode: $ECHO_C"
787 test "$x_strict_rfc_on" = "yes" \
788 && echo "yes" \
789 || echo "no"
791 echo $ECHO_N " IDENT support: $ECHO_C"
792 test "$x_identauth_on" = "yes" \
793 && echo $ECHO_N "yes $ECHO_C" \
794 || echo $ECHO_N "no $ECHO_C"
795 echo $ECHO_N " IRC+ protocol: $ECHO_C"
796 test "$x_ircplus_on" = "yes" \
797 && echo "yes" \
798 || echo "no"
800 echo $ECHO_N " IPv6 protocol: $ECHO_C"
801 test "$x_ipv6_on" = "yes" \
802 && echo $ECHO_N "yes $ECHO_C" \
803 || echo $ECHO_N "no $ECHO_C"
804 echo $ECHO_N " I/O backend: $ECHO_C"
805 echo "$x_io_backend"
807 echo $ECHO_N " PAM support: $ECHO_C"
808 test "$x_pam_on" = "yes" \
809 && echo $ECHO_N "yes $ECHO_C" \
810 || echo $ECHO_N "no $ECHO_C"
811 echo $ECHO_N " SSL support: $ECHO_C"
812 echo "$x_ssl_lib"
814 echo $ECHO_N " libiconv support: $ECHO_C"
815 echo "$x_iconv_on"
817 echo
819 define(_automake_regex_,[[^AUTOMAKE_OPTIONS = [a-z .\-]*/portab/ansi2knr]])
820 if ! grep "_automake_regex_" src/ngircd/Makefile.am >/dev/null 2>&1; then
821 echo "WARNING:"
822 echo "This GNU automake generated build system does not support \"de-ANSI-fication\","
823 echo "therefore don't use it to generate \"official\" distribution archives!"
824 echo "(Most probably you want to use GNU automake 1.11.x for this purpose ...)"
825 echo
826 fi
828 # -eof-