summaryrefslogtreecommitdiff
path: root/modules/VC8WorkspaceCreator.pm
diff options
context:
space:
mode:
authorelliott_c <ocielliottc@users.noreply.github.com>2007-01-24 19:09:12 +0000
committerelliott_c <ocielliottc@users.noreply.github.com>2007-01-24 19:09:12 +0000
commitcf859440fde48274769b275852fb62955039f5c9 (patch)
tree3c9379c9a90d6874842c5af96f38fd983772bdeb /modules/VC8WorkspaceCreator.pm
parent3648076de637043a6d14d9fbe7ce92aed67dedcd (diff)
downloadMPC-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.pm66
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;