1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-17 06:41:09 +03:00

Backport changes to allow building with MinGW 64 bit compiler.

These changes have been in HEAD for some time with no ill effect. They
are only being backported to 9.0, as the required WINNT version was not
high enough before that.
This commit is contained in:
Andrew Dunstan
2011-04-09 17:59:27 -04:00
parent 00bf707113
commit 2ea865de56
8 changed files with 32 additions and 8 deletions

View File

@ -38,6 +38,7 @@ dnl
# 'int' as the result, because that ought to work best. # 'int' as the result, because that ought to work best.
# #
# On Win32, accept() returns 'unsigned int PASCAL' # On Win32, accept() returns 'unsigned int PASCAL'
# Win64 uses SOCKET for return and arg1
AC_DEFUN([AC_FUNC_ACCEPT_ARGTYPES], AC_DEFUN([AC_FUNC_ACCEPT_ARGTYPES],
[AC_MSG_CHECKING([types of arguments for accept()]) [AC_MSG_CHECKING([types of arguments for accept()])
@ -45,8 +46,8 @@ AC_DEFUN([AC_FUNC_ACCEPT_ARGTYPES],
[AC_CACHE_VAL(ac_cv_func_accept_arg1,dnl [AC_CACHE_VAL(ac_cv_func_accept_arg1,dnl
[AC_CACHE_VAL(ac_cv_func_accept_arg2,dnl [AC_CACHE_VAL(ac_cv_func_accept_arg2,dnl
[AC_CACHE_VAL(ac_cv_func_accept_arg3,dnl [AC_CACHE_VAL(ac_cv_func_accept_arg3,dnl
[for ac_cv_func_accept_return in 'int' 'unsigned int PASCAL'; do [for ac_cv_func_accept_return in 'int' 'unsigned int PASCAL' 'SOCKET'; do
for ac_cv_func_accept_arg1 in 'int' 'unsigned int'; do for ac_cv_func_accept_arg1 in 'int' 'unsigned int' 'SOCKET'; do
for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
for ac_cv_func_accept_arg3 in 'int' 'size_t' 'socklen_t' 'unsigned int' 'void'; do for ac_cv_func_accept_arg3 in 'int' 'size_t' 'socklen_t' 'unsigned int' 'void'; do
AC_TRY_COMPILE( AC_TRY_COMPILE(

4
configure vendored
View File

@ -18472,8 +18472,8 @@ else
if test "${ac_cv_func_accept_arg3+set}" = set; then if test "${ac_cv_func_accept_arg3+set}" = set; then
$as_echo_n "(cached) " >&6 $as_echo_n "(cached) " >&6
else else
for ac_cv_func_accept_return in 'int' 'unsigned int PASCAL'; do for ac_cv_func_accept_return in 'int' 'unsigned int PASCAL' 'SOCKET'; do
for ac_cv_func_accept_arg1 in 'int' 'unsigned int'; do for ac_cv_func_accept_arg1 in 'int' 'unsigned int' 'SOCKET'; do
for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
for ac_cv_func_accept_arg3 in 'int' 'size_t' 'socklen_t' 'unsigned int' 'void'; do for ac_cv_func_accept_arg3 in 'int' 'size_t' 'socklen_t' 'unsigned int' 'void'; do
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF

View File

@ -58,7 +58,7 @@
#endif #endif
#include "postgres_ext.h" #include "postgres_ext.h"
#if _MSC_VER >= 1400 #if _MSC_VER >= 1400 || defined(WIN64)
#define errcode __msvc_errcode #define errcode __msvc_errcode
#include <crtdefs.h> #include <crtdefs.h>
#undef errcode #undef errcode

View File

@ -333,8 +333,12 @@ extern FILE *pgwin32_fopen(const char *, const char *);
#define fopen(a,b) pgwin32_fopen(a,b) #define fopen(a,b) pgwin32_fopen(a,b)
#endif #endif
#ifndef popen
#define popen(a,b) _popen(a,b) #define popen(a,b) _popen(a,b)
#endif
#ifndef pclose
#define pclose(a) _pclose(a) #define pclose(a) _pclose(a)
#endif
/* New versions of MingW have gettimeofday, old mingw and msvc don't */ /* New versions of MingW have gettimeofday, old mingw and msvc don't */
#ifndef HAVE_GETTIMEOFDAY #ifndef HAVE_GETTIMEOFDAY

View File

@ -4,7 +4,16 @@
#define WIN32_ONLY_COMPILER #define WIN32_ONLY_COMPILER
#endif #endif
/*
* Make sure _WIN32_WINNT has the minumum required value.
* Leave a higher value in place.
*/
#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0501
#undef _WIN32_WINNT
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501 #define _WIN32_WINNT 0x0501
#endif
/* /*
* Always build with SSPI support. Keep it as a #define in case * Always build with SSPI support. Keep it as a #define in case
* we want a switch to disable it sometime in the future. * we want a switch to disable it sometime in the future.
@ -17,10 +26,17 @@
#undef mkdir #undef mkdir
#undef ERROR #undef ERROR
/*
* The Mingw64 headers choke if this is already defined - they
* define it themselves.
*/
#if !defined(WIN64) || defined(WIN32_ONLY_COMPILER)
#define _WINSOCKAPI_ #define _WINSOCKAPI_
#include <windows.h> #endif
#include <winsock2.h> #include <winsock2.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>
#include <windows.h>
#undef small #undef small
#include <process.h> #include <process.h>
#include <signal.h> #include <signal.h>

View File

@ -13,6 +13,7 @@
*/ */
#include <winsock2.h> #include <winsock2.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>
#include <windows.h>
#undef ERROR #undef ERROR
#undef small #undef small

View File

@ -329,8 +329,7 @@ gai_strerror(int errcode)
return "Not enough memory"; return "Not enough memory";
#endif #endif
#ifdef EAI_NODATA #ifdef EAI_NODATA
#ifndef WIN32_ONLY_COMPILER /* MSVC complains because another case has the #if !defined(WIN64) && !defined(WIN32_ONLY_COMPILER) /* MSVC/WIN64 duplicate */
* same value */
case EAI_NODATA: case EAI_NODATA:
return "No host data of that type was found"; return "No host data of that type was found";
#endif #endif

View File

@ -1,11 +1,14 @@
float4:out:i.86-pc-mingw32=float4-exp-three-digits.out float4:out:i.86-pc-mingw32=float4-exp-three-digits.out
float4:out:x86_64-w64-mingw32=float4-exp-three-digits.out
float4:out:i.86-pc-win32vc=float4-exp-three-digits.out float4:out:i.86-pc-win32vc=float4-exp-three-digits.out
float8:out:i.86-.*-freebsd=float8-small-is-zero.out float8:out:i.86-.*-freebsd=float8-small-is-zero.out
float8:out:i.86-.*-openbsd=float8-small-is-zero.out float8:out:i.86-.*-openbsd=float8-small-is-zero.out
float8:out:i.86-.*-netbsd=float8-small-is-zero.out float8:out:i.86-.*-netbsd=float8-small-is-zero.out
float8:out:m68k-.*-netbsd=float8-small-is-zero.out float8:out:m68k-.*-netbsd=float8-small-is-zero.out
float8:out:i.86-pc-mingw32=float8-exp-three-digits-win32.out float8:out:i.86-pc-mingw32=float8-exp-three-digits-win32.out
float8:out:x86_64-w64-mingw32=float8-exp-three-digits-win32.out
float8:out:i.86-pc-win32vc=float8-exp-three-digits-win32.out float8:out:i.86-pc-win32vc=float8-exp-three-digits-win32.out
float8:out:i.86-pc-cygwin=float8-small-is-zero.out float8:out:i.86-pc-cygwin=float8-small-is-zero.out
int8:out:i.86-pc-mingw32=int8-exp-three-digits.out int8:out:i.86-pc-mingw32=int8-exp-three-digits.out
int8:out:x86_64-w64-mingw32=int8-exp-three-digits.out
int8:out:i.86-pc-win32vc=int8-exp-three-digits.out int8:out:i.86-pc-win32vc=int8-exp-three-digits.out