123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- # -*-perl-*-
- $description = "Test parallelism (-j) option.";
- $details = "This test creates a makefile with two 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_2 def_3
- def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWO
- def_2 : ; \@$sleep_command 2 ; echo THREE
- def_3 : ; \@$sleep_command 1 ; echo FOUR
- EOF
- close(MAKEFILE);
- &run_make_with_options($makefile, "-j 4", &get_logfile);
- $answer = "ONE\nFOUR\nTHREE\nTWO\n";
- &compare_output($answer, &get_logfile(1));
- # Test parallelism with included files. Here we sleep/echo while
- # building the included files, to test that they are being built in
- # parallel.
- $makefile2 = &get_tmpfile;
- open(MAKEFILE,"> $makefile2");
- print MAKEFILE <<"EOF";
- all: 1 2; \@echo success
- -include 1.inc 2.inc
- 1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo "1: ; \@echo ONE; $sleep_command 2; echo TWO" > \$\@
- 2.inc: ; \@$sleep_command 1; echo THREE.inc; echo "2: ; \@$sleep_command 1; echo THREE" > \$\@
- EOF
- close(MAKEFILE);
- &run_make_with_options("$makefile2", "-j 4", &get_logfile);
- $answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n";
- &compare_output($answer, &get_logfile(1));
- unlink('1.inc', '2.inc');
- # Test parallelism with included files--this time recurse first and make
- # sure the jobserver works.
- $makefile3 = &get_tmpfile;
- open(MAKEFILE,"> $makefile3");
- print MAKEFILE <<"EOF";
- recurse: ; \@\$(MAKE) --no-print-directory -f $makefile3 INC=yes all
- all: 1 2; \@echo success
- INC = no
- ifeq (\$(INC),yes)
- -include 1.inc 2.inc
- endif
- 1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo "1: ; \@echo ONE; $sleep_command 2; echo TWO" > \$\@
- 2.inc: ; \@$sleep_command 1; echo THREE.inc; echo "2: ; \@$sleep_command 1; echo THREE" > \$\@
- EOF
- close(MAKEFILE);
- &run_make_with_options("$makefile3", "-j 4", &get_logfile);
- $answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n";
- &compare_output($answer, &get_logfile(1));
- unlink('1.inc', '2.inc');
- 1;
|