Subject: CVS commit: src/usr.bin/make
To: None <source-changes@NetBSD.org>
From: David Laight <dsl@netbsd.org>
List: source-changes
Date: 11/17/2006 22:07:39
Module Name: src
Committed By: dsl
Date: Fri Nov 17 22:07:39 UTC 2006
Modified Files:
src/usr.bin/make: compat.c main.c make.c make.h nonints.h parse.c
suff.c targ.c
Log Message:
A rather large rototil in the way the parallel make code schedules jobs.
This gives a considerable speedup in the processing of .WAIT and .ORDER.
Both .WAIT and .ORDER stop both the commands of the node, and its dependant
nodes being built until the LH nodes are complete.
.WAIT only applies to the dependency line on which it appears, whereas
.ORDER applies globally between the two nodes.
In both cases dependant nodes can be built because other targets need them.
make now processes the target list left to right, scheduling child nodes
as they are needed to make other nodes (instead of attempting to generate
a bottom-up dependency graph at the start). This means that 'make -j1'
will tend to build in the same order as a non-parallel make.
Note that:
all: x y
x: a .WAIT b
y: b .WAIT a
does not generate a dependency loop.
But
x: y
.ORDER y x
does (unless something elswhere causes 'y' to be built).
To generate a diff of this commit:
cvs rdiff -r1.65 -r1.66 src/usr.bin/make/compat.c
cvs rdiff -r1.136 -r1.137 src/usr.bin/make/main.c
cvs rdiff -r1.67 -r1.68 src/usr.bin/make/make.c
cvs rdiff -r1.63 -r1.64 src/usr.bin/make/make.h
cvs rdiff -r1.40 -r1.41 src/usr.bin/make/nonints.h
cvs rdiff -r1.119 -r1.120 src/usr.bin/make/parse.c
cvs rdiff -r1.60 -r1.61 src/usr.bin/make/suff.c
cvs rdiff -r1.44 -r1.45 src/usr.bin/make/targ.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.