mirror of
https://github.com/curl/curl.git
synced 2024-11-21 01:16:58 +08:00
Refactor how libraries are checked for connect() function,
and check for connect() as it is done for other functions.
This commit is contained in:
parent
2d716517a8
commit
1ff4e9008b
41
acinclude.m4
41
acinclude.m4
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user