Refactor how libraries are checked for connect() function,

and check for connect() as it is done for other functions.
This commit is contained in:
Yang Tse 2009-06-20 17:24:43 +00:00
parent 2d716517a8
commit 1ff4e9008b
6 changed files with 284 additions and 6 deletions

View File

@ -2202,6 +2202,47 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
])
dnl CURL_CHECK_LIBS_CONNECT
dnl -------------------------------------------------
dnl Verify if network connect function is already available
dnl using current libraries or if another one is required.
AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [
AC_MSG_CHECKING([for connect in libraries])
tst_connect_save_LIBS="$LIBS"
tst_connect_need_LIBS="unknown"
for tst_lib in '' '-lsocket' ; do
if test "$tst_connect_need_LIBS" = "unknown"; then
LIBS="$tst_lib $tst_connect_save_LIBS"
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
]],[[
if(0 != connect(0, 0, 0))
return 1;
]])
],[
tst_connect_need_LIBS="$tst_lib"
])
fi
done
LIBS="$tst_connect_save_LIBS"
#
case X-"$tst_connect_need_LIBS" in
X-unknown)
AC_MSG_RESULT([cannot find connect])
AC_MSG_ERROR([cannot find connect function in libraries.])
;;
X-)
AC_MSG_RESULT([yes])
;;
*)
AC_MSG_RESULT([$tst_connect_need_LIBS])
LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
;;
esac
])
dnl CURL_DEFINE_UNQUOTED (VARIABLE, [VALUE])
dnl -------------------------------------------------
dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor

View File

@ -1670,6 +1670,47 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
])
dnl CARES_CHECK_LIBS_CONNECT
dnl -------------------------------------------------
dnl Verify if network connect function is already available
dnl using current libraries or if another one is required.
AC_DEFUN([CARES_CHECK_LIBS_CONNECT], [
AC_MSG_CHECKING([for connect in libraries])
tst_connect_save_LIBS="$LIBS"
tst_connect_need_LIBS="unknown"
for tst_lib in '' '-lsocket' ; do
if test "$tst_connect_need_LIBS" = "unknown"; then
LIBS="$tst_lib $tst_connect_save_LIBS"
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
]],[[
if(0 != connect(0, 0, 0))
return 1;
]])
],[
tst_connect_need_LIBS="$tst_lib"
])
fi
done
LIBS="$tst_connect_save_LIBS"
#
case X-"$tst_connect_need_LIBS" in
X-unknown)
AC_MSG_RESULT([cannot find connect])
AC_MSG_ERROR([cannot find connect function in libraries.])
;;
X-)
AC_MSG_RESULT([yes])
;;
*)
AC_MSG_RESULT([$tst_connect_need_LIBS])
LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
;;
esac
])
dnl CARES_DEFINE_UNQUOTED (VARIABLE, [VALUE])
dnl -------------------------------------------------
dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor

View File

@ -337,8 +337,7 @@ if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
fi
ac_cv_func_strcasecmp="no"
dnl socket lib?
AC_CHECK_FUNC(connect, , [ AC_CHECK_LIB(socket, connect) ])
CARES_CHECK_LIBS_CONNECT
dnl **********************************************************************
dnl In case that function clock_gettime with monotonic timer is available,
@ -537,6 +536,7 @@ CURL_CHECK_MSG_NOSIGNAL
CARES_CHECK_FUNC_CLOSESOCKET
CARES_CHECK_FUNC_CLOSESOCKET_CAMEL
CARES_CHECK_FUNC_CONNECT
CARES_CHECK_FUNC_FCNTL
CARES_CHECK_FUNC_FREEADDRINFO
CARES_CHECK_FUNC_GETADDRINFO

View File

