diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm index 05435c4059..47ec46fbde 100644 --- a/src/tools/msvc/Project.pm +++ b/src/tools/msvc/Project.pm @@ -18,7 +18,8 @@ sub new { guid => Win32::GuidGen(), files => {}, references => [], - libraries => '', + libraries => [], + suffixlib => [], includes => '', defines => ';', solution => $solution, @@ -86,12 +87,12 @@ sub AddReference { } sub AddLibrary { - my ($self, $lib) = @_; + my ($self, $lib, $dbgsuffix) = @_; - if ($self->{libraries} ne '') { - $self->{libraries} .= ' '; + push @{$self->{libraries}}, $lib; + if ($dbgsuffix) { + push @{$self->{suffixlib}}, $lib; } - $self->{libraries} .= $lib; } sub AddIncludeDir { @@ -351,7 +352,19 @@ sub WriteConfiguration { my ($self, $f, $cfgname, $p) = @_; my $cfgtype = ($self->{type} eq "exe")?1:($self->{type} eq "dll"?2:4); - my $libs = $self->{libraries}; + my $libcfg = (uc $cfgname eq "RELEASE")?"MD":"MDd"; + my $libs = ''; + foreach my $lib (@{$self->{libraries}}) { + my $xlib = $lib; + foreach my $slib (@{$self->{suffixlib}}) { + if ($slib eq $lib) { + $xlib =~ s/\.lib$/$libcfg.lib/; + last; + } + } + $libs .= $xlib . " "; + } + $libs =~ s/ $//; $libs =~ s/__CFGNAME__/$cfgname/g; print $f <{options}->{openssl}); print O "#define ENABLE_NLS 1\n" if ($self->{options}->{nls}); print O "#define LOCALEDIR \"/usr/local/pgsql/share/locale\"\n" if ($self->{options}->{nls}); - if ($self->{options}->{nls}) { + if ($self->{options}->{krb5}) { print O "#define KRB5 1\n"; print O "#define HAVE_KRB5_ERROR_TEXT_DATA 1\n"; print O "#define HAVE_KRB5_TICKET_ENC_PART2 1\n"; @@ -220,8 +220,8 @@ sub AddProject { } if ($self->{options}->{openssl}) { $proj->AddIncludeDir($self->{options}->{openssl} . '\include'); - $proj->AddLibrary($self->{options}->{openssl} . '\lib\VC\ssleay32.lib'); - $proj->AddLibrary($self->{options}->{openssl} . '\lib\VC\libeay32.lib'); + $proj->AddLibrary($self->{options}->{openssl} . '\lib\VC\ssleay32.lib', 1); + $proj->AddLibrary($self->{options}->{openssl} . '\lib\VC\libeay32.lib', 1); } if ($self->{options}->{nls}) { $proj->AddIncludeDir($self->{options}->{nls} . '\include'); diff --git a/src/tools/msvc/config.pl b/src/tools/msvc/config.pl index f6ece40d07..56de6139c1 100644 --- a/src/tools/msvc/config.pl +++ b/src/tools/msvc/config.pl @@ -6,7 +6,7 @@ our $config = { asserts=>1, # --enable-cassert nls=>undef, # --enable-nls= tcl=>'c:\tcl', # --with-tls= - perl=>1, # --with-perl + perl=>'c:\perl', # --with-perl python=>'c:\python24', # --with-python= krb5=>'c:\prog\pgsql\depend\krb5', # --with-krb5= ldap=>1, # --with-ldap diff --git a/src/tools/msvc/mkvcbuild.pl b/src/tools/msvc/mkvcbuild.pl index 6fc246f9a5..ec3e326ac5 100644 --- a/src/tools/msvc/mkvcbuild.pl +++ b/src/tools/msvc/mkvcbuild.pl @@ -47,24 +47,23 @@ $plpgsql->AddFiles('src\pl\plpgsql\src','scan.l','gram.y'); $plpgsql->AddReference($postgres); if ($solution->{options}->{perl}) { -# Already running in perl, so use the version that we already have information for. - use Config; my $plperl = $solution->AddProject('plperl','dll','PLs','src\pl\plperl'); - $plperl->AddIncludeDir($Config{archlibexp} . '\CORE'); + $plperl->AddIncludeDir($solution->{options}->{perl} . '/lib/CORE'); $plperl->AddDefine('PLPERL_HAVE_UID_GID'); if (Solution::IsNewer('src\pl\plperl\SPI.c','src\pl\plperl\SPI.xs')) { print 'Building src\pl\plperl\SPI.c...' . "\n"; - system('perl ' . $Config{privlibexp} . '/ExtUtils/xsubpp -typemap ' . $Config{privlibexp} . '/ExtUtils/typemap src\pl\plperl\SPI.xs >src\pl\plperl\SPI.c'); + system($solution->{options}->{perl} . '/bin/perl ' . $solution->{options}->{perl} . '/lib/COREExtUtils/xsubpp -typemap ' . $solution->{options}->{perl} . '/lib/CORE/ExtUtils/typemap src\pl\plperl\SPI.xs >src\pl\plperl\SPI.c'); die 'Failed to create SPI.c' . "\n" if ((!(-f 'src\pl\plperl\SPI.c')) || -z 'src\pl\plperl\SPI.c'); } $plperl->AddReference($postgres); - $plperl->AddLibrary($Config{archlibexp} . '\CORE\perl58.lib'); + $plperl->AddLibrary($solution->{options}->{perl} . '\lib\CORE\perl58.lib'); } if ($solution->{options}->{python}) { my $plpython = $solution->AddProject('plpython','dll','PLs','src\pl\plpython'); $plpython->AddIncludeDir($solution->{options}->{python} . '\include'); - $plpython->AddLibrary($solution->{options}->{python} . '\Libs\python24.lib'); + $solution->{options}->{python} =~ /\\Python(\d{2})/i || croak "Could not determine python version from path"; + $plpython->AddLibrary($solution->{options}->{python} . "\\Libs\\python$1.lib"); $plpython->AddReference($postgres); } @@ -125,6 +124,8 @@ my $pgreset = AddSimpleFrontend('pg_resetxlog'); my $pgevent = $solution->AddProject('pgevent','dll','bin'); $pgevent->AddFiles('src\bin\pgevent','pgevent.c','pgmsgevent.rc'); +$pgevent->AddResourceFile('src\bin\pgevent','Eventlog message formatter'); +$pgevent->RemoveFile('src\bin\pgevent\win32ver.rc'); $pgevent->UseDef('src\bin\pgevent\pgevent.def'); my $psql = AddSimpleFrontend('psql', 1);