mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-29 08:09:02 +00:00
76 lines
1.9 KiB
Perl
76 lines
1.9 KiB
Perl
# -*-perl-*-
|
|
|
|
$description = "Test parallelism (-j) option.";
|
|
|
|
|
|
$details = "This test creates a makefile with three double-colon default
|
|
rules. The first rule has a series of sleep and echo commands
|
|
intended to run in series. The second and third have just an
|
|
echo statement. When make is called in this test, it is given
|
|
the -j option with a value of 4. This tells make that it may
|
|
start up to four jobs simultaneously. In this case, since the
|
|
first command is a sleep command, the output of the second
|
|
and third commands will appear before the first if indeed
|
|
make is running all of these commands in parallel.";
|
|
|
|
if (!$parallel_jobs) {
|
|
return -1;
|
|
}
|
|
|
|
if ($vos) {
|
|
$delete_command = "delete_file -no_ask";
|
|
$sleep_command = "sleep -seconds";
|
|
}
|
|
else {
|
|
$delete_command = "rm -f";
|
|
$sleep_command = "sleep";
|
|
}
|
|
|
|
open(MAKEFILE,"> $makefile");
|
|
|
|
print MAKEFILE <<"EOF";
|
|
all : def_1 def_5 def_6
|
|
def_1 :
|
|
\t\@$sleep_command 3 ; echo ONE
|
|
\t\@echo TWO
|
|
\t\@$sleep_command 1 ; echo THREE
|
|
\t\@echo FOUR
|
|
def_5 :
|
|
\t\@echo FIVE
|
|
def_6 :
|
|
\t\@$sleep_command 1 ; echo SIX
|
|
|
|
EOF
|
|
|
|
close(MAKEFILE);
|
|
|
|
&run_make_with_options($makefile, "-j 4", &get_logfile);
|
|
$answer = "FIVE\nSIX\nONE\nTWO\nTHREE\nFOUR\n";
|
|
&compare_output($answer, &get_logfile(1));
|
|
|
|
|
|
# Test parallelism with included files
|
|
|
|
$makefile2 = &get_tmpfile;
|
|
|
|
open(MAKEFILE,"> $makefile2");
|
|
|
|
print MAKEFILE <<'EOF';
|
|
all: 1 2 3; @echo success
|
|
|
|
-include 1.inc 2.inc 3.inc
|
|
|
|
1.inc: ; @sleep 1; echo 1; echo "1: ; @echo $@ has been included" > $@
|
|
2.inc: ; @sleep 2; echo 2; echo "2: ; @echo $@ has been included" > $@
|
|
3.inc: ; @echo 3; echo "3: ; @echo $@ has been included" > $@
|
|
EOF
|
|
|
|
close(MAKEFILE);
|
|
|
|
&run_make_with_options("$makefile2", "-j 4", &get_logfile);
|
|
$answer = "3\n1\n2\n1.inc has been included\n2.inc has been included\n3.inc has been included\nsuccess\n";
|
|
&compare_output($answer, &get_logfile(1));
|
|
|
|
unlink('1.inc', '2.inc', '3.inc');
|
|
|
|
1;
|