From 210c92a367f9774cac9cf33662de075d22665021 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 11 Jun 2003 10:48:43 +0000 Subject: [PATCH] try to determine the correct SOCKLEN_T value harder git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21030 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- configure.in | 48 +++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/configure.in b/configure.in index 2cc624f0f9..6745d2c4f8 100644 --- a/configure.in +++ b/configure.in @@ -4491,9 +4491,6 @@ if test "$wxUSE_SOCKETS" = "yes" ; then AC_CACHE_CHECK([what is the type of the third argument of getsockname], wx_cv_type_getsockname3, [ - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE( [ #include @@ -4504,32 +4501,45 @@ if test "$wxUSE_SOCKETS" = "yes" ; then getsockname(0, 0, &len); ], wx_cv_type_getsockname3=socklen_t, - AC_TRY_COMPILE( - [ - #include - #include - ], - [ - size_t len; - getsockname(0, 0, &len); - ], - wx_cv_type_getsockname3=size_t, + [ + dnl the compiler will compile the version with size_t + dnl even if the real type of the last parameter is int + dnl but it should give at least a warning about + dnl converting between incompatible pointer types, so + dnl try to use it to get the correct behaviour at + dnl least with gcc (otherwise we'd always use size_t) + CFLAGS_OLD="$CFLAGS" + if test "$GCC" = yes ; then + CFLAGS="$CFLAGS -Werror" + fi + AC_TRY_COMPILE( [ #include #include ], [ - int len; + size_t len; getsockname(0, 0, &len); ], - wx_cv_type_getsockname3=int, - wx_cv_type_getsockname3=unknown + wx_cv_type_getsockname3=size_t, + AC_TRY_COMPILE( + [ + #include + #include + ], + [ + int len; + getsockname(0, 0, &len); + ], + wx_cv_type_getsockname3=int, + wx_cv_type_getsockname3=unknown + ) ) - ) - ) - AC_LANG_RESTORE + CFLAGS="$CFLAGS_OLD" + ] + ) ]) if test "$wx_cv_type_getsockname3" = "unknown"; then -- 2.47.2