From: Magnus Hagander Date: Tue, 5 Jan 2010 11:12:50 +0000 (+0000) Subject: Disable linker warning 4197 on Win64, that is caused by the fact that we export X-Git-Tag: REL9_0_ALPHA4~346 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=04de9be9106987a889429048bb3cc7ef5fa5d31f;p=postgresql Disable linker warning 4197 on Win64, that is caused by the fact that we export symbols both using __declspec(dllexport) (via the PGDLLIMPORT macro) and using full-dll-export. This works without warning on Win32, but not on Win64. In passing, fix the fact that the framework could never deal with more than one disbled linker warning - because MSVC wants commas between linker warnings, and semicolons between compiler warnings... --- diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm index 3b30b72aaa..8eee8c1187 100644 --- a/src/tools/msvc/Project.pm +++ b/src/tools/msvc/Project.pm @@ -3,7 +3,7 @@ package Project; # # Package that encapsulates a Visual C++ project file generation # -# $PostgreSQL: pgsql/src/tools/msvc/Project.pm,v 1.24 2010/01/02 15:18:42 mha Exp $ +# $PostgreSQL: pgsql/src/tools/msvc/Project.pm,v 1.25 2010/01/05 11:12:50 mha Exp $ # use Carp; use strict; @@ -333,7 +333,7 @@ sub DisableLinkerWarnings { my ($self, $warnings) = @_; - $self->{disablelinkerwarnings} .= ';' unless ($self->{disablelinkerwarnings} eq ''); + $self->{disablelinkerwarnings} .= ',' unless ($self->{disablelinkerwarnings} eq ''); $self->{disablelinkerwarnings} .= $warnings; } @@ -348,6 +348,10 @@ sub Save $self->FullExportDLL($self->{name} . ".lib"); } + # Warning 4197 is about double exporting, disable this per + # http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=99193 + $self->DisableLinkerWarnings('4197') if ($self->{platform} eq 'x64'); + # Dump the project open(F, ">$self->{name}.vcproj") || croak("Could not write to $self->{name}.vcproj\n"); $self->WriteHeader(*F); @@ -494,7 +498,9 @@ sub WriteConfiguration } $libs =~ s/ $//; $libs =~ s/__CFGNAME__/$cfgname/g; + my $targetmachine = $self->{platform} eq 'Win32' ? 1 : 17; + print $f <