Hi all, I am using MingW W64 from SVN, version 3.0 beta-ish.
There are few issues when compiling Postgres with MingW W64. There was a patch submitted to this list in July 2011 but it does not address these issues (that I can tell). The following applies to both 32 and 64 bit builds. ---- The header file crtdefs.h in MinGW typedefs errcode which conflicts with Postgres' elog.h. #ifndef __ERRCODE_DEFINED_MS #define __ERRCODE_DEFINED_MS typedef int errcode; #endif The previous patch #undef'ed errcode, which is probably not going to help here. I added CPPFLAGS=-D__ERRCODE_DEFINED_MS to the configure line to work around this. How would a proper patch deal with this? Add an explicit #define when MinGW W64 is detected? ---- MinGW W64's sys/stat.h #defines stat to be _stati64 and there is subsequently a compilation error in port.h: note: expected 'struct _stati64 *' but argument is of type 'struct stat *' error: conflicting types for 'pgwin32_safestat' As stupid as it is, I added #undef stat immediately after including sys/stat.h in port.h: #if defined(WIN32) && !defined(__CYGWIN__) && !defined(UNSAFE_STAT_OK) #include <sys/stat.h> #undef stat extern int pgwin32_safestat(const char *path, struct stat * buf); #define stat(a,b) pgwin32_safestat(a,b) #endif Though I might have tried -DUNSAFE_STAT_OK too, but didn't. NOTE: I'm compiling Postgres exclusively to cross compile PL/Java and run time behaviour is not a concern of mine. I am not sure what macro magic would be proper here. Comments welcome. ---- There are series of redefined macros from the MinGW W64 CRT. In pg_config_os: warning: "_WIN32_WINNT" redefined [enabled by default] warning: "fseeko" redefined [enabled by default] warning: "ftello" redefined [enabled by default] warning: "EMSGSIZE" redefined [enabled by default] warning: "EAFNOSUPPORT" redefined [enabled by default] warning: "EWOULDBLOCK" redefined [enabled by default] warning: "ECONNRESET" redefined [enabled by default] warning: "EINPROGRESS" redefined [enabled by default] warning: "ENOBUFS" redefined [enabled by default] warning: "EPROTONOSUPPORT" redefined [enabled by default] warning: "ECONNREFUSED" redefined [enabled by default] warning: "EOPNOTSUPP" redefined [enabled by default] In port.h: warning: "popen" redefined [enabled by default] warning: "pclose" redefined [enabled by default] And possibly some more. Do we need these redefines? ---- I'm willing to work on some (if not all) of these issues with proper guidance. -- Johann Oskarsson http://www.2ndquadrant.com/ |[] PostgreSQL Development, 24x7 Support, Training and Services --+-- | Blog: http://my.opera.com/myrkraverk/blog/ -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers