aboutsummaryrefslogtreecommitdiff
path: root/m4/curl-confopts.m4
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2008-11-13 18:56:55 +0000
committerYang Tse <yangsita@gmail.com>2008-11-13 18:56:55 +0000
commit17d2a464ad42c47ec37870e4b01a18ef5593877f (patch)
tree00948db22881746fb3d2740cd080587694829f56 /m4/curl-confopts.m4
parentae6530ee82fc81506ec7c34ffea4fcf3be7c3717 (diff)
Refactor configure script detection of functions used to set sockets into
non-blocking mode, and decouple function detection from function capability.
Diffstat (limited to 'm4/curl-confopts.m4')
-rw-r--r--m4/curl-confopts.m473
1 files changed, 72 insertions, 1 deletions
diff --git a/m4/curl-confopts.m4 b/m4/curl-confopts.m4
index b0c1f3cd4..5ad3e1830 100644
--- a/m4/curl-confopts.m4
+++ b/m4/curl-confopts.m4
@@ -22,7 +22,7 @@
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
-# serial 3
+# serial 4
dnl CURL_CHECK_OPTION_DEBUG
@@ -58,6 +58,38 @@ AC_HELP_STRING([--disable-debug],[Disable debug build options]),
])
+dnl CURL_CHECK_OPTION_NONBLOCKING
+dnl -------------------------------------------------
+dnl Verify if configure has been invoked with option
+dnl --enable-nonblocking or --disable-nonblocking, and
+dnl set shell variable want_nonblocking as appropriate.
+
+AC_DEFUN([CURL_CHECK_OPTION_NONBLOCKING], [
+ AC_BEFORE([$0],[CURL_CHECK_NONBLOCKING_SOCKET])dnl
+ AC_MSG_CHECKING([whether to enable non-blocking communications])
+ OPT_NONBLOCKING="default"
+ AC_ARG_ENABLE(nonblocking,
+AC_HELP_STRING([--enable-nonblocking],[Enable non-blocking communications])
+AC_HELP_STRING([--disable-nonblocking],[Disable non-blocking communications]),
+ OPT_NONBLOCKING=$enableval)
+ case "$OPT_NONBLOCKING" in
+ no)
+ dnl --disable-nonblocking option used
+ want_nonblocking="no"
+ ;;
+ default)
+ dnl configure option not specified
+ want_nonblocking="yes"
+ ;;
+ *)
+ dnl --enable-nonblocking option used
+ want_nonblocking="yes"
+ ;;
+ esac
+ AC_MSG_RESULT([$want_nonblocking])
+])
+
+
dnl CURL_CHECK_OPTION_OPTIMIZE
dnl -------------------------------------------------
dnl Verify if configure has been invoked with option
@@ -147,3 +179,42 @@ AC_HELP_STRING([--disable-warnings],[Disable strict compiler warnings]),
AC_MSG_RESULT([$want_warnings])
])
+
+dnl CURL_CHECK_NONBLOCKING_SOCKET
+dnl -------------------------------------------------
+dnl Check for how to set a socket into non-blocking state.
+
+AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET], [
+ AC_REQUIRE([CURL_CHECK_OPTION_NONBLOCKING])dnl
+ AC_REQUIRE([CURL_CHECK_FUNC_FCNTL])dnl
+ AC_REQUIRE([CURL_CHECK_FUNC_IOCTL])dnl
+ AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET])dnl
+ AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL])dnl
+ AC_REQUIRE([CURL_CHECK_FUNC_SETSOCKOPT])dnl
+ #
+ tst_method="unknown"
+ if test "$want_nonblocking" = "yes"; then
+ AC_MSG_CHECKING([how to set a socket into non-blocking mode])
+ if test "x$ac_cv_func_fcntl_o_nonblock" = "xyes"; then
+ tst_method="fcntl O_NONBLOCK"
+ elif test "x$ac_cv_func_ioctl_fionbio" = "xyes"; then
+ tst_method="ioctl FIONBIO"
+ elif test "x$ac_cv_func_ioctlsocket_fionbio" = "xyes"; then
+ tst_method="ioctlsocket FIONBIO"
+ elif test "x$ac_cv_func_ioctlsocket_camel_fionbio" = "xyes"; then
+ tst_method="IoctlSocket FIONBIO"
+ elif test "x$ac_cv_func_setsockopt_so_nonblock" = "xyes"; then
+ tst_method="setsockopt SO_NONBLOCK"
+ fi
+ AC_MSG_RESULT([$tst_method])
+ if test "$tst_method" = "unknown"; then
+ AC_MSG_WARN([cannot determine non-blocking socket method.])
+ fi
+ fi
+ if test "$tst_method" = "unknown"; then
+ AC_DEFINE_UNQUOTED(USE_BLOCKING_SOCKETS, 1,
+ [Define to disable non-blocking sockets.])
+ AC_MSG_WARN([non-blocking sockets disabled.])
+ fi
+])
+