+# -- Functions --
+
+AC_FUNC_FORK
+AC_FUNC_STRFTIME
+
+AC_CHECK_FUNCS([ \
+ bind gethostbyaddr gethostbyname gethostname inet_ntoa \
+ setsid setsockopt socket strcasecmp waitpid],,
+ AC_MSG_ERROR([required function missing!]))
+
+AC_CHECK_FUNCS([ \
+ gai_strerror getaddrinfo getnameinfo inet_aton sigaction \
+ sigprocmask snprintf vsnprintf strdup strlcpy strlcat strtok_r])
+
+# -- Configuration options --
+
+# use syslog?
+
+x_syslog_on=no
+AC_ARG_WITH(syslog,
+ [ --without-syslog disable syslog (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_LIB(be, syslog)
+ AC_CHECK_FUNCS(syslog, x_syslog_on=yes,
+ AC_MSG_ERROR([Can't enable syslog!])
+ )
+ fi
+ ],
+ [
+ AC_CHECK_LIB(be, syslog)
+ AC_CHECK_FUNCS(syslog, x_syslog_on=yes)
+ ]
+)
+if test "$x_syslog_on" = "yes"; then
+ AC_DEFINE(SYSLOG, 1)
+ 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)],
+ [ 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_LIB(z, deflate)
+ AC_CHECK_FUNCS(deflate, x_zlib_on=yes,
+ AC_MSG_ERROR([Can't enable zlib!])
+ )
+ fi
+ ],
+ [ AC_CHECK_LIB(z, deflate)
+ AC_CHECK_FUNCS(deflate, x_zlib_on=yes)
+ ]
+)
+if test "$x_zlib_on" = "yes"; then
+ AC_DEFINE(ZLIB, 1)
+ 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, [
+ AC_CHECK_HEADERS(poll.h,
+ x_io_backend=poll\(\),
+ AC_MSG_ERROR(
+ [Can't enable poll IO support!])
+ )
+ ], [
+ AC_MSG_ERROR([Can't enable poll IO support!])
+ ])
+ fi
+ ],
+ [
+ AC_CHECK_FUNCS(poll, [
+ AC_CHECK_HEADERS(poll.h, 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)
+ ]
+)
+
+AC_ARG_WITH(epoll,
+ [ --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_epoll=yes,
+ AC_MSG_ERROR([Can't enable epoll IO support!])
+ )
+ fi
+ ],
+ [
+ AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes)
+ ]
+)
+
+AC_ARG_WITH(kqueue,
+ [ --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 IO support!])
+ )
+ fi
+ ],
+ [
+ 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