Commit 91f03ba5 authored by Noah Misch's avatar Noah Misch

MSVC: Recognize PGFILEDESC in contrib and conversion_procs modules.

Achieve this by consistently using four-argument Solution::AddProject()
calls.  Remove ad hoc Makefile parsing made redundant by doing that.

Michael Paquier and Noah Misch, reviewed by MauMau.
parent 52be3aae
...@@ -474,8 +474,10 @@ sub mkvcbuild ...@@ -474,8 +474,10 @@ sub mkvcbuild
push @contrib_excludes, 'uuid-ossp'; push @contrib_excludes, 'uuid-ossp';
} }
# Pgcrypto makefile too complex to parse.... # AddProject() does not recognize the constructs used to populate OBJS in
my $pgcrypto = $solution->AddProject('pgcrypto', 'dll', 'crypto'); # the pgcrypto Makefile, so it will discover no files.
my $pgcrypto =
$solution->AddProject('pgcrypto', 'dll', 'crypto', 'contrib\\pgcrypto');
$pgcrypto->AddFiles( $pgcrypto->AddFiles(
'contrib\pgcrypto', 'pgcrypto.c', 'contrib\pgcrypto', 'pgcrypto.c',
'px.c', 'px-hmac.c', 'px.c', 'px-hmac.c',
...@@ -527,18 +529,9 @@ sub mkvcbuild ...@@ -527,18 +529,9 @@ sub mkvcbuild
|| die 'Could not match in conversion makefile' . "\n"; || die 'Could not match in conversion makefile' . "\n";
foreach my $sub (split /\s+/, $1) foreach my $sub (split /\s+/, $1)
{ {
my $mf = Project::read_file( my $dir = 'src\backend\utils\mb\conversion_procs\\' . $sub;
'src\backend\utils\mb\conversion_procs\\' . $sub . '\Makefile'); my $p = $solution->AddProject($sub, 'dll', 'conversion procs', $dir);
my $p = $solution->AddProject($sub, 'dll', 'conversion procs'); $p->AddFile("$dir\\$sub.c"); # implicit source file
$p->AddFile('src\backend\utils\mb\conversion_procs\\'
. $sub . '\\'
. $sub
. '.c');
if ($mf =~ m{^SRCS\s*\+=\s*(.*)$}m)
{
$p->AddFile(
'src\backend\utils\mb\conversion_procs\\' . $sub . '\\' . $1);
}
$p->AddReference($postgres); $p->AddReference($postgres);
} }
...@@ -646,44 +639,17 @@ sub AddContrib ...@@ -646,44 +639,17 @@ sub AddContrib
if ($mf =~ /^MODULE_big\s*=\s*(.*)$/mg) if ($mf =~ /^MODULE_big\s*=\s*(.*)$/mg)
{ {
my $dn = $1; my $dn = $1;
$mf =~ s{\\\s*[\r\n]+}{}mg; my $proj =
my $proj = $solution->AddProject($dn, 'dll', 'contrib'); $solution->AddProject($dn, 'dll', 'contrib', 'contrib\\' . $n);
$mf =~ /^OBJS\s*=\s*(.*)$/gm
|| croak "Could not find objects in MODULE_big for $n\n";
my $objs = $1;
while ($objs =~ /\b([\w-]+\.o)\b/g)
{
my $o = $1;
$o =~ s/\.o$/.c/;
$proj->AddFile('contrib\\' . $n . '\\' . $o);
}
$proj->AddReference($postgres); $proj->AddReference($postgres);
if ($mf =~ /^SUBDIRS\s*:?=\s*(.*)$/mg)
{
foreach my $d (split /\s+/, $1)
{
my $mf2 = Project::read_file(
'contrib\\' . $n . '\\' . $d . '\Makefile');
$mf2 =~ s{\\\s*[\r\n]+}{}mg;
$mf2 =~ /^SUBOBJS\s*=\s*(.*)$/gm
|| croak
"Could not find objects in MODULE_big for $n, subdir $d\n";
$objs = $1;
while ($objs =~ /\b([\w-]+\.o)\b/g)
{
my $o = $1;
$o =~ s/\.o$/.c/;
$proj->AddFile('contrib\\' . $n . '\\' . $d . '\\' . $o);
}
}
}
AdjustContribProj($proj); AdjustContribProj($proj);
} }
elsif ($mf =~ /^MODULES\s*=\s*(.*)$/mg) elsif ($mf =~ /^MODULES\s*=\s*(.*)$/mg)
{ {
foreach my $mod (split /\s+/, $1) foreach my $mod (split /\s+/, $1)
{ {
my $proj = $solution->AddProject($mod, 'dll', 'contrib'); my $proj =
$solution->AddProject($mod, 'dll', 'contrib', 'contrib\\' . $n);
$proj->AddFile('contrib\\' . $n . '\\' . $mod . '.c'); $proj->AddFile('contrib\\' . $n . '\\' . $mod . '.c');
$proj->AddReference($postgres); $proj->AddReference($postgres);
AdjustContribProj($proj); AdjustContribProj($proj);
...@@ -691,17 +657,8 @@ sub AddContrib ...@@ -691,17 +657,8 @@ sub AddContrib
} }
elsif ($mf =~ /^PROGRAM\s*=\s*(.*)$/mg) elsif ($mf =~ /^PROGRAM\s*=\s*(.*)$/mg)
{ {
my $proj = $solution->AddProject($1, 'exe', 'contrib'); my $proj =
$mf =~ s{\\\s*[\r\n]+}{}mg; $solution->AddProject($1, 'exe', 'contrib', 'contrib\\' . $n);
$mf =~ /^OBJS\s*=\s*(.*)$/gm
|| croak "Could not find objects in PROGRAM for $n\n";
my $objs = $1;
while ($objs =~ /\b([\w-]+\.o)\b/g)
{
my $o = $1;
$o =~ s/\.o$/.c/;
$proj->AddFile('contrib\\' . $n . '\\' . $o);
}
AdjustContribProj($proj); AdjustContribProj($proj);
} }
else else
...@@ -717,6 +674,7 @@ sub GenerateContribSqlFiles ...@@ -717,6 +674,7 @@ sub GenerateContribSqlFiles
{ {
my $n = shift; my $n = shift;
my $mf = shift; my $mf = shift;
$mf =~ s{\\\s*[\r\n]+}{}mg;
if ($mf =~ /^DATA_built\s*=\s*(.*)$/mg) if ($mf =~ /^DATA_built\s*=\s*(.*)$/mg)
{ {
my $l = $1; my $l = $1;
......
...@@ -19,6 +19,8 @@ if exist pgsql.suo del /q /a:H pgsql.suo ...@@ -19,6 +19,8 @@ if exist pgsql.suo del /q /a:H pgsql.suo
del /s /q src\bin\win32ver.rc 2> NUL del /s /q src\bin\win32ver.rc 2> NUL
del /s /q src\interfaces\win32ver.rc 2> NUL del /s /q src\interfaces\win32ver.rc 2> NUL
if exist src\backend\win32ver.rc del /q src\backend\win32ver.rc if exist src\backend\win32ver.rc del /q src\backend\win32ver.rc
for /d %%f in (contrib\*) do if exist %%f\win32ver.rc del /q %%f\win32ver.rc
for /d %%f in (src\backend\utils\mb\conversion_procs\*) do if exist %%f\win32ver.rc del /q %%f\win32ver.rc
REM Delete files created with GenerateFiles() in Solution.pm REM Delete files created with GenerateFiles() in Solution.pm
if exist src\include\pg_config.h del /q src\include\pg_config.h if exist src\include\pg_config.h del /q src\include\pg_config.h
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment