summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Mitz <mitza-oci@users.noreply.github.com>2014-01-29 22:03:05 +0000
committerAdam Mitz <mitza-oci@users.noreply.github.com>2014-01-29 22:03:05 +0000
commit0f16caab1d91c15cc137a5b181de981a1372bfba (patch)
tree5b4c4f7b67e6ab5a8e96ece14376c0688ebd266a
parent4ab97330787291ab6f16f211e8db472a9694cadd (diff)
downloadMPC-0f16caab1d91c15cc137a5b181de981a1372bfba.tar.gz
Use separate make targets for each project's "depend" in order to allow parallel make.
-rw-r--r--modules/MakeWorkspaceBase.pm44
-rw-r--r--modules/MakeWorkspaceCreator.pm2
-rw-r--r--modules/NMakeWorkspaceCreator.pm2
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