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
my $targetmachine =
$self->{platform} eq 'Win32' ? 'MachineX86' : 'MachineX64';
- my $includes = $self->{includes};
- unless ($includes eq '' or $includes =~ /;$/)
- {
- $includes .= ';';
- }
+ my $includes = join ';', @{$self->{includes}}, "";
+
print $f <<EOF;
<ItemDefinitionGroup Condition="'\$(Configuration)|\$(Platform)'=='$cfgname|$self->{platform}'">
<ClCompile>
# Add PL dependencies
$p->AddIncludeDir($pl_src);
$p->AddReference($pl_proj);
- $p->AddIncludeDir($pl_proj->{includes});
+ $p->AddIncludeDir($_) for @{$pl_proj->{includes}};
foreach my $pl_lib (@{ $pl_proj->{libraries} })
{
$p->AddLibrary($pl_lib);
if ($type_proj)
{
$p->AddIncludeDir($type_src);
- $p->AddIncludeDir($type_proj->{includes});
+ $p->AddIncludeDir($_) for @{$type_proj->{includes}};
foreach my $type_lib (@{ $type_proj->{libraries} })
{
$p->AddLibrary($type_lib);
references => [],
libraries => [],
suffixlib => [],
- includes => '',
+ includes => [],
prefixincludes => '',
defines => ';',
solution => $solution,
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;
}