From cdae524b282ef0ea67c3880b3e0f852c84c351ce Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 26 Feb 2013 17:06:39 +0100 Subject: [PATCH] w32: Hacks for building with 32 bit mingw64. * configure.ac (INSERT__TYPEDEFS_FOR_GPGME_H): Add hacks for 32 bit mingw64. * src/util.h [W32]: Include winsock2.h before windows to make mingw64 happy. * src/w32-util.c (_WIN32_IE): Need to use 5.1 for mingw64. -- It is not clear to me what mingw64 wants to achieve with their POSIX hacks. In particular the off64_t stuff looks quite strange given that Windows has a pretty stable API for close to 2 decades. Thus I can't say whether it will really work when build with that toolchain. --- configure.ac | 6 +++++- src/util.h | 1 + src/w32-util.c | 6 +++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index cfe6d1b1..0fb326e6 100644 --- a/configure.ac +++ b/configure.ac @@ -287,8 +287,12 @@ typedef long off_t; typedef __int64 ssize_t;" else INSERT__TYPEDEFS_FOR_GPGME_H="/* Typedefs for the 32 bit W32 API. */ +#ifndef _OFF_T_DEFINED /* Defined by newer mingw32 toolkits. */ typedef long off_t; -typedef long ssize_t;" +#endif +#ifndef _SSIZE_T_DEFINED /* Defined by newer mingw32 toolkits. */ +typedef long ssize_t; +#endif" fi else INSERT__TYPEDEFS_FOR_GPGME_H="#include " diff --git a/src/util.h b/src/util.h index cf18099a..db8dc397 100644 --- a/src/util.h +++ b/src/util.h @@ -26,6 +26,7 @@ # ifdef HAVE_W32CE_SYSTEM # include "w32-ce.h" # else +# include "winsock2.h" # include "windows.h" # endif #endif diff --git a/src/w32-util.c b/src/w32-util.c index 7feaf6b9..a90f4056 100644 --- a/src/w32-util.c +++ b/src/w32-util.c @@ -44,7 +44,11 @@ #include #include -#define _WIN32_IE 0x0400 /* Required for SHGetSpecialFolderPathA. */ +#if __MINGW64_VERSION_MAJOR >= 2 +# define _WIN32_IE 0x0501 /* Required by mingw64 toolkit. */ +#else +# define _WIN32_IE 0x0400 /* Required for SHGetSpecialFolderPathA. */ +#endif /* We need to include the windows stuff here prior to shlobj.h so that we get the right winsock version. This is usually done in util.h