| From: | Craig Ringer <craig(at)2ndquadrant(dot)com> |
|---|---|
| To: | PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | [PATCH] Fix double-inclusion of pg_config_os.h when building extensions with Visual Studio |
| Date: | 2014-01-11 07:57:07 |
| Message-ID: | 52D0F953.7030403@2ndquadrant.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi all
Related to the earlier comments about building extensions on Windows, I
just noticed that we don't treat "WINDLL" as equivalent to "WIN32", and
"WIN32" isn't set in a Visual Studio DLL project.
We should actually be testing _WIN32, which is the compiler's
pre-defined macro. The attached patch to c.h takes care of that - it
tests _WIN32 in c.h and sets WIN32 early if it's found.
_WIN32 is set for both win32 and win64, like we expect from WIN32.
Without this patch, MSVC extension builds fail with:
9.3\include\server\pg_config_os.h(207): error C2011: 'timezone' :
'struct' type redefinition
1> c:\program
files\postgresql\9.3\include\server\pg_config_os.h(207) : see
declaration of 'timezone'
1>c:\program files\postgresql\9.3\include\server\pg_config_os.h(216):
error C2011: 'itimerval' : 'struct' type redefinition
1> c:\program
files\postgresql\9.3\include\server\pg_config_os.h(216) : see
declaration of 'itimerval'
due to double-inclusion of pg_config_os.h from c.h:57 then later on
c.h:92 . WIN32 is not defined on line 57 (so we include pg_config_os.h),
but gets defined by the include of crtdefs.h so we re-include it again
later.
This doesn't cause issues with our Perl build system because we set WIN32.
--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
| Attachment | Content-Type | Size |
|---|---|---|
| _WIN32.diff | text/x-patch | 593 bytes |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Amit Kapila | 2014-01-11 07:59:23 | Re: Standalone synchronous master |
| Previous Message | Peter Geoghegan | 2014-01-11 06:48:35 | Re: INSERT...ON DUPLICATE KEY LOCK FOR UPDATE |