summaryrefslogtreecommitdiff
path: root/usr.bin/make/make.h
diff options
context:
space:
mode:
authorapb <apb@NetBSD.org>2006-02-26 22:45:46 +0000
committerapb <apb@NetBSD.org>2006-02-26 22:45:46 +0000
commitf34c12e9891a798cdb3bedffa2ee43aed79adbd7 (patch)
treefa06d1a840e8ecb1c0cf47e3e36732edc0b3a31c /usr.bin/make/make.h
parent3ea7f78b5754c90382f880088ad622295fe20eb8 (diff)
Make ".WAIT" apply recursively to all children of nodes on the right
hand side of the .WAIT, except when the recursive interpretation would cause a cycle in the dependency graph. Discussed in tech-toolchain. Reviewed by christos, sjg.
Diffstat (limited to 'usr.bin/make/make.h')
-rw-r--r--usr.bin/make/make.h26
1 files changed, 17 insertions, 9 deletions
diff --git a/usr.bin/make/make.h b/usr.bin/make/make.h
index 34ed67c5252..8a247fdc40e 100644
--- a/usr.bin/make/make.h
+++ b/usr.bin/make/make.h
@@ -129,20 +129,25 @@
* 7) the number of its children that are, as yet, unmade
* 8) its modification time
* 9) the modification time of its youngest child (qv. make.c)
- * 10) a list of nodes for which this is a source
- * 11) a list of nodes on which this depends
+ * 10) a list of nodes for which this is a source (parents)
+ * 11) a list of nodes on which this depends (children)
* 12) a list of nodes that depend on this, as gleaned from the
- * transformation rules.
- * 13) a list of nodes of the same name created by the :: operator
- * 14) a list of nodes that must be made (if they're made) before
- * this node can be, but that do no enter into the datedness of
+ * transformation rules (iParents)
+ * 13) a list of ancestor nodes, which includes parents, iParents,
+ * and recursive parents of parents
+ * 14) a list of nodes of the same name created by the :: operator
+ * 15) a list of nodes that must be made (if they're made) before
+ * this node can be, but that do not enter into the datedness of
* this node.
- * 15) a list of nodes that must be made (if they're made) after
+ * 16) a list of nodes that must be made (if they're made) before
+ * this node or any child of this node can be, but that do not
+ * enter into the datedness of this node.
+ * 17) a list of nodes that must be made (if they're made) after
* this node is, but that do not depend on this node, in the
* normal sense.
- * 16) a Lst of ``local'' variables that are specific to this target
+ * 18) a Lst of ``local'' variables that are specific to this target
* and this target only (qv. var.c [$@ $< $?, etc.])
- * 17) a Lst of strings that are commands to be given to a shell
+ * 19) a Lst of strings that are commands to be given to a shell
* to create this target.
*/
typedef struct GNode {
@@ -189,9 +194,12 @@ typedef struct GNode {
* implied source, if any */
Lst cohorts; /* Other nodes for the :: operator */
Lst parents; /* Nodes that depend on this one */
+ Lst ancestors; /* Parents, parents of parents, ... */
Lst children; /* Nodes on which this one depends */
Lst successors; /* Nodes that must be made after this one */
Lst preds; /* Nodes that must be made before this one */
+ Lst recpreds; /* Nodes that must be added to preds
+ * recursively for all child nodes */
int unmade_cohorts;/* # of unmade instances on the
cohorts list */
struct GNode *centurion; /* Pointer to the first instance of a ::