diff options
author | David Rowley | 2021-07-28 22:14:25 +0000 |
---|---|---|
committer | David Rowley | 2021-07-28 22:14:25 +0000 |
commit | 33d74c5d00e45248df66fa1bcd9222e0713ea5b1 (patch) | |
tree | 41957d17e09323c6c1e9be9277d568a0bd9310f2 | |
parent | a00c138b78521b9bc68b480490a8d601ecdeb816 (diff) |
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
-rw-r--r-- | src/tools/msvc/MSBuildProject.pm | 7 | ||||
-rw-r--r-- | src/tools/msvc/Mkvcbuild.pm | 4 | ||||
-rw-r--r-- | src/tools/msvc/Project.pm | 12 |
3 files changed, 11 insertions, 12 deletions
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm index ebe6530ba5..fdd22e89eb 100644 --- a/src/tools/msvc/MSBuildProject.pm +++ b/src/tools/msvc/MSBuildProject.pm @@ -313,11 +313,8 @@ sub WriteItemDefinitionGroup 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> diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index 4c36e482fb..803d9cf30c 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -937,7 +937,7 @@ sub AddTransformModule # 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); @@ -947,7 +947,7 @@ sub AddTransformModule 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); diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm index e1a5d139d3..a6c3aa0d68 100644 --- a/src/tools/msvc/Project.pm +++ b/src/tools/msvc/Project.pm @@ -30,7 +30,7 @@ sub _new references => [], libraries => [], suffixlib => [], - includes => '', + includes => [], prefixincludes => '', defines => ';', solution => $solution, @@ -151,13 +151,15 @@ sub AddLibrary 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; } |