diff options
| author | apb <apb@NetBSD.org> | 2006-02-26 22:45:46 +0000 |
|---|---|---|
| committer | apb <apb@NetBSD.org> | 2006-02-26 22:45:46 +0000 |
| commit | f34c12e9891a798cdb3bedffa2ee43aed79adbd7 (patch) | |
| tree | fa06d1a840e8ecb1c0cf47e3e36732edc0b3a31c /usr.bin/make/make.h | |
| parent | 3ea7f78b5754c90382f880088ad622295fe20eb8 (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.h | 26 |
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 :: |
