Annotation of ircnowd/configure.ng, Revision 1.1
1.1 ! tomglok 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: #
! 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],[ngircd-ml@ngircd.barton.de],[ngircd],[http://ngircd.barton.de/])
! 27:
! 28: AC_CONFIG_SRCDIR([src/ngircd/ngircd.c])
! 29: AC_CONFIG_HEADER([src/config.h])
! 30: AC_CANONICAL_HOST
! 31:
! 32: AM_INIT_AUTOMAKE([-Wall 1.10 foreign ]ng_color_tests)
! 33:
! 34: m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
! 35:
! 36: # -- Templates for config.h --
! 37:
! 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])
! 51:
! 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])
! 55:
! 56: # -- C Compiler --
! 57:
! 58: AC_PROG_CC
! 59: AC_PROG_CC_STDC
! 60:
! 61: # -- Helper programs --
! 62:
! 63: m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
! 64:
! 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
! 71:
! 72: # -- Compiler Features --
! 73:
! 74: AC_C_CONST
! 75: AC_C_INLINE
! 76: __ng_PROTOTYPES__
! 77:
! 78: # -- Function Definitions --
! 79:
! 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: ])
! 95:
! 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)
! 106: {
! 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;
! 115: }
! 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: ])
! 126:
! 127: # -- Hard coded system and compiler dependencies/features/options ... --
! 128:
! 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"
! 132:
! 133: GCC_STACK_PROTECT_CC
! 134: fi
! 135:
! 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
! 143:
! 144: # Add additional CFLAGS, eventually specified on the command line:
! 145: test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD"
! 146:
! 147: CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"' -DDOCDIR='\"\$(docdir)\"'"
! 148:
! 149: # -- Headers --
! 150:
! 151: AC_HEADER_STDC
! 152: AC_HEADER_SYS_WAIT
! 153: AC_HEADER_TIME
! 154:
! 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!]))
! 168:
! 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: ])
! 181:
! 182: # -- Datatypes --
! 183:
! 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: ])
! 196:
! 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
! 204:
! 205: AC_CHECK_MEMBER([struct sockaddr_in.sin_len], AC_DEFINE(HAVE_sockaddr_in_len),,
! 206: [#include <arpa/inet.h>])
! 207:
! 208: # -- Libraries --
! 209:
! 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: ])
! 222:
! 223: # -- Functions --
! 224:
! 225: AC_FUNC_FORK
! 226: AC_FUNC_STRFTIME
! 227:
! 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!]))
! 252:
! 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: ])
! 274:
! 275: WORKING_GETADDRINFO
! 276:
! 277: # -- Configuration options --
! 278:
! 279: # use syslog?
! 280:
! 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])
! 297: ]
! 298: )
! 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
! 303:
! 304: # use zlib compression?
! 305:
! 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!])
! 319: )
! 320: fi
! 321: ],
! 322: [ AC_CHECK_LIB(z, deflate)
! 323: AC_CHECK_FUNCS(deflate, x_zlib_on=yes)
! 324: ]
! 325: )
! 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
! 330:
! 331: # detect which IO API to use:
! 332:
! 333: x_io_backend=none
! 334:
! 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!])
! 346: )
! 347: fi
! 348: ],
! 349: [
! 350: AC_CHECK_FUNCS(select, x_io_select=yes)
! 351: ]
! 352: )
! 353:
! 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!])
! 368: )
! 369: ], [
! 370: AC_MSG_ERROR([Can't enable poll IO support!])
! 371: ])
! 372: fi
! 373: ],
! 374: [
! 375: AC_CHECK_FUNCS(poll, [
! 376: AC_CHECK_HEADERS(poll.h, x_io_backend=poll\(\))
! 377: ])
! 378: ]
! 379: )
! 380:
! 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
! 390:
! 391: AC_CHECK_HEADERS(sys/devpoll.h,,AC_MSG_ERROR([required C header missing!]))
! 392: fi
! 393: ],
! 394: [
! 395: AC_CHECK_HEADERS(sys/devpoll.h, x_io_backend=/dev/poll)
! 396: ]
! 397: )
! 398:
! 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!])
! 410: )
! 411: fi
! 412: ],
! 413: [
! 414: AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes)
! 415: ]
! 416: )
! 417:
! 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!])
! 429: )
! 430: fi
! 431: ],
! 432: [
! 433: AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\))
! 434: ]
! 435: )
! 436:
! 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
! 452:
! 453: if test "$x_io_backend" = "none"; then
! 454: AC_MSG_ERROR([No useable IO API activated/found!?])
! 455: fi
! 456:
! 457: # use SSL?
! 458:
! 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)]
! 473: )
! 474: AC_CHECK_FUNCS(SSL_new, x_ssl_openssl=yes,
! 475: AC_MSG_ERROR([Can't enable openssl])
! 476: )
! 477: fi
! 478: ]
! 479: )
! 480:
! 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])
! 493: )
! 494: fi
! 495: ]
! 496: )
! 497:
! 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
! 508:
! 509: AM_CONDITIONAL(HAVE_SSL, [test $x_ssl_lib != "no"])
! 510:
! 511: # use TCP wrappers?
! 512:
! 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
! 545: ]
! 546: )
! 547:
! 548: # do IDENT requests using libident?
! 549:
! 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!])
! 563: )
! 564: fi
! 565: ]
! 566: )
! 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
! 571:
! 572: # compile in PAM support?
! 573:
! 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!])
! 587: )
! 588: fi
! 589: ]
! 590: )
! 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
! 599:
! 600: # compile in IRC+ protocol support?
! 601:
! 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
! 607: )
! 608: if test "$x_ircplus_on" = "yes"; then
! 609: AC_DEFINE(IRCPLUS, 1)
! 610:
! 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 ]
! 634: )
! 635: if test "$x_iconv_on" = "yes"; then
! 636: AC_DEFINE(ICONV, 1)
! 637: fi
! 638: fi
! 639:
! 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
! 646: )
! 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
! 655:
! 656: # compile in IRC "sniffer"?
! 657:
! 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
! 666: )
! 667:
! 668: # enable additional debugging code?
! 669:
! 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
! 674: )
! 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
! 680:
! 681: # enable "strict RFC rules"?
! 682:
! 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
! 691: )
! 692:
! 693: # -- Definitions --
! 694:
! 695: AC_DEFINE_UNQUOTED(HOST_CPU, "$host_cpu" )
! 696: AC_DEFINE_UNQUOTED(HOST_VENDOR, "$host_vendor" )
! 697: AC_DEFINE_UNQUOTED(HOST_OS, "$host_os" )
! 698:
! 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"
! 705:
! 706: # -- Generate files --
! 707:
! 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: ])
! 725:
! 726: AC_OUTPUT
! 727:
! 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
! 737:
! 738: # -- Result --
! 739:
! 740: echo
! 741: echo "ngIRCd $PACKAGE_VERSION has been configured with the following options:"
! 742: echo
! 743:
! 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}`
! 750:
! 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
! 763:
! 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"
! 772:
! 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"
! 781:
! 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"
! 790:
! 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"
! 799:
! 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"
! 806:
! 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"
! 813:
! 814: echo $ECHO_N " libiconv support: $ECHO_C"
! 815: echo "$x_iconv_on"
! 816:
! 817: echo
! 818:
! 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
! 827:
! 828: # -eof-
CVSweb