diff options
Diffstat (limited to 'src/tools/msvc/Install.pm')
-rw-r--r-- | src/tools/msvc/Install.pm | 134 |
1 files changed, 82 insertions, 52 deletions
diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm index a11c59b89de..55de9e55e6b 100644 --- a/src/tools/msvc/Install.pm +++ b/src/tools/msvc/Install.pm @@ -17,6 +17,16 @@ our (@ISA, @EXPORT_OK); @ISA = qw(Exporter); @EXPORT_OK = qw(Install); +my $insttype; +my @client_contribs = ('oid2name', 'pgbench', 'vacuumlo'); +my @client_program_files = ( + 'clusterdb', 'createdb', 'createlang', 'createuser', + 'dropdb', 'droplang', 'dropuser', 'ecpg', + 'libecpg', 'libecpg_compat', 'libpgtypes', 'libpq', + 'pg_basebackup', 'pg_config', 'pg_dump', 'pg_dumpall', + 'pg_isready', 'pg_receivexlog', 'pg_restore', 'psql', + 'reindexdb', 'vacuumdb', @client_contribs); + sub lcopy { my $src = shift; @@ -37,6 +47,8 @@ sub Install $| = 1; my $target = shift; + $insttype = shift; + $insttype = "all" unless ($insttype); # if called from vcregress, the config will be passed to us # so no need to re-include these @@ -65,24 +77,31 @@ sub Install my $majorver = DetermineMajorVersion(); print "Installing version $majorver for $conf in $target\n"; - EnsureDirectories( - $target, 'bin', - 'lib', 'share', - 'share/timezonesets', 'share/extension', - 'share/contrib', 'doc', - 'doc/extension', 'doc/contrib', - 'symbols', 'share/tsearch_data'); + my @client_dirs = ('bin', 'lib', 'share', 'symbols'); + my @all_dirs = ( + @client_dirs, 'doc', 'doc/contrib', 'doc/extension', 'share/contrib', + 'share/extension', 'share/timezonesets', 'share/tsearch_data'); + if ($insttype eq "client") + { + EnsureDirectories($target, @client_dirs); + } + else + { + EnsureDirectories($target, @all_dirs); + } CopySolutionOutput($conf, $target); lcopy($target . '/lib/libpq.dll', $target . '/bin/libpq.dll'); my $sample_files = []; + my @top_dir = ("src"); + @top_dir = ("src\\bin", "src\\interfaces") if ($insttype eq "client"); File::Find::find( { wanted => sub { /^.*\.sample\z/s && push(@$sample_files, $File::Find::name); } }, - "src"); + @top_dir); CopySetOfFiles('config files', $sample_files, $target . '/share/'); CopyFiles( 'Import libraries', @@ -95,53 +114,57 @@ sub Install "libpgport\\libpgport.lib", "libpgtypes\\libpgtypes.lib", "libecpg_compat\\libecpg_compat.lib"); - CopySetOfFiles( - 'timezone names', - [ glob('src\timezone\tznames\*.txt') ], - $target . '/share/timezonesets/'); - CopyFiles( - 'timezone sets', - $target . '/share/timezonesets/', - 'src/timezone/tznames/', 'Default', 'Australia', 'India'); - CopySetOfFiles( - 'BKI files', - [ glob("src\\backend\\catalog\\postgres.*") ], - $target . '/share/'); - CopySetOfFiles( - 'SQL files', - [ glob("src\\backend\\catalog\\*.sql") ], - $target . '/share/'); - CopyFiles( - 'Information schema data', $target . '/share/', - 'src/backend/catalog/', 'sql_features.txt'); - GenerateConversionScript($target); - GenerateTimezoneFiles($target, $conf); - GenerateTsearchFiles($target); - CopySetOfFiles( - 'Stopword files', - [ glob("src\\backend\\snowball\\stopwords\\*.stop") ], - $target . '/share/tsearch_data/'); - CopySetOfFiles( - 'Dictionaries sample files', - [ glob("src\\backend\\tsearch\\*_sample.*") ], - $target . '/share/tsearch_data/'); CopyContribFiles($config, $target); CopyIncludeFiles($target); - my $pl_extension_files = []; - my @pldirs = ('src/pl/plpgsql/src'); - push @pldirs, "src/pl/plperl" if $config->{perl}; - push @pldirs, "src/pl/plpython" if $config->{python}; - push @pldirs, "src/pl/tcl" if $config->{tcl}; - File::Find::find( - { wanted => sub { - /^(.*--.*\.sql|.*\.control)\z/s - && push(@$pl_extension_files, $File::Find::name); - } - }, - @pldirs); - CopySetOfFiles('PL Extension files', - $pl_extension_files, $target . '/share/extension/'); + if ($insttype ne "client") + { + CopySetOfFiles( + 'timezone names', + [ glob('src\timezone\tznames\*.txt') ], + $target . '/share/timezonesets/'); + CopyFiles( + 'timezone sets', + $target . '/share/timezonesets/', + 'src/timezone/tznames/', 'Default', 'Australia', 'India'); + CopySetOfFiles( + 'BKI files', + [ glob("src\\backend\\catalog\\postgres.*") ], + $target . '/share/'); + CopySetOfFiles( + 'SQL files', + [ glob("src\\backend\\catalog\\*.sql") ], + $target . '/share/'); + CopyFiles( + 'Information schema data', $target . '/share/', + 'src/backend/catalog/', 'sql_features.txt'); + GenerateConversionScript($target); + GenerateTimezoneFiles($target, $conf); + GenerateTsearchFiles($target); + CopySetOfFiles( + 'Stopword files', + [ glob("src\\backend\\snowball\\stopwords\\*.stop") ], + $target . '/share/tsearch_data/'); + CopySetOfFiles( + 'Dictionaries sample files', + [ glob("src\\backend\\tsearch\\*_sample.*") ], + $target . '/share/tsearch_data/'); + + my $pl_extension_files = []; + my @pldirs = ('src/pl/plpgsql/src'); + push @pldirs, "src/pl/plperl" if $config->{perl}; + push @pldirs, "src/pl/plpython" if $config->{python}; + push @pldirs, "src/pl/tcl" if $config->{tcl}; + File::Find::find( + { wanted => sub { + /^(.*--.*\.sql|.*\.control)\z/s + && push(@$pl_extension_files, $File::Find::name); + } + }, + @pldirs); + CopySetOfFiles('PL Extension files', + $pl_extension_files, $target . '/share/extension/'); + } GenerateNLSFiles($target, $config->{nls}, $majorver) if ($config->{nls}); @@ -218,6 +241,10 @@ sub CopySolutionOutput $sln =~ s/$rem//; + next + if ($insttype eq "client" && !grep { $_ eq $pf } + @client_program_files); + my $proj = read_file("$pf.$vcproj") || croak "Could not open $pf.$vcproj\n"; if ($vcproj eq 'vcproj' && $proj =~ qr{ConfigurationType="([^"]+)"}) @@ -378,6 +405,9 @@ sub CopyContribFiles { next if ($d =~ /^\./); next unless (-f "contrib/$d/Makefile"); + next + if ($insttype eq "client" && !grep { $_ eq $d } @client_contribs); + next if ($d eq "uuid-ossp" && !defined($config->{uuid})); next if ($d eq "sslinfo" && !defined($config->{openssl})); next if ($d eq "xml2" && !defined($config->{xml})); |