diff options
author | Adam Mitz <mitza-oci@users.noreply.github.com> | 2014-01-29 22:03:05 +0000 |
---|---|---|
committer | Adam Mitz <mitza-oci@users.noreply.github.com> | 2014-01-29 22:03:05 +0000 |
commit | 0f16caab1d91c15cc137a5b181de981a1372bfba (patch) | |
tree | 5b4c4f7b67e6ab5a8e96ece14376c0688ebd266a | |
parent | 4ab97330787291ab6f16f211e8db472a9694cadd (diff) | |
download | MPC-0f16caab1d91c15cc137a5b181de981a1372bfba.tar.gz |
Use separate make targets for each project's "depend" in order to allow parallel make.
-rw-r--r-- | modules/MakeWorkspaceBase.pm | 44 | ||||
-rw-r--r-- | modules/MakeWorkspaceCreator.pm | 2 | ||||
-rw-r--r-- | modules/NMakeWorkspaceCreator.pm | 2 |
3 files changed, 32 insertions, 16 deletions
diff --git a/modules/MakeWorkspaceBase.pm b/modules/MakeWorkspaceBase.pm index 5e58c29f..2533cb9b 100644 --- a/modules/MakeWorkspaceBase.pm +++ b/modules/MakeWorkspaceBase.pm @@ -77,32 +77,43 @@ sub workspace_preamble { $crlf); } +sub write_top_level_rule { + my($self, $fh, $crlf, $list, $remain, $trans, $maxline, $target, $suffix) = @_; -sub write_named_targets { - my($self, $fh, $crlf, $targnum, $list, $remain, $targpre, $allpre, $trans, $phony, $andsym, $maxline) = @_; - - ## Save the targets for later - $self->{'make_targets'} = $remain; - - ## Print out the "all" target if (defined $maxline) { - my $all = 'all:'; + my $line = $target . ':'; foreach my $project (@$list) { - $all .= " $$trans{$project}"; + $line .= " $$trans{$project}$suffix"; } - if (length($all) < $maxline) { - print $fh $crlf, $all; + if (length($line) < $maxline) { + print $fh $crlf, $line; } else { - $remain = 'all ' . $remain; + $$remain = $target . ' ' . $$remain; } } else { - print $fh $crlf . 'all:'; + print $fh $crlf . $target . ':'; foreach my $project (@$list) { - print $fh " $$trans{$project}"; + print $fh " $$trans{$project}$suffix"; } } +} + +sub write_named_targets { + my($self, $fh, $crlf, $targnum, $list, $remain, $targpre, $allpre, $trans, $phony, $andsym, $maxline) = @_; + + ## Save the targets for later + $self->{'make_targets'} = $remain; + + ## Print out the "all" target + $self->write_top_level_rule($fh, $crlf, $list, \$remain, + $trans, $maxline, 'all', ''); + print $fh $crlf; + + ## Print out the "depend" target + $self->write_top_level_rule($fh, $crlf, $list, \$remain, + $trans, $maxline, 'depend', '-depend'); ## Print out all other targets here print $fh "$crlf$crlf$remain:$crlf"; @@ -122,6 +133,11 @@ sub write_named_targets { $self->write_project_targets($fh, $crlf, $targpre . $allpre . 'all', [ $project ], $andsym); + print $fh ($phony ? "$crlf.PHONY: $$trans{$project}-depend" : ''), + $crlf, $$trans{$project}, '-depend:', $crlf; + $self->write_project_targets($fh, $crlf, + $targpre . $allpre . 'depend', + [ $project ], $andsym); } ## Print out the project_name_list target diff --git a/modules/MakeWorkspaceCreator.pm b/modules/MakeWorkspaceCreator.pm index 389bbf3c..41575531 100644 --- a/modules/MakeWorkspaceCreator.pm +++ b/modules/MakeWorkspaceCreator.pm @@ -24,7 +24,7 @@ use vars qw(@ISA); # Data Section # ************************************************************ -my $targets = 'clean depend generated realclean check-syntax $(CUSTOM_TARGETS)'; +my $targets = 'clean generated realclean check-syntax $(CUSTOM_TARGETS)'; # ************************************************************ # Subroutine Section diff --git a/modules/NMakeWorkspaceCreator.pm b/modules/NMakeWorkspaceCreator.pm index c5bcb62d..dd1263ca 100644 --- a/modules/NMakeWorkspaceCreator.pm +++ b/modules/NMakeWorkspaceCreator.pm @@ -26,7 +26,7 @@ use vars qw(@ISA); # Data Section # ************************************************************ -my $targets = 'clean depend generated realclean $(CUSTOM_TARGETS)'; +my $targets = 'clean generated realclean $(CUSTOM_TARGETS)'; # ************************************************************ # Subroutine Section |