# $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
#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"
#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"
#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"
#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"
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);
],[
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;
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);
],[
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;
+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
#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"
#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"
#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"
#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"
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);
],[
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;
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);
],[
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;
#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
port build */
#ifndef NETWARE
+#ifndef __CYGWIN__
#include <windows.h>
+#endif
#include <process.h> /* for the _getpid() proto */
#endif /* !NETWARE */
#include <sys/types.h>
* 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
#include <stdio.h>
#include <time.h>
+#ifndef __CYGWIN__
#include <windows.h>
+#endif
#include <curl/curl.h>
#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 */
* 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__)
* 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__)