+1999-09-23 Paul D. Smith <psmith@gnu.org>
+
+ * Version 3.78.1 released.
+
+ * make.texinfo: Update version/date stamp.
+
+ * main.c (main): Argh. For some reason we were closing _all_ the
+ jobserver pipes before we re-exec'd due to changed makefiles.
+ This means that any re-exec got a "jobserver unavailable" error :-/.
+ I can't believe we didn't notice this before.
+
1999-09-22 Paul D. Smith <psmith@gnu.org>
* Version 3.78 released.
a bit saying whether we've seen this target in this pass or not.
(update_goal_chain): Initially set the global considered toggle to
1, since all targets initialize their boolean to 0. At the end of
- each pass, toggle the global considered variable. * filedef.h
- (struct file): Per-file considered toggle bit. * file.c: New
- global toggle variable considered.
+ each pass, toggle the global considered variable.
+ * filedef.h (struct file): Per-file considered toggle bit.
+ * file.c: New global toggle variable considered.
1999-04-05 Paul D. Smith <psmith@gnu.org>
$description = "Test parallelism (-j) option.";
-$details = "This test creates a makefile with three double-colon default
+$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
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
-
+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 = "FIVE\nSIX\nONE\nTWO\nTHREE\nFOUR\n";
+$answer = "ONE\nFOUR\nTHREE\nTWO\n";
&compare_output($answer, &get_logfile(1));
-# Test parallelism with included files
+# 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 3; @echo success
+print MAKEFILE <<"EOF";
+all: 1 2; \@echo success
--include 1.inc 2.inc 3.inc
+-include 1.inc 2.inc
-1.inc: ; @sleep 1; echo 1; echo "1: ; @sleep 2; echo $@ has been included" > $@
-2.inc: ; @sleep 2; echo 2; echo "2: ; @echo $@ has been included" > $@
-3.inc: ; @echo 3; echo "3: ; @sleep 1; echo $@ has been included" > $@
+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 = "3\n1\n2\n2.inc has been included\n3.inc has been included\n1.inc has been included\nsuccess\n";
+$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', '3.inc');
+unlink('1.inc', '2.inc');
1;