I think I've found a bug in make 3.79.1.  The make documentation 
suggests that rule execution order may differ when run with --jobs=n 
where n>1, but it doesn't say that rule evaluation should differ.

Consider the makefile

d: c
        @echo d

c:: b
        @touch c; echo b

c:: a
        @touch c; echo a

The evaluation of the c:: rules can and does differ depending on the 
number of jobs.  I've seen this behavior on a few different 
platforms: Linux and BeOS, both PPC and X86.

$ make d
b
a
d
$ rm c; make -j 2 d
b
d

So it appears that evaluation of the c:: a rule doesn't occur until 
after the c:: b rule has executed.

Interestingly, if the intermediate target c is specified, the two 
cases execute identically.

$ make c
b
a
$ m c; make -j 2 c
b
a

In this case, both rules appear to have been evaluated before either executes.


Regards,
-- Scott Lindsey <[EMAIL PROTECTED]>
-- 
Scott Lindsey <[EMAIL PROTECTED]>

_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make

Reply via email to