Re: [PATCH] PostgreSQL fails to build with 32bit MinGW-w64
От | Andrew Dunstan |
---|---|
Тема | Re: [PATCH] PostgreSQL fails to build with 32bit MinGW-w64 |
Дата | |
Msg-id | 4ED152D9.9020707@dunslane.net обсуждение исходный текст |
Ответ на | Re: [PATCH] PostgreSQL fails to build with 32bit MinGW-w64 (Lars Kanis <kanis@comcard.de>) |
Ответы |
Re: [PATCH] PostgreSQL fails to build with 32bit MinGW-w64
|
Список | pgsql-hackers |
On 11/24/2011 06:29 AM, Lars Kanis wrote: >> Isn't it better to check the value of macros itsef rather than checking for >> system dependent macros that does not directly relate to the issue? >> specifically for getaddrinfo.c case I think >> #if EAI_NODATA != EAI_NONAME >> is a better check than checking for >> #if !defined(__MINGW64_VERSION_MAJOR)&& !defined(WIN32_ONLY_COMPILER) /* MSVC/WIN64 duplicate */ > Yes it's better and it works for all described test environments. > >> For the win32.h, I really don't understand why _WINSOCKAPI_ was defined before >> <winsock2.h> >> some google suggests that defining _WINSOCKAPI_ before<windows.h> prevents >> inclusion of winsock.h but that does not have relation to inclusion of >> <winsock2.h> and if<winsock2.h> is included first, it should be ok. >> >> If this guess is right, perhaps it could be better to remove the three lines. >> #if !defined(WIN64) || defined(WIN32_ONLY_COMPILER) >> #define _WINSOCKAPI_ >> #endif No, this broke some compilers, IIRC (probably the native mingw compiler, which is in use by several buildfarm members). Getting this right was very tricky and time-consuming when I was adding support for the 64 bit mingw-w64 compiler, and there were a couple of rounds of breakage. I'm therefore much more inclined to go the way of your earlier patch, which seems much less risky. > I only changed this for consistency. For me, it works without that define in all test > environments, too. > >> +/* __MINGW64_VERSION_MAJOR is related to both 32/64 bit gcc compiles by >> + * mingw-w64, however it gots defined only after >> Why not use __MINGW32__, which is defined without including any headers? Because it's defined by other than mingw-w64 compilers. We have a bunch of compilers to support here. There are LOTS of compiler scenarios on Windows (several versions of MSVC, 32bit and 64bit mingw-w64, native mingw gcc, and a couple of Cygwin based compilers), and keeping track of them all and making sure they don't break can be a pain. cheers andrew
В списке pgsql-hackers по дате отправления: