On 11/27/2011 12:42 PM, Tom Lane wrote:
Andrew Dunstan<[email protected]>  writes:
MSVC is still broken with this change, but now I think we've exposed a
long-standing error in the MSVC build system. ...
AddSimpleFrontend() calls AddDir() which harvests the contents of
$(OBJS) from the Makefile for the target. But pg_dumpall doesn't want
$(OBJS). We've been benignly but mistakenly building it with them for a
quite a few years, but now we can't do that any more, given Bruce's
changes. It looks like the fix is to call AddProject() for pg_dumpall
instead of AddSimpleFrontend() and then do a little more work ourselves
to select exactly what we need.
Maybe it would be better to refactor the makefile so that $(OBJS) is
still sensible to use this way?

                        

I don't think so. That would make things worse for the pg_dump and pg_restore targets which do use $(OBJS) as it is now.

Attached is a slightly hackish but very small patch that I have tested that resolves the problem. Unless there's an objection I'll apply it shortly (with an explanatory comment). Essentially it still uses AddSimpleFrontend, so we still get the useful things it does, like linking in libpq and setting up Windows resources, but the removes the unwanted sources for $(OBJS) files from the object. Then we add in just the files we do want.

cheers

andrew
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 482f100..59a7624 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -344,9 +344,13 @@ sub mkvcbuild
     $pgdump->AddFile('src\backend\parser\kwlookup.c');
 
     my $pgdumpall = AddSimpleFrontend('pg_dump', 1);
+    my @nodumpall = grep  {m /src\\bin\\pg_dump\\.*\.c$/ } 
+	keys %{$pgdumpall->{files}};
+    delete @{$pgdumpall->{files}}{@nodumpall};
     $pgdumpall->{name} = 'pg_dumpall';
     $pgdumpall->AddIncludeDir('src\backend');
     $pgdumpall->AddFile('src\bin\pg_dump\pg_dumpall.c');
+    $pgdumpall->AddFile('src\bin\pg_dump\dumputils.c');
     $pgdumpall->AddFile('src\bin\pg_dump\keywords.c');
     $pgdumpall->AddFile('src\backend\parser\kwlookup.c');
 
-- 
Sent via pgsql-committers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

Reply via email to