@ -16,7 +16,7 @@
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
# serial 31
# serial 32
dnl CARES_INCLUDES_ARPA_INET
@ -524,6 +524,104 @@ AC_DEFUN([CARES_CHECK_FUNC_CLOSESOCKET_CAMEL], [
])
dnl CARES_CHECK_FUNC_CONNECT
dnl -------------------------------------------------
dnl Verify if connect is available, prototyped, and
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable cares_disallow_connect, then
dnl HAVE_CONNECT will be defined.
AC_DEFUN([CARES_CHECK_FUNC_CONNECT], [
AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
AC_REQUIRE([CARES_INCLUDES_SYS_SOCKET])dnl
AC_REQUIRE([CARES_INCLUDES_SOCKET])dnl
#
tst_links_connect="unknown"
tst_proto_connect="unknown"
tst_compi_connect="unknown"
tst_allow_connect="unknown"
#
AC_MSG_CHECKING([if connect can be linked])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$cares_includes_winsock2
$cares_includes_sys_socket
$cares_includes_socket
]],[[
if(0 != connect(0, 0, 0))
return 1;
]])
],[
AC_MSG_RESULT([yes])
tst_links_connect="yes"
],[
AC_MSG_RESULT([no])
tst_links_connect="no"
])
#
if test "$tst_links_connect" = "yes"; then
AC_MSG_CHECKING([if connect is prototyped])
AC_EGREP_CPP([connect],[
$cares_includes_winsock2
$cares_includes_sys_socket
$cares_includes_socket
],[
AC_MSG_RESULT([yes])
tst_proto_connect="yes"
],[
AC_MSG_RESULT([no])
tst_proto_connect="no"
])
fi
#
if test "$tst_proto_connect" = "yes"; then
AC_MSG_CHECKING([if connect is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$cares_includes_winsock2
$cares_includes_sys_socket
$cares_includes_socket
]],[[
if(0 != connect(0, 0, 0))
return 1;
]])
],[
AC_MSG_RESULT([yes])
tst_compi_connect="yes"
],[
AC_MSG_RESULT([no])
tst_compi_connect="no"
])
fi
#
if test "$tst_compi_connect" = "yes"; then
AC_MSG_CHECKING([if connect usage allowed])
if test "x$cares_disallow_connect" != "xyes"; then
AC_MSG_RESULT([yes])
tst_allow_connect="yes"
else
AC_MSG_RESULT([no])
tst_allow_connect="no"
fi
fi
#
AC_MSG_CHECKING([if connect might be used])
if test "$tst_links_connect" = "yes" &&
test "$tst_proto_connect" = "yes" &&
test "$tst_compi_connect" = "yes" &&
test "$tst_allow_connect" = "yes"; then
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED(HAVE_CONNECT, 1,
[Define to 1 if you have the connect function.])
ac_cv_func_connect="yes"
else
AC_MSG_RESULT([no])
ac_cv_func_connect="no"
fi
])
dnl CARES_CHECK_FUNC_FCNTL
dnl -------------------------------------------------
dnl Verify if fcntl is available, prototyped, and

View File

@ -656,8 +656,7 @@ if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
fi
ac_cv_func_strcasecmp="no"
dnl socket lib?
AC_CHECK_FUNC(connect, , [ AC_CHECK_LIB(socket, connect) ])
CURL_CHECK_LIBS_CONNECT
dnl **********************************************************************
dnl In case that function clock_gettime with monotonic timer is available,
@ -2002,6 +2001,7 @@ CURL_CHECK_MSG_NOSIGNAL
CURL_CHECK_FUNC_ALARM
CURL_CHECK_FUNC_CLOSESOCKET
CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
CURL_CHECK_FUNC_CONNECT
CURL_CHECK_FUNC_FCNTL
CURL_CHECK_FUNC_FDOPEN
CURL_CHECK_FUNC_FREEADDRINFO

View File

@ -22,7 +22,7 @@
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
# serial 50
# serial 51
dnl CURL_INCLUDES_ARPA_INET
@ -782,6 +782,104 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
])
dnl CURL_CHECK_FUNC_CONNECT
dnl -------------------------------------------------
dnl Verify if connect is available, prototyped, and
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_connect, then
dnl HAVE_CONNECT will be defined.
AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
AC_REQUIRE([CURL_INCLUDES_SOCKET])dnl
#
tst_links_connect="unknown"
tst_proto_connect="unknown"
tst_compi_connect="unknown"
tst_allow_connect="unknown"
#
AC_MSG_CHECKING([if connect can be linked])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
$curl_includes_sys_socket
$curl_includes_socket
]],[[
if(0 != connect(0, 0, 0))
return 1;
]])
],[
AC_MSG_RESULT([yes])
tst_links_connect="yes"
],[
AC_MSG_RESULT([no])
tst_links_connect="no"
])
#
if test "$tst_links_connect" = "yes"; then
AC_MSG_CHECKING([if connect is prototyped])
AC_EGREP_CPP([connect],[
$curl_includes_winsock2
$curl_includes_sys_socket
$curl_includes_socket
],[
AC_MSG_RESULT([yes])
tst_proto_connect="yes"
],[
AC_MSG_RESULT([no])
tst_proto_connect="no"
])
fi
#
if test "$tst_proto_connect" = "yes"; then
AC_MSG_CHECKING([if connect is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
$curl_includes_sys_socket
$curl_includes_socket
]],[[
if(0 != connect(0, 0, 0))
return 1;
]])
],[
AC_MSG_RESULT([yes])
tst_compi_connect="yes"
],[
AC_MSG_RESULT([no])
tst_compi_connect="no"
])
fi
#
if test "$tst_compi_connect" = "yes"; then
AC_MSG_CHECKING([if connect usage allowed])
if test "x$curl_disallow_connect" != "xyes"; then
AC_MSG_RESULT([yes])
tst_allow_connect="yes"
else
AC_MSG_RESULT([no])
tst_allow_connect="no"
fi
fi
#
AC_MSG_CHECKING([if connect might be used])
if test "$tst_links_connect" = "yes" &&
test "$tst_proto_connect" = "yes" &&
test "$tst_compi_connect" = "yes" &&
test "$tst_allow_connect" = "yes"; then
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED(HAVE_CONNECT, 1,
[Define to 1 if you have the connect function.])
ac_cv_func_connect="yes"
else
AC_MSG_RESULT([no])
ac_cv_func_connect="no"
fi
])
dnl CURL_CHECK_FUNC_FCNTL
dnl -------------------------------------------------
dnl Verify if fcntl is available, prototyped, and