diff options
author | Magnus Hagander <magnus@hagander.net> | 2007-03-29 20:48:26 +0000 |
---|---|---|
committer | Magnus Hagander <magnus@hagander.net> | 2007-03-29 20:48:26 +0000 |
commit | 81622ac36e5a2d7aea585996a3170c786b68e926 (patch) | |
tree | 1f177b34f594a0f36bfe06968ad79e16df7651f5 | |
parent | 418834f60d0cae99d9af12b572da9b59ff0a5991 (diff) | |
download | postgresql-81622ac36e5a2d7aea585996a3170c786b68e926.tar.gz postgresql-81622ac36e5a2d7aea585996a3170c786b68e926.zip |
Install include files
-rw-r--r-- | src/tools/msvc/Install.pm | 91 |
1 files changed, 84 insertions, 7 deletions
diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm index 36496968428..c5501d9ee75 100644 --- a/src/tools/msvc/Install.pm +++ b/src/tools/msvc/Install.pm @@ -3,7 +3,7 @@ package Install; # # Package that provides 'make install' functionality for msvc builds # -# $PostgreSQL: pgsql/src/tools/msvc/Install.pm,v 1.5 2007/03/27 21:47:10 mha Exp $ +# $PostgreSQL: pgsql/src/tools/msvc/Install.pm,v 1.6 2007/03/29 20:48:26 mha Exp $ # use strict; use warnings; @@ -44,9 +44,9 @@ sub Install copy($target . '/lib/libpq.dll', $target . '/bin/libpq.dll'); CopySetOfFiles('config files', "*.sample", $target . '/share/'); CopyFiles( - 'Import libraries', $target .'/lib/', - "$conf\\", "postgres\\postgres.lib", - "libpq\\libpq.lib", "libecpg\\libecpg.lib" + 'Import libraries', + $target .'/lib/', + "$conf\\", "postgres\\postgres.lib","libpq\\libpq.lib", "libecpg\\libecpg.lib" ); CopySetOfFiles('timezone names', 'src\timezone\tznames\*.txt',$target . '/share/timezonesets/'); CopyFiles( @@ -64,6 +64,7 @@ sub Install GenerateConversionScript($target); GenerateTimezoneFiles($target,$conf); CopyContribFiles($target); + CopyIncludeFiles($target); GenerateNLSFiles($target,$config->{nls}) if ($config->{nls}); } @@ -101,17 +102,21 @@ sub CopySetOfFiles my $what = shift; my $spec = shift; my $target = shift; + my $silent = shift; + my $norecurse = shift; my $D; - print "Copying $what"; - open($D, "dir /b /s $spec |") || croak "Could not list $spec\n"; + my $subdirs = $norecurse?'':'/s'; + print "Copying $what" unless ($silent); + open($D, "dir /b $subdirs $spec |") || croak "Could not list $spec\n"; while (<$D>) { chomp; next if /regress/; # Skip temporary install in regression subdir my $tgt = $target . basename($_); print "."; - copy($_, $tgt) || croak "Could not copy $_: $!\n"; + my $src = $norecurse?(dirname($spec) . '/' . $_):$_; + copy($src, $tgt) || croak "Could not copy $src: $!\n"; } close($D); print "\n"; @@ -283,6 +288,78 @@ sub ParseAndCleanRule return $flist; } +sub CopyIncludeFiles +{ + my $target = shift; + + EnsureDirectories($target, 'include', 'include/libpq', 'include/postgresql', + 'include/postgresql/internal', 'include/postgresql/internal/libpq', + 'include/postgresql/server'); + + CopyFiles( + 'Public headers', + $target . '/include/', + 'src/include/', 'postgres_ext.h', 'pg_config.h', 'pg_config_os.h', 'pg_config_manual.h' + ); + copy('src/include/libpq/libpq-fs.h', $target . '/include/libpq/') + || croak 'Could not copy libpq-fs.h'; + + CopyFiles('Libpq headers', $target . '/include/', 'src/interfaces/libpq/', 'libpq-fe.h'); + CopyFiles( + 'Libpq internal headers', + $target .'/include/postgresql/internal/', + 'src/interfaces/libpq/', 'libpq-int.h', 'pqexpbuffer.h' + ); + + CopyFiles( + 'Internal headers', + $target . '/include/postgresql/internal/', + 'src/include/', 'c.h', 'port.h', 'postgres_fe.h' + ); + copy('src/include/libpq/pqcomm.h', $target . '/include/postgresql/internal/libpq/') + || croak 'Could not copy pqcomm.h'; + + CopyFiles( + 'Server headers', + $target . '/include/postgresql/server/', + 'src/include/', 'pg_config.h', 'pg_config_os.h' + ); + CopySetOfFiles('', "src\\include\\*.h", $target . '/include/postgresql/server/', 1, 1); + my $D; + opendir($D, 'src/include') || croak "Could not opendir on src/include!\n"; + + while (my $d = readdir($D)) + { + next if ($d =~ /^\./); + next if ($d eq 'CVS'); + next unless (-d 'src/include/' . $d); + + EnsureDirectories($target . '/include/postgresql/server', $d); + system( + "xcopy /s /i /q /r /y src\\include\\$d\\*.h $target\\include\\postgresql\\server\\$d\\") + && croak("Failed to copy include directory $d\n"); + } + closedir($D); + + my $mf = read_file('src/interfaces/ecpg/include/Makefile'); + $mf =~ s{\\s*[\r\n]+}{}mg; + $mf =~ /^ecpg_headers\s*=\s*(.*)$/m || croak "Could not find ecpg_headers line\n"; + CopyFiles( + 'ECPG headers', + $target . '/include/', + 'src/interfaces/ecpg/include/', + 'ecpg_config.h', split /\s+/,$1 + ); + $mf =~ /^informix_headers\s*=\s*(.*)$/m || croak "Could not find informix_headers line\n"; + EnsureDirectories($target . '/include/postgresql', 'informix', 'informix/esql'); + CopyFiles( + 'ECPG informix headers', + $target .'/include/postgresql/informix/esql/', + 'src/interfaces/ecpg/include/', + split /\s+/,$1 + ); +} + sub GenerateNLSFiles { my $target = shift; |