# -*-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;