summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Conway2007-02-02 16:25:34 +0000
committerNeil Conway2007-02-02 16:25:34 +0000
commitd4a37356081e135685f3690075371c721b4d7c2b (patch)
treec0f07647235121168010bbab010c41783601e596
parente1bbb7b0552de69bb0c05966aa37009b43bef5bb (diff)
This patch changes the installscript for vcbuild to actually parse the
generated solution files for what to install, instead of blindly copying everything as it previously did. With the previous quick-n-dirty version, it would copy old DLLs if you reconfigured in a way that didn't include subprojects like a PL for example. Magnus Hagander.
-rwxr-xr-xsrc/tools/msvc/install.pl41
1 files changed, 38 insertions, 3 deletions
diff --git a/src/tools/msvc/install.pl b/src/tools/msvc/install.pl
index c00b730871..fb10bd8f42 100755
--- a/src/tools/msvc/install.pl
+++ b/src/tools/msvc/install.pl
@@ -21,8 +21,7 @@ print "Installing for $conf\n";
EnsureDirectories ('bin','lib','share','share/timezonesets');
-CopySetOfFiles('programs', "$conf\\*.exe", $target . '/bin/');
-CopySetOfFiles('libraries', "$conf\\*.dll", $target . '/lib/');
+CopySolutionOutput($conf, $target);
copy($target . '/lib/libpq.dll', $target . '/bin/libpq.dll');
CopySetOfFiles('config files', "*.sample", $target . '/share/');
CopySetOfFiles('timezone names', 'src\timezone\tznames\*.txt', $target . '/share/timezonesets/');
@@ -72,12 +71,48 @@ sub CopySetOfFiles {
chomp;
my $tgt = $target . basename($_);
print ".";
- copy($_, $tgt) || croak "Could not copy $_\n";
+ copy($_, $tgt) || croak "Could not copy $_: $!\n";
}
close($D);
print "\n";
}
+sub CopySolutionOutput {
+ my $conf = shift;
+ my $target = shift;
+ my $rem = qr{Project\("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"\) = "([^"]+)"};
+
+ my $sln = read_file("pgsql.sln") || croak "Could not open pgsql.sln\n";
+ print "Copying build output files...";
+ while ($sln =~ $rem) {
+ my $pf = $1;
+ my $dir;
+ my $ext;
+
+ $sln =~ s/$rem//;
+
+ my $proj = read_file("$pf.vcproj") || croak "Could not open $pf.vcproj\n";
+ if ($proj !~ qr{ConfigurationType="([^"]+)"}) {
+ croak "Could not parse $pf.vcproj\n";
+ }
+ if ($1 == 1) {
+ $dir = "bin";
+ $ext = "exe";
+ }
+ elsif ($1 == 2) {
+ $dir = "lib";
+ $ext = "dll";
+ }
+ else {
+ # Static lib, such as libpgport, only used internally during build, don't install
+ next;
+ }
+ copy("$conf\\$pf\\$pf.$ext","$target\\$dir\\$pf.$ext") || croak "Could not copy $pf.$ext\n";
+ print ".";
+ }
+ print "\n";
+}
+
sub GenerateConversionScript {
my $sql = "";
my $F;