diff options
author | Andrew Dunstan <andrew@dunslane.net> | 2011-01-30 19:56:46 -0500 |
---|---|---|
committer | Andrew Dunstan <andrew@dunslane.net> | 2011-01-30 19:56:46 -0500 |
commit | 91812df4ed0facfb90bec3f9430dd5a97d56f695 (patch) | |
tree | 09e3d6d3f5ee3cfe1e4884b373b1271574153ad6 /src | |
parent | 9688c4e6f1516d2fc0db5d200112c4d91538878d (diff) | |
download | postgresql-91812df4ed0facfb90bec3f9430dd5a97d56f695.tar.gz postgresql-91812df4ed0facfb90bec3f9430dd5a97d56f695.zip |
Enable building with the Mingw64 compiler.
This can be used to build 64 bit Windows binaries, not only on 64 bit
Windows but on supported cross-compiling hosts including 32 bit Windows,
Cygwin, Darwin and Linux.
Diffstat (limited to 'src')
-rw-r--r-- | src/include/c.h | 2 | ||||
-rw-r--r-- | src/include/port.h | 4 | ||||
-rw-r--r-- | src/include/port/win32.h | 18 | ||||
-rw-r--r-- | src/include/port/win32/sys/socket.h | 1 | ||||
-rw-r--r-- | src/port/getaddrinfo.c | 3 | ||||
-rw-r--r-- | src/test/regress/resultmap | 3 |
6 files changed, 27 insertions, 4 deletions
diff --git a/src/include/c.h b/src/include/c.h index 634b21fa949..af1be9499ef 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -58,7 +58,7 @@ #endif #include "postgres_ext.h" -#if _MSC_VER >= 1400 +#if _MSC_VER >= 1400 || defined(WIN64) #define errcode __msvc_errcode #include <crtdefs.h> #undef errcode diff --git a/src/include/port.h b/src/include/port.h index 7ad464c07dc..4d40cef7b4b 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -325,8 +325,12 @@ extern FILE *pgwin32_fopen(const char *, const char *); #define fopen(a,b) pgwin32_fopen(a,b) #endif +#ifndef popen #define popen(a,b) _popen(a,b) +#endif +#ifndef pclose #define pclose(a) _pclose(a) +#endif /* New versions of MingW have gettimeofday, old mingw and msvc don't */ #ifndef HAVE_GETTIMEOFDAY diff --git a/src/include/port/win32.h b/src/include/port/win32.h index 93439f763d0..6d99ecbe88d 100644 --- a/src/include/port/win32.h +++ b/src/include/port/win32.h @@ -4,7 +4,16 @@ #define WIN32_ONLY_COMPILER #endif +/* + * Make sure _WIN32_WINNT has the minumum required value. + * Leave a higher value in place. +*/ +#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0501 +#undefine _WIN32_WINNT +#endif +#ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0501 +#endif /* * Always build with SSPI support. Keep it as a #define in case * we want a switch to disable it sometime in the future. @@ -17,10 +26,17 @@ #undef mkdir #undef ERROR + +/* + * The Mingw64 headers choke if this is already defined - they + * define it themselves. + */ +#if !defined(WIN64) || defined(WIN32_ONLY_COMPILER) #define _WINSOCKAPI_ -#include <windows.h> +#endif #include <winsock2.h> #include <ws2tcpip.h> +#include <windows.h> #undef small #include <process.h> #include <signal.h> diff --git a/src/include/port/win32/sys/socket.h b/src/include/port/win32/sys/socket.h index 6947ec07d62..edaee6a894c 100644 --- a/src/include/port/win32/sys/socket.h +++ b/src/include/port/win32/sys/socket.h @@ -13,6 +13,7 @@ */ #include <winsock2.h> #include <ws2tcpip.h> +#include <windows.h> #undef ERROR #undef small diff --git a/src/port/getaddrinfo.c b/src/port/getaddrinfo.c index 654858e6393..fabd50dddbe 100644 --- a/src/port/getaddrinfo.c +++ b/src/port/getaddrinfo.c @@ -329,8 +329,7 @@ gai_strerror(int errcode) return "Not enough memory"; #endif #ifdef EAI_NODATA -#ifndef WIN32_ONLY_COMPILER /* MSVC complains because another case has the - * same value */ +#if !defined(WIN64) && !defined(WIN32_ONLY_COMPILER) /* MSVC/WIN64 duplicate */ case EAI_NODATA: return "No host data of that type was found"; #endif diff --git a/src/test/regress/resultmap b/src/test/regress/resultmap index 7bfcee29b48..d02d221d56f 100644 --- a/src/test/regress/resultmap +++ b/src/test/regress/resultmap @@ -1,11 +1,14 @@ 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 float8:out:i.86-.*-freebsd=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:m68k-.*-netbsd=float8-small-is-zero.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-cygwin=float8-small-is-zero.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 |