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