More MSVC build fixes:
authorTom Lane
Mon, 20 Nov 2006 19:18:02 +0000 (19:18 +0000)
committerTom Lane
Mon, 20 Nov 2006 19:18:02 +0000 (19:18 +0000)
* New versions of OpenSSL come with proper debug versions, and use
suffixed names on the LIBs for that. Adapts library handling to deal
with that.

* Fixes error where it incorrectly enabled Kerberos based on NLS
configuration instead of Kerberos configuration

* Specifies path of perl in config, instead of using current one.
Required when using a 64-bit perl normally, but want to build pl/perl
against 32-bit one (required)

* Fix so pgevent generates win32ver.rc automatically

Magnus Hagander

src/tools/msvc/Project.pm
src/tools/msvc/Solution.pm
src/tools/msvc/config.pl
src/tools/msvc/mkvcbuild.pl

index 05435c405954d683e19d82e3b79487d3cf744c94..47ec46fbde17fe8442372a71bc42eb7bfb36ce0d 100644 (file)
@@ -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 <
   {name}" IntermediateDirectory=".\\$cfgname\\$self->{name}"
index 1373007501822622f1d937336d54af8afff68807..104edfd2d9db9580863f2cbd67a5e9d937a67912 100644 (file)
@@ -83,7 +83,7 @@ sub GenerateFiles {
        print O "#define USE_SSL 1\n" if ($self->{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');
index f6ece40d07e67c4b72e293ae1f4ea5b2fd09e385..56de6139c16cd57f4b0638b276e0a19c8d47428f 100644 (file)
@@ -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
index 6fc246f9a5ffa2d6dd6827c897df4faad27956bd..ec3e326ac5284e0e1a4464e5ec41119b4a8955ff 100644 (file)
@@ -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);