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