X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=configure.in;h=51841e7a862ac236c42867833b6ca7d736d724a7;hp=9bda36e6cb7af236a433400dd10f0aa37dadbed5;hb=c634303765c20083c8f554f4d4084526d3e58fef;hpb=3237d28bfbc96096320536f6ebc41761b7d11641 diff --git a/configure.in b/configure.in index 9bda36e6..51841e7a 100644 --- a/configure.in +++ b/configure.in @@ -8,7 +8,7 @@ # (at your option) any later version. # Please read the file COPYING, README and AUTHORS for more information. # -# $Id: configure.in,v 1.115 2005/07/22 21:02:22 alex Exp $ +# $Id: configure.in,v 1.125 2006/12/26 16:00:45 alex Exp $ # # -- Initialisation -- @@ -53,12 +53,31 @@ AC_PROG_RANLIB AM_C_PROTOTYPES AC_C_CONST +AC_C_INLINE # -- Hard coded system and compiler dependencies/features/options ... -- +AC_DEFUN([GCC_STACK_PROTECT_CC],[ + ssp_cc=yes + # we use -fstack-protector-all for the test to enfoce the use of the guard variable + AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector]) + ssp_old_cflags="$CFLAGS" + CFLAGS="$CFLAGS -fstack-protector-all" + AC_TRY_LINK(,,, ssp_cc=no) + echo $ssp_cc + CFLAGS="$ssp_old_cflags" + if test "X$ssp_cc" = "Xyes"; then + CFLAGS="$CFLAGS -fstack-protector" + AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.]) + fi +]) + + if test "$GCC" = "yes"; then # We are using the GNU C compiler. Good! CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes" + + GCC_STACK_PROTECT_CC fi case "$target_os" in @@ -105,6 +124,7 @@ AC_TRY_COMPILE([ AC_TYPE_SIGNAL AC_TYPE_SIZE_T + # -- Libraries -- AC_CHECK_LIB(UTIL,memmove) @@ -118,17 +138,15 @@ AC_FUNC_STRFTIME AC_CHECK_FUNCS([ \ bind gethostbyaddr gethostbyname gethostname inet_ntoa malloc memmove \ - memset realloc setsid setsockopt socket strcasecmp strchr strerror \ + memset realloc setsid setsockopt socket strcasecmp strchr strcspn strerror \ strstr waitpid],,AC_MSG_ERROR([required function missing!])) AC_CHECK_FUNCS(inet_aton isdigit sigaction snprintf vsnprintf strdup strlcpy strlcat) -AC_CHECK_FUNCS(select,[AC_CHECK_HEADERS(sys/select.h)], - AC_MSG_ERROR([required function select() is missing!]) -) - # -- Configuration options -- +# use syslog? + x_syslog_on=no AC_ARG_WITH(syslog, [ --without-syslog disable syslog (autodetected by default)], @@ -154,6 +172,8 @@ if test "$x_syslog_on" = "yes"; then AC_CHECK_HEADERS(syslog.h,,AC_MSG_ERROR([required C header missing!])) fi +# use zlib compression? + x_zlib_on=no AC_ARG_WITH(zlib, [ --without-zlib disable zlib compression (autodetected by default)], @@ -178,44 +198,120 @@ if test "$x_zlib_on" = "yes"; then AC_CHECK_HEADERS(zlib.h,,AC_MSG_ERROR([required C header missing!])) fi +# detect which IO API to use: + +x_io_backend=none + +AC_ARG_WITH(select, + [ --without-select disable select IO support (autodetected by default)], + [ if test "$withval" != "no"; then + if test "$withval" != "yes"; then + CFLAGS="-I$withval/include $CFLAGS" + CPPFLAGS="-I$withval/include $CPPFLAGS" + LDFLAGS="-L$withval/lib $LDFLAGS" + fi + AC_CHECK_FUNCS(select, x_io_select=yes, + AC_MSG_ERROR([Can't enable select IO support!]) + ) + fi + ], + [ + AC_CHECK_FUNCS(select, x_io_select=yes) + ] +) + +AC_ARG_WITH(poll, + [ --without-poll disable poll support (autodetected by default)], + [ if test "$withval" != "no"; then + if test "$withval" != "yes"; then + CFLAGS="-I$withval/include $CFLAGS" + CPPFLAGS="-I$withval/include $CPPFLAGS" + LDFLAGS="-L$withval/lib $LDFLAGS" + fi + AC_CHECK_FUNCS(poll, x_io_backend=poll\(\), + AC_MSG_ERROR([Can't enable poll IO support!]) + ) + fi + ], + [ + AC_CHECK_FUNCS(poll, x_io_backend=poll\(\)) + ] +) + +AC_ARG_WITH(devpoll, + [ --without-devpoll disable /dev/poll IO support (autodetected by default)], + [ if test "$withval" != "no"; then + if test "$withval" != "yes"; then + CFLAGS="-I$withval/include $CFLAGS" + CPPFLAGS="-I$withval/include $CPPFLAGS" + LDFLAGS="-L$withval/lib $LDFLAGS" + fi + + AC_CHECK_HEADERS(sys/devpoll.h,,AC_MSG_ERROR([required C header missing!])) + fi + ], + [ + AC_CHECK_HEADERS(sys/devpoll.h, x_io_backend=/dev/poll) + ] +) -x_io_backend=select AC_ARG_WITH(epoll, - [ --without-epoll disable epoll support (autodetected by default)], + [ --without-epoll disable epoll IO support (autodetected by default)], [ if test "$withval" != "no"; then if test "$withval" != "yes"; then CFLAGS="-I$withval/include $CFLAGS" CPPFLAGS="-I$withval/include $CPPFLAGS" LDFLAGS="-L$withval/lib $LDFLAGS" fi - AC_CHECK_FUNCS(epoll_create, x_io_backend=epoll, - AC_MSG_ERROR([Can't enable epoll support!]) + AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes, + AC_MSG_ERROR([Can't enable epoll IO support!]) ) fi ], [ - AC_CHECK_FUNCS(epoll_create, x_io_backend=epoll) + AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes) ] ) AC_ARG_WITH(kqueue, - [ --without-kqueue disable kqueue support (autodetected by default)], + [ --without-kqueue disable kqueue IO support (autodetected by default)], [ if test "$withval" != "no"; then if test "$withval" != "yes"; then CFLAGS="-I$withval/include $CFLAGS" CPPFLAGS="-I$withval/include $CPPFLAGS" LDFLAGS="-L$withval/lib $LDFLAGS" fi - AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue, - AC_MSG_ERROR([Can't enable kqueue support!]) + AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\), + AC_MSG_ERROR([Can't enable kqueue IO support!]) ) fi ], [ - AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue) + AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\)) ] ) +if test "$x_io_epoll" = "yes" -a "$x_io_select" = "yes"; then + # when epoll() and select() are available, we'll use both! + x_io_backend="epoll(), select()" +else + if test "$x_io_epoll" = "yes"; then + # we prefere epoll() if it is available + x_io_backend="epoll()" + else + if test "$x_io_select" = "yes" -a "$x_io_backend" = "none"; then + # we'll use select, when available and no "better" + # interface has been detected ... + x_io_backend="select()" + fi + fi +fi + +if test "$x_io_backend" = "none"; then + AC_MSG_ERROR([No useabe IO API activated/found!?]) +fi + +# use TCP wrappers? x_tcpwrap_on=no AC_ARG_WITH(tcp-wrappers, @@ -246,6 +342,8 @@ int deny_severity = 0; ] ) +# include support for "zeroconf"? + x_zeroconf_on=no AC_ARG_WITH(zeroconf, [ --with-zeroconf enable support for "Zeroconf"], @@ -273,7 +371,8 @@ if test "$x_zeroconf_on" = "osx"; then fi if test "$x_zeroconf_on" = "howl"; then for dir in /usr/local/include /usr/local/include/howl* \ - /usr/include /usr/include/howl*; do + /usr/include /usr/include/howl* \ + /usr/local/include/avahi* /usr/include/avahi*; do test -d "$dir" || continue AC_MSG_CHECKING([for Howl headers in $dir]) if test -f "$dir/rendezvous/rendezvous.h"; then @@ -293,6 +392,8 @@ if test "$x_zeroconf_on" = "howl"; then AC_DEFINE(ZEROCONF, 1) fi +# do IDENT requests using libident? + x_identauth_on=no AC_ARG_WITH(ident, [ --with-ident enable "IDENT" ("AUTH") protocol support], @@ -314,6 +415,8 @@ if test "$x_identauth_on" = "yes"; then AC_CHECK_HEADERS(ident.h,,AC_MSG_ERROR([required C header missing!])) fi +# compile in IRC+ protocol support? + x_ircplus_on=yes AC_ARG_ENABLE(ircplus, [ --disable-ircplus disable IRC+ protocol], @@ -323,6 +426,8 @@ if test "$x_ircplus_on" = "yes"; then AC_DEFINE(IRCPLUS, 1) fi +# compile in IRC "sniffer"? + x_sniffer_on=no; x_debug_on=no AC_ARG_ENABLE(sniffer, [ --enable-sniffer enable IRC traffic sniffer (enables debug mode)], @@ -332,6 +437,8 @@ AC_ARG_ENABLE(sniffer, fi ) +# enable additional debugging code? + AC_ARG_ENABLE(debug, [ --enable-debug show additional debug output], if test "$enableval" = "yes"; then x_debug_on=yes; fi @@ -341,6 +448,8 @@ if test "$x_debug_on" = "yes"; then test "$GCC" = "yes" && CFLAGS="-pedantic $CFLAGS" fi +# enable "strict RFC rules"? + x_strict_rfc_on=no AC_ARG_ENABLE(strict-rfc, [ --enable-strict-rfc strict RFC conformance -- may break clients!], @@ -461,7 +570,7 @@ test "$x_identauth_on" = "yes" \ && echo $ECHO_N "yes $ECHO_C" \ || echo $ECHO_N "no $ECHO_C" echo $ECHO_N " I/O backend: $ECHO_C" - echo "$x_io_backend" + echo "\"$x_io_backend\"" echo