fix socklen_t equivalent detection when cross compiling Windows target

This commit is contained in:
Yang Tse 2008-05-19 12:31:11 +00:00
parent 512b9ac194
commit 8fc2f8ef62
2 changed files with 48 additions and 26 deletions

View File

@ -773,14 +773,20 @@ dnl an equivalent type if socklen_t not available
AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl
AC_CHECK_TYPE([socklen_t], ,[ AC_CHECK_TYPE([socklen_t], [
dnl socklen_t is available
AC_DEFINE_UNQUOTED(HAVE_SOCKLEN_T, 1,
[Define to 1 if socklen_t is available or a equivalent is defined.])
],[
dnl socklen_t not available
AC_CACHE_CHECK([for socklen_t equivalent], AC_CACHE_CHECK([for socklen_t equivalent],
[curl_cv_socklen_t_equiv], [ [curl_cv_socklen_t_equiv], [
curl_cv_socklen_t_equiv="unknown" curl_cv_socklen_t_equiv="unknown"
for arg2 in "struct sockaddr" void; do for arg1 in 'int' 'SOCKET'; do
for t in int size_t unsigned long "unsigned long"; do for arg2 in "struct sockaddr" void; do
AC_COMPILE_IFELSE([ for t in int size_t unsigned long "unsigned long"; do
AC_LANG_PROGRAM([ AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([
#undef inline #undef inline
#ifdef HAVE_WINDOWS_H #ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN #ifndef WIN32_LEAN_AND_MEAN
@ -794,6 +800,7 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
#include <winsock.h> #include <winsock.h>
#endif #endif
#endif #endif
#define GETPEERNCALLCONV PASCAL
#else #else
#ifdef HAVE_SYS_TYPES_H #ifdef HAVE_SYS_TYPES_H
#include <sys/types.h> #include <sys/types.h>
@ -801,16 +808,18 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h> #include <sys/socket.h>
#endif #endif
#define GETPEERNCALLCONV
#endif #endif
int getpeername (int, $arg2 *, $t *); extern int GETPEERNCALLCONV getpeername ($arg1, $arg2 *, $t *);
],[
$t len=0;
getpeername(0,0,&len);
])
],[ ],[
$t len=0; curl_cv_socklen_t_equiv="$t"
getpeername(0,0,&len); break 3
]) ])
],[ done
curl_cv_socklen_t_equiv="$t"
break 2
])
done done
done done
]) ])
@ -821,6 +830,8 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
*) *)
AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv, AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
[type to use in place of socklen_t if not defined]) [type to use in place of socklen_t if not defined])
AC_DEFINE_UNQUOTED(HAVE_SOCKLEN_T, 1,
[Define to 1 if socklen_t is available or a equivalent is defined.])
;; ;;
esac esac
],[ ],[

View File

@ -242,14 +242,20 @@ dnl an equivalent type if socklen_t not available
AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl
AC_CHECK_TYPE([socklen_t], ,[ AC_CHECK_TYPE([socklen_t], [
dnl socklen_t is available
AC_DEFINE_UNQUOTED(HAVE_SOCKLEN_T, 1,
[Define to 1 if socklen_t is available or a equivalent is defined.])
],[
dnl socklen_t not available
AC_CACHE_CHECK([for socklen_t equivalent], AC_CACHE_CHECK([for socklen_t equivalent],
[curl_cv_socklen_t_equiv], [ [curl_cv_socklen_t_equiv], [
curl_cv_socklen_t_equiv="unknown" curl_cv_socklen_t_equiv="unknown"
for arg2 in "struct sockaddr" void; do for arg1 in 'int' 'SOCKET'; do
for t in int size_t unsigned long "unsigned long"; do for arg2 in "struct sockaddr" void; do
AC_COMPILE_IFELSE([ for t in int size_t unsigned long "unsigned long"; do
AC_LANG_PROGRAM([ AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([
#undef inline #undef inline
#ifdef HAVE_WINDOWS_H #ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN #ifndef WIN32_LEAN_AND_MEAN
@ -263,6 +269,7 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
#include <winsock.h> #include <winsock.h>
#endif #endif
#endif #endif
#define GETPEERNCALLCONV PASCAL
#else #else
#ifdef HAVE_SYS_TYPES_H #ifdef HAVE_SYS_TYPES_H
#include <sys/types.h> #include <sys/types.h>
@ -270,16 +277,18 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h> #include <sys/socket.h>
#endif #endif
#define GETPEERNCALLCONV
#endif #endif
int getpeername (int, $arg2 *, $t *); extern int GETPEERNCALLCONV getpeername ($arg1, $arg2 *, $t *);
],[
$t len=0;
getpeername(0,0,&len);
])
],[ ],[
$t len=0; curl_cv_socklen_t_equiv="$t"
getpeername(0,0,&len); break 3
]) ])
],[ done
curl_cv_socklen_t_equiv="$t"
break 2
])
done done
done done
]) ])
@ -290,6 +299,8 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
*) *)
AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv, AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
[type to use in place of socklen_t if not defined]) [type to use in place of socklen_t if not defined])
AC_DEFINE_UNQUOTED(HAVE_SOCKLEN_T, 1,
[Define to 1 if socklen_t is available or a equivalent is defined.])
;; ;;
esac esac
],[ ],[