Prevent definition of HAVE_WINxxx_H symbols and avoid inclusion of Windows headers...
authorYang Tse <yangsita@gmail.com>
Wed, 5 Jul 2006 23:10:37 +0000 (23:10 +0000)
committerYang Tse <yangsita@gmail.com>
Wed, 5 Jul 2006 23:10:37 +0000 (23:10 +0000)
acinclude.m4
ares/acinclude.m4
ares/ares.h
ares/nameser.h
ares/setup.h
docs/examples/synctime.c
include/curl/multi.h
lib/setup.h
src/setup.h

index adfce1a..e13d7cf 100644 (file)
 # $Id$
 ###########################################################################
 
+
+dnl CURL_CHECK_HEADERS_ONCE
+dnl -------------------------------------------------
+dnl Check for headers if check not already done.
+
+AC_DEFUN(CURL_CHECK_HEADERS_ONCE, [
+  for i in $1; do
+    eval prev_check_res=\$ac_cv_header_$i
+    case "$prev_check_res" in
+      yes | no)
+        ;;
+      *)
+        AC_CHECK_HEADERS($i)
+        ;;
+    esac
+
+  done
+])
+
+
 dnl CURL_CHECK_HEADER_WINDOWS
 dnl -------------------------------------------------
 dnl Check for compilable and valid windows.h header 
@@ -35,7 +55,11 @@ AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [
 #endif
 #include <windows.h>
       ],[
+#ifdef __CYGWIN__
+        HAVE_WINDOWS_H shall not be defined.
+#else
         int dummy=2*WINVER;
+#endif
       ])
     ],[
       ac_cv_header_windows_h="yes"
@@ -68,7 +92,11 @@ AC_DEFUN([CURL_CHECK_HEADER_WINSOCK], [
 #include <windows.h>
 #include <winsock.h>
       ],[
+#ifdef __CYGWIN__
+        HAVE_WINSOCK_H shall not be defined.
+#else
         int dummy=WSACleanup();
+#endif
       ])
     ],[
       ac_cv_header_winsock_h="yes"
@@ -99,7 +127,11 @@ AC_DEFUN([CURL_CHECK_HEADER_WINSOCK2], [
 #include <windows.h>
 #include <winsock2.h>
       ],[
+#ifdef __CYGWIN__
+        HAVE_WINSOCK2_H shall not be defined.
+#else
         int dummy=2*IPPROTO_ESP;
+#endif
       ])
     ],[
       ac_cv_header_winsock2_h="yes"
@@ -131,7 +163,11 @@ AC_DEFUN([CURL_CHECK_HEADER_WS2TCPIP], [
 #include <winsock2.h>
 #include <ws2tcpip.h>
       ],[
+#ifdef __CYGWIN__
+        HAVE_WS2TCPIP_H shall not be defined.
+#else
         int dummy=2*IP_PKTINFO;
+#endif
       ])
     ],[
       ac_cv_header_ws2tcpip_h="yes"
@@ -566,17 +602,33 @@ dnl and RECV_TYPE_ARG4, defining the type of the function
 dnl return value in RECV_TYPE_RETV.
 
 AC_DEFUN([CURL_CHECK_FUNC_RECV], [
+  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
+  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
   AC_CHECK_HEADERS(sys/types.h sys/socket.h)
   #
   AC_MSG_CHECKING([for recv])
   AC_TRY_LINK([
-#undef inline
+#undef inline 
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#else
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#endif
+#else
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#endif
     ],[
       recv(0, 0, 0, 0);
     ],[ 
@@ -599,12 +651,26 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
                 AC_COMPILE_IFELSE([
                   AC_LANG_PROGRAM([
 #undef inline 
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#else
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#endif
+#else
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#endif
                     extern $recv_retv recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
                   ],[
                     $recv_arg1 s=0;
@@ -663,17 +729,33 @@ dnl return value in SEND_TYPE_RETV, and also defining the
 dnl type qualifier of second argument in SEND_QUAL_ARG2.
 
 AC_DEFUN([CURL_CHECK_FUNC_SEND], [
+  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
+  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
   AC_CHECK_HEADERS(sys/types.h sys/socket.h)
   #
   AC_MSG_CHECKING([for send])
   AC_TRY_LINK([
-#undef inline
+#undef inline 
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#else
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#endif
+#else
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#endif
     ],[
       send(0, 0, 0, 0);
     ],[ 
@@ -696,12 +778,26 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
                 AC_COMPILE_IFELSE([
                   AC_LANG_PROGRAM([
 #undef inline 
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#else
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#endif
+#else
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#endif
                     extern $send_retv send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
                   ],[
                     $send_arg1 s=0;
index b86e2a8..bf3cf04 100644 (file)
@@ -1,5 +1,24 @@
 
 
+dnl CURL_CHECK_HEADERS_ONCE
+dnl -------------------------------------------------
+dnl Check for headers if check not already done.
+
+AC_DEFUN(CURL_CHECK_HEADERS_ONCE, [
+  for i in $1; do
+    eval prev_check_res=\$ac_cv_header_$i
+    case "$prev_check_res" in
+      yes | no)
+        ;;
+      *)
+        AC_CHECK_HEADERS($i)
+        ;;
+    esac
+
+  done
+])
+
+
 dnl CURL_CHECK_HEADER_WINDOWS
 dnl -------------------------------------------------
 dnl Check for compilable and valid windows.h header 
@@ -14,7 +33,11 @@ AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [
 #endif
 #include <windows.h>
       ],[
+#ifdef __CYGWIN__
+        HAVE_WINDOWS_H shall not be defined.
+#else
         int dummy=2*WINVER;
+#endif
       ])
     ],[
       ac_cv_header_windows_h="yes"
@@ -47,7 +70,11 @@ AC_DEFUN([CURL_CHECK_HEADER_WINSOCK], [
 #include <windows.h>
 #include <winsock.h>
       ],[
+#ifdef __CYGWIN__
+        HAVE_WINSOCK_H shall not be defined.
+#else
         int dummy=WSACleanup();
+#endif
       ])
     ],[
       ac_cv_header_winsock_h="yes"
@@ -78,7 +105,11 @@ AC_DEFUN([CURL_CHECK_HEADER_WINSOCK2], [
 #include <windows.h>
 #include <winsock2.h>
       ],[
+#ifdef __CYGWIN__
+        HAVE_WINSOCK2_H shall not be defined.
+#else
         int dummy=2*IPPROTO_ESP;
+#endif
       ])
     ],[
       ac_cv_header_winsock2_h="yes"
@@ -110,7 +141,11 @@ AC_DEFUN([CURL_CHECK_HEADER_WS2TCPIP], [
 #include <winsock2.h>
 #include <ws2tcpip.h>
       ],[
+#ifdef __CYGWIN__
+        HAVE_WS2TCPIP_H shall not be defined.
+#else
         int dummy=2*IP_PKTINFO;
+#endif
       ])
     ],[
       ac_cv_header_ws2tcpip_h="yes"
@@ -545,17 +580,33 @@ dnl and RECV_TYPE_ARG4, defining the type of the function
 dnl return value in RECV_TYPE_RETV.
 
 AC_DEFUN([CURL_CHECK_FUNC_RECV], [
+  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
+  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
   AC_CHECK_HEADERS(sys/types.h sys/socket.h)
   #
   AC_MSG_CHECKING([for recv])
   AC_TRY_LINK([
-#undef inline
+#undef inline 
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#else
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#endif
+#else
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#endif
     ],[
       recv(0, 0, 0, 0);
     ],[ 
@@ -578,12 +629,26 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
                 AC_COMPILE_IFELSE([
                   AC_LANG_PROGRAM([
 #undef inline 
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#else
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#endif
+#else
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#endif
                     extern $recv_retv recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
                   ],[
                     $recv_arg1 s=0;
@@ -642,17 +707,33 @@ dnl return value in SEND_TYPE_RETV, and also defining the
 dnl type qualifier of second argument in SEND_QUAL_ARG2.
 
 AC_DEFUN([CURL_CHECK_FUNC_SEND], [
+  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
+  AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
   AC_CHECK_HEADERS(sys/types.h sys/socket.h)
   #
   AC_MSG_CHECKING([for send])
   AC_TRY_LINK([
-#undef inline
+#undef inline 
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#else
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#endif
+#else
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#endif
     ],[
       send(0, 0, 0, 0);
     ],[ 
@@ -675,12 +756,26 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
                 AC_COMPILE_IFELSE([
                   AC_LANG_PROGRAM([
 #undef inline 
+#ifdef HAVE_WINDOWS_H
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#else
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#endif
+#else
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#endif
                     extern $send_retv send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
                   ],[
                     $send_arg1 s=0;
index 9414f9b..f4d98c8 100644 (file)
@@ -31,7 +31,7 @@
   #include <netinet/in.h>
   #include <sys/socket.h>
   #include <tcp.h>
-#elif defined(WIN32)
+#elif defined(WIN32) && !defined(__CYGWIN__)
   #include <winsock2.h>
   #include <windows.h>
 #else
index 7127c26..1faeb6f 100644 (file)
@@ -7,7 +7,9 @@
    port build */
 
 #ifndef NETWARE
+#ifndef __CYGWIN__
 #include <windows.h>
+#endif
 #include <process.h> /* for the _getpid() proto */
 #endif  /* !NETWARE */
 #include <sys/types.h>
index 4426141..c6ec261 100644 (file)
  * Include header files for windows builds before redefining anything.
  * Use this preproessor block only to include or exclude windows.h,
  * winsock2.h, ws2tcpip.h or winsock.h. Any other windows thing belongs
- * to any other further and independant block.
+ * to any other further and independant block.  Under Cygwin things work
+ * just as under linux (e.g. <sys/socket.h>) and the winsock headers should
+ * never be included when __CYGWIN__ is defined.
  */
 
-#ifdef HAVE_WINDOWS_H
+#if defined(HAVE_WINDOWS_H) && !defined(__CYGWIN__)
 #  ifndef WIN32_LEAN_AND_MEAN
 #    define WIN32_LEAN_AND_MEAN
 #  endif
index 9f3bba0..fc629ee 100644 (file)
@@ -59,7 +59,9 @@
 
 #include <stdio.h>
 #include <time.h>
+#ifndef __CYGWIN__
 #include <windows.h>
+#endif
 #include <curl/curl.h>
 
 
index 6ce6826..4fc7064 100644 (file)
@@ -43,8 +43,8 @@
 #define WIN32 1
 #endif
 
-#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__GNUC__) || \
-  defined(__MINGW32__)
+#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__GNUC__) && \
+  !defined(__CYGWIN__) || defined(__MINGW32__)
 #if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H))
 /* The check above prevents the winsock2 inclusion if winsock.h already was
    included, since they can't co-exist without problems */
index cef4028..57ac87d 100644 (file)
@@ -81,7 +81,7 @@
  * winsock2.h, ws2tcpip.h or winsock.h. Any other windows thing belongs
  * to any other further and independant block.  Under Cygwin things work
  * just as under linux (e.g. <sys/socket.h>) and the winsock headers should
- * never be included.
+ * never be included when __CYGWIN__ is defined.
  */
 
 #if defined(HAVE_WINDOWS_H) && !defined(__CYGWIN__)
index f07b3a7..d3814fe 100644 (file)
@@ -83,7 +83,7 @@
  * winsock2.h, ws2tcpip.h or winsock.h. Any other windows thing belongs 
  * to any other further and independant block.  Under Cygwin things work
  * just as under linux (e.g. <sys/socket.h>) and the winsock headers should
- * never be included.
+ * never be included when __CYGWIN__ is defined.
  */
 
 #if defined(HAVE_WINDOWS_H) && !defined(__CYGWIN__)