On Mon, May 14, 2007 at 11:05:24PM +0200, Bram Moolenaar wrote: > > Hmm, in my POV a rule like: > > target: one two three > > means that "one", "two" and "three" are build in sequence, not at the > same time.
This means `one', `two' and `three' have to be built for `target'. More precisely any commands necessary to build any of `target's prerequisites will be fully executed before any commands necessary to build the target. The order is chosen with regard to the full dependency tree: all: a b c a: c @echo a b: @echo b c: b @echo c Single-job make has no reason to reorder the prerequisites once they are fully resolved, but AFAIK it is free to. GNU make even has a special construct to specify the order of build without implying dependency. BSD make OTOH has a `be backward compatible' option to enforce building in dependency order (it is on by default in single-job invocations). Both will give you b c a from Makefile all: a b c a: @sleep 3 @echo a b: @sleep 1 @echo b c: @sleep 2 @echo c when run with enough jobs. > I suppose adding the "-jN" argument changes the semantics of > the Makefile, and that causes it to break. If there ever was such semantics. I've yet to see a make specification that precisely defines the build order of independent targets. > The Vim makefile was written for a common version of all make programs. > So that it builds nearly everywhere. I'm not sure supporting "-jN" is > possible without breaking it for some system. Or including false > dependencies. Maybe, although non-working -jN often indicates missing real dependencies. Anyway, if one neither knows he cannot use -jN nor that he can run make without running configure first -- which I suppose characterizes most people -- it works. And with independent dependencies that rewrite the same file with different content it probably cannot be fixed. > I know, in my view "make" should do everything. Somehow people have > accepted that some part of the building should be done separately, with > the excuse that it's called configuration. Big mistake in my opinion. There's nothing wrong on acknowledging there are inherent chicken-egg problems and breaking the cycle explicitly. Yeti -- http://gwyddion.net/