diff options
author | elliott_c <ocielliottc@users.noreply.github.com> | 2003-05-01 18:02:37 +0000 |
---|---|---|
committer | elliott_c <ocielliottc@users.noreply.github.com> | 2003-05-01 18:02:37 +0000 |
commit | e3535492071a82e03aebda9d9f1a47171d48b469 (patch) | |
tree | accf452af3bbc34d04188306df8ae5afc0af32c9 | |
parent | bca4dac13d702f675945998153bdf0f47f28c73e (diff) | |
download | MPC-e3535492071a82e03aebda9d9f1a47171d48b469.tar.gz |
ChangeLogTag: Thu May 1 12:55:13 2003 Chad Elliott <elliott_c@ociweb.com>
-rw-r--r-- | modules/VC6WorkspaceCreator.pm | 10 | ||||
-rw-r--r-- | modules/VC7WorkspaceCreator.pm | 6 | ||||
-rw-r--r-- | modules/WorkspaceCreator.pm | 60 |
3 files changed, 45 insertions, 31 deletions
diff --git a/modules/VC6WorkspaceCreator.pm b/modules/VC6WorkspaceCreator.pm index d3a376a4..921461aa 100644 --- a/modules/VC6WorkspaceCreator.pm +++ b/modules/VC6WorkspaceCreator.pm @@ -57,8 +57,8 @@ sub write_comps { my($dupfound) = 0; foreach my $project (@$projects) { - my($pi) = $$pjs{$project}; - my($name, $deps) = @$pi; + my($name) = $$pjs{$project}->[0]; + my($deps) = $self->get_validated_ordering($project); if (defined $names{$name}) { ## Having duplicate project names is an error in a VC6 Workspace. ## We will create the project, but we will warn the user that @@ -71,12 +71,10 @@ sub write_comps { $names{$name} = 1; } - ## Convert all /'s to \ - $project = $self->slash_to_backslash($project); - print $fh "###############################################################################$crlf" . $crlf . - "Project: \"$name\"=$project - Package Owner=<4>$crlf" . + "Project: \"$name\"=" . $self->slash_to_backslash($project) . + " - Package Owner=<4>$crlf" . $crlf . "Package=<5>$crlf" . "{{{$crlf" . diff --git a/modules/VC7WorkspaceCreator.pm b/modules/VC7WorkspaceCreator.pm index 67c31ec2..146a775d 100644 --- a/modules/VC7WorkspaceCreator.pm +++ b/modules/VC7WorkspaceCreator.pm @@ -79,7 +79,8 @@ sub print_dependencies { ## Project Dependencies print $fh "\tGlobalSection(ProjectDependencies) = postSolution$crlf"; foreach my $project (@$list) { - my($name, $deps, $pguid) = @{$$pjs{$project}}; + my($name, $rawdeps, $pguid) = @{$$pjs{$project}}; + my($deps) = $self->get_validated_ordering($project); if (defined $deps && $deps ne '') { my($darr) = $self->create_array($deps); my($i) = 0; @@ -110,7 +111,8 @@ sub write_comps { ## Project Information foreach my $project (sort @list) { - my($name, $deps, $pguid) = @{$$pjs{$project}}; + my($name, $rawdeps, $pguid) = @{$$pjs{$project}}; + my($deps) = $self->get_validated_ordering($project); ## Convert all /'s to \ my($cpy) = $self->slash_to_backslash($project); diff --git a/modules/WorkspaceCreator.pm b/modules/WorkspaceCreator.pm index efa6ae54..cfd41aa0 100644 --- a/modules/WorkspaceCreator.pm +++ b/modules/WorkspaceCreator.pm @@ -573,7 +573,8 @@ sub generate_project_files { } ## Generate the key for this project file - my($prkey) = $self->getcwd() . "/$file-$postkey"; + my($prkey) = $self->getcwd() . '/' . + ($file eq '' ? $dir : $file) . "-$postkey"; ## We must change to the subdirectory for ## which this project file is intended @@ -689,8 +690,8 @@ sub sort_dependencies { ## by the project dpendencies. for(my $i = 0; $i <= $#list; $i++) { my($project) = $list[$i]; - my($pi) = $$pjs{$project}; - my($name, $deps) = @$pi; + my($name) = $$pjs{$project}->[0]; + my($deps) = $self->get_validated_ordering($project); if ($deps ne '') { my($darr) = $self->create_array($deps); @@ -894,34 +895,47 @@ sub generate_recursive_input_list { sub verify_build_ordering { my($self) = shift; my($projects) = $self->get_projects(); - my($pjs) = $self->get_project_info(); foreach my $project (@$projects) { - my($name, $deps) = @{$$pjs{$project}}; - if (defined $deps && $deps ne '') { - my($darr) = $self->create_array($deps); - foreach my $dep (@$darr) { - my($found) = 0; - ## Avoid cirular dependencies - if ($dep ne $name && $dep ne basename($project)) { - foreach my $p (@$projects) { - if ($dep eq $$pjs{$p}->[0] || $dep eq basename($p)) { - $found = 1; - last; - } + $self->get_validated_ordering($project); + } +} + + +sub get_validated_ordering { + my($self) = shift; + my($project) = shift; + my($pjs) = $self->get_project_info(); + + my($name, $deps) = @{$$pjs{$project}}; + if (defined $deps && $deps ne '') { + my($darr) = $self->create_array($deps); + my($projects) = $self->get_projects(); + foreach my $dep (@$darr) { + my($found) = 0; + ## Avoid cirular dependencies + if ($dep ne $name && $dep ne basename($project)) { + foreach my $p (@$projects) { + if ($dep eq $$pjs{$p}->[0] || $dep eq basename($p)) { + $found = 1; + last; } - if (!$found) { - if (defined $ENV{MPC_VERBOSE_ORDERING}) { - print "WARNING: '$name' references '$dep' which has " . - "not been processed\n"; - } - $deps =~ s/\s*"$dep"\s*/ /g; + } + if (!$found) { + if (defined $ENV{MPC_VERBOSE_ORDERING}) { + print "WARNING: '$name' references '$dep' which has " . + "not been processed\n"; } + $deps =~ s/\s*"$dep"\s*/ /g; } } - $$pjs{$project}->[1] = $deps; } } + + $deps =~ s/^\s+//; + $deps =~ s/\s+$//; + + return $deps; } # ************************************************************ |