diff options
author | elliott_c <ocielliottc@users.noreply.github.com> | 2007-01-24 19:09:12 +0000 |
---|---|---|
committer | elliott_c <ocielliottc@users.noreply.github.com> | 2007-01-24 19:09:12 +0000 |
commit | cf859440fde48274769b275852fb62955039f5c9 (patch) | |
tree | 3c9379c9a90d6874842c5af96f38fd983772bdeb /modules/VC8WorkspaceCreator.pm | |
parent | 3648076de637043a6d14d9fbe7ce92aed67dedcd (diff) | |
download | MPC-cf859440fde48274769b275852fb62955039f5c9.tar.gz |
ChangeLogTag: Wed Jan 24 19:04:58 UTC 2007 Chad Elliott <elliott_c@ociweb.com>
Diffstat (limited to 'modules/VC8WorkspaceCreator.pm')
-rw-r--r-- | modules/VC8WorkspaceCreator.pm | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/modules/VC8WorkspaceCreator.pm b/modules/VC8WorkspaceCreator.pm index c0c31bc7..f89f6aff 100644 --- a/modules/VC8WorkspaceCreator.pm +++ b/modules/VC8WorkspaceCreator.pm @@ -49,6 +49,72 @@ sub pre_workspace { '# ', $self->create_command_line_string($0, @ARGV), $crlf); } +sub post_workspace { + my($self) = shift; + my($fh) = shift; + my($creator) = shift; + my($pjs) = $self->get_project_info(); + my(@projects) = (); + my(%gmap) = (); + + foreach my $project ($self->sort_dependencies($self->get_projects(), 0)) { + my($name, $deps, $guid, $lang) = @{$$pjs{$project}}; + if ($lang eq 'csharp' || $lang eq 'java' || $lang eq 'vb') { + $gmap{$name} = [$guid, $lang]; + push(@projects, $project); + } + } + + foreach my $project (@projects) { + my($ph) = new FileHandle(); + my($outdir) = $self->get_outdir(); + $outdir = $self->getcwd() if ($outdir eq '.'); + if (open($ph, "$outdir/$project")) { + my($write) = 0; + my(@read) = (); + my($crlf) = $self->crlf(); + my($cwd) = $self->getcwd(); + + while(<$ph>) { + if (/^(\s*)<!\-\-\s+MPC\s+ADD\s+DEPENDENCIES/) { + my($spc) = $1; + my($deps) = $self->get_validated_ordering($project); + foreach my $dep (@$deps) { + my($lang) = $gmap{$dep}->[1]; + if (defined $lang && + ($lang eq 'csharp' || $lang eq 'java' || $lang eq 'vb')) { + my($relative) = $self->get_relative_dep_file($creator, + "$cwd/$project", + $dep); + if (defined $relative) { + push(@read, $spc . '<ProjectReference Include="' . + $relative . '">' . $crlf, + $spc . ' <Project>{' . $gmap{$dep}->[0] . + '}</Project>' . $crlf, + $spc . ' <Name>' . $dep . '</Name>' . $crlf, + $spc . '</ProjectReference>' . $crlf); + $write = 1; + } + } + } + last if (!$write); + } + else { + push(@read, $_); + } + } + close($ph); + + if ($write && open($ph, ">$outdir/$project")) { + foreach my $line (@read) { + print $ph $line; + } + close($ph); + } + } + } +} + sub adjust_names { my($self) = shift; my($name) = shift; |