Add epoll_* ioset backend.
[srvx.git] / configure.in
index dd6474bb110e9b5d7bf99967bbd00f11c20f34e1..01a9e3f1519239e6c3751e8f9911d4c38b3fca64 100644 (file)
@@ -69,7 +69,7 @@ AC_HEADER_TIME
 AC_STRUCT_TM
 
 dnl Would rather not bail on headers, BSD has alot of the functions elsewhere. -Jedi
-AC_CHECK_HEADERS(fcntl.h malloc.h netdb.h arpa/inet.h netinet/in.h sys/resource.h sys/timeb.h sys/times.h sys/param.h sys/socket.h sys/time.h sys/types.h sys/wait.h unistd.h getopt.h memory.h regex.h arpa/inet.h sys/mman.h sys/stat.h dirent.h,,)
+AC_CHECK_HEADERS(fcntl.h malloc.h netdb.h arpa/inet.h netinet/in.h sys/resource.h sys/timeb.h sys/times.h sys/param.h sys/socket.h sys/time.h sys/types.h sys/wait.h unistd.h getopt.h memory.h regex.h arpa/inet.h sys/mman.h sys/stat.h dirent.h sys/epoll.h,,)
 
 dnl portability stuff, hurray! -Jedi
 AC_CHECK_MEMBER([struct sockaddr.sa_len],
@@ -87,10 +87,10 @@ if test $ac_cv_func_gettimeofday = no; then
 fi
 
 dnl We have fallbacks in case these are missing, so just check for them.
-AC_CHECK_FUNCS(freeaddrinfo getaddrinfo getnameinfo getpagesize memcpy memset strdup strerror strsignal localtime_r setrlimit getopt getopt_long regcomp regexec regfree sysconf inet_aton,,)
+AC_CHECK_FUNCS(freeaddrinfo getaddrinfo getnameinfo getpagesize memcpy memset strdup strerror strsignal localtime_r setrlimit getopt getopt_long regcomp regexec regfree sysconf inet_aton epoll_create select,,)
 
 dnl Check for absolutely required library functions.
-AC_CHECK_FUNCS(select socket strcspn strspn strtod strtoul,,AC_MSG_ERROR([a required function was not found.  srvx build will fail.]))
+AC_CHECK_FUNCS(socket strcspn strspn strtod strtoul,,AC_MSG_ERROR([a required function was not found.  srvx build will fail.]))
 
 dnl Check for functions (and how to get them).
 AC_FUNC_ALLOCA
@@ -250,8 +250,22 @@ if test "x$ac_cv_func_select" = xyes ; then
   IOMUXES="$IOMUXES select"
 fi
 
+AC_ARG_WITH([epoll],
+[  --without-epoll         Disables the epoll_*() I/O backend],
+[],
+[withval="$ac_cv_func_epoll_create"])
+if test "x$withval" = xyes ; then
+  AC_DEFINE(WITH_IOSET_EPOLL, 1, [Define if using the epoll I/O backend])
+  MODULE_OBJS="$MODULE_OBJS ioset-epoll.\$(OBJEXT)"
+  IOMUXES="$IOMUXES epoll"
+fi
+
 IOMUXES=`echo $IOMUXES | sed 's/^ +//'`
-AC_MSG_RESULT($IOMUXES)
+if test "x$IOMUXES" = "x" ; then
+  AC_MSG_ERROR([No supported I/O multiplexing backend found])
+else
+  AC_MSG_RESULT($IOMUXES)
+fi
 
 AC_ARG_WITH(getopt,
 [  --without-getopt        Disables building of the GNU getopt library],