Make the includes field an array in MSVC build scripts

Previously the 'includes' field was a string.  It's slightly nicer to
manage this when it's defined as an array instead. This allows us to
more easily detect and eliminate duplicates.

Reviewed-by: Álvaro Herrera, Andrew Dunstan, Dagfinn Ilmari Mannsåker
Discussion: https://postgr.es/m/CAApHDvpo6g5csCTjc_0C7DMvgFPomVb0Rh-AcW5afd=Ya=LRuw@mail.gmail.com
This commit is contained in:
David Rowley 2021-07-29 10:14:25 +12:00
parent a00c138b78
commit 33d74c5d00
3 changed files with 11 additions and 12 deletions

View File

@ -313,11 +313,8 @@ sub WriteItemDefinitionGroup
my $targetmachine = my $targetmachine =
$self->{platform} eq 'Win32' ? 'MachineX86' : 'MachineX64'; $self->{platform} eq 'Win32' ? 'MachineX86' : 'MachineX64';
my $includes = $self->{includes}; my $includes = join ';', @{$self->{includes}}, "";
unless ($includes eq '' or $includes =~ /;$/)
{
$includes .= ';';
}
print $f <<EOF; print $f <<EOF;
<ItemDefinitionGroup Condition="'\$(Configuration)|\$(Platform)'=='$cfgname|$self->{platform}'"> <ItemDefinitionGroup Condition="'\$(Configuration)|\$(Platform)'=='$cfgname|$self->{platform}'">
<ClCompile> <ClCompile>

View File

@ -937,7 +937,7 @@ sub AddTransformModule
# Add PL dependencies # Add PL dependencies
$p->AddIncludeDir($pl_src); $p->AddIncludeDir($pl_src);
$p->AddReference($pl_proj); $p->AddReference($pl_proj);
$p->AddIncludeDir($pl_proj->{includes}); $p->AddIncludeDir($_) for @{$pl_proj->{includes}};
foreach my $pl_lib (@{ $pl_proj->{libraries} }) foreach my $pl_lib (@{ $pl_proj->{libraries} })
{ {
$p->AddLibrary($pl_lib); $p->AddLibrary($pl_lib);
@ -947,7 +947,7 @@ sub AddTransformModule
if ($type_proj) if ($type_proj)
{ {
$p->AddIncludeDir($type_src); $p->AddIncludeDir($type_src);
$p->AddIncludeDir($type_proj->{includes}); $p->AddIncludeDir($_) for @{$type_proj->{includes}};
foreach my $type_lib (@{ $type_proj->{libraries} }) foreach my $type_lib (@{ $type_proj->{libraries} })
{ {
$p->AddLibrary($type_lib); $p->AddLibrary($type_lib);

View File

@ -30,7 +30,7 @@ sub _new
references => [], references => [],
libraries => [], libraries => [],
suffixlib => [], suffixlib => [],
includes => '', includes => [],
prefixincludes => '', prefixincludes => '',
defines => ';', defines => ';',
solution => $solution, solution => $solution,
@ -151,13 +151,15 @@ sub AddLibrary
sub AddIncludeDir sub AddIncludeDir
{ {
my ($self, $inc) = @_; my ($self, $incstr) = @_;
if ($self->{includes} ne '') foreach my $inc (split(/;/, $incstr))
{ {
$self->{includes} .= ';'; if (! grep { $_ eq $inc} @{ $self->{includes} })
{
push @{ $self->{includes} }, $inc;
}
} }
$self->{includes} .= $inc;
return; return;
} }