Commit 8fc2f8ef authored by Yang Tse's avatar Yang Tse
Browse files

fix socklen_t equivalent detection when cross compiling Windows target

parent 512b9ac1
Loading
Loading
Loading
Loading
+24 −13
Original line number Diff line number Diff line
@@ -773,10 +773,16 @@ dnl an equivalent type if socklen_t not available

AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
  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],
      [curl_cv_socklen_t_equiv], [
      curl_cv_socklen_t_equiv="unknown"
      for arg1 in 'int' 'SOCKET'; do
        for arg2 in "struct sockaddr" void; do
          for t in int size_t unsigned long "unsigned long"; do
            AC_COMPILE_IFELSE([
@@ -794,6 +800,7 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
#include <winsock.h>
#endif
#endif
#define GETPEERNCALLCONV PASCAL
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
@@ -801,18 +808,20 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define GETPEERNCALLCONV
#endif
              int getpeername (int, $arg2 *, $t *);
                extern int GETPEERNCALLCONV getpeername ($arg1, $arg2 *, $t *);
              ],[
                $t len=0;
                getpeername(0,0,&len);
              ])
            ],[
               curl_cv_socklen_t_equiv="$t"
             break 2
               break 3
            ])
          done
        done
      done
    ])
    case "$curl_cv_socklen_t_equiv" in
      unknown)
@@ -821,6 +830,8 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
      *)
        AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
          [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
  ],[
+24 −13
Original line number Diff line number Diff line
@@ -242,10 +242,16 @@ dnl an equivalent type if socklen_t not available

AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
  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],
      [curl_cv_socklen_t_equiv], [
      curl_cv_socklen_t_equiv="unknown"
      for arg1 in 'int' 'SOCKET'; do
        for arg2 in "struct sockaddr" void; do
          for t in int size_t unsigned long "unsigned long"; do
            AC_COMPILE_IFELSE([
@@ -263,6 +269,7 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
#include <winsock.h>
#endif
#endif
#define GETPEERNCALLCONV PASCAL
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
@@ -270,18 +277,20 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#define GETPEERNCALLCONV
#endif
              int getpeername (int, $arg2 *, $t *);
                extern int GETPEERNCALLCONV getpeername ($arg1, $arg2 *, $t *);
              ],[
                $t len=0;
                getpeername(0,0,&len);
              ])
            ],[
               curl_cv_socklen_t_equiv="$t"
             break 2
               break 3
            ])
          done
        done
      done
    ])
    case "$curl_cv_socklen_t_equiv" in
      unknown)
@@ -290,6 +299,8 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
      *)
        AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
          [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
  ],[