GNode
GNode *gn;
Arch_Touch(GNode *gn)
Arch_MTime(GNode *gn)
Arch_MemMTime(GNode *gn)
GNode *pgn;
extern void Arch_Touch(GNode *);
extern struct timespec Arch_MTime(GNode *);
extern struct timespec Arch_MemMTime(GNode *);
Compat_Update(GNode *gn UNUSED)
GNode *gn = NULL; /* Current root target */
GNode *gn = gnp;
GNode *pgn = pgnp;
GNode *sib;
extern void Compat_Update(GNode *);
GNode *gn;
GNode *gn;
Dir_MTime(GNode *gn)
extern struct timespec Dir_MTime(GNode *);
TargPrintNode(GNode *gn, bool full)
dump_special(GNode **t, const char *name, int prop)
GNode **t = sort_ohash_by_name(targets_hash());
const GNode *gn = gnp;
TargPrintOnlySrc(GNode *gn)
node_find_valid_commands(GNode *gn)
list_parents(GNode *gn, FILE *out)
GNode *p = Lst_Datum(ln);
node_failure(GNode *gn)
Job_Touch(GNode *gn)
Make_TimeStamp(GNode *parent, GNode *child)
Make_HandleUse(GNode *cgn, /* The .USE node */
GNode *pgn) /* The target of the .USE node */
GNode *gn; /* A child of the .USE node */
Make_DoAllVar(GNode *gn)
GNode *child;
Make_OODate(GNode *gn)
job_attach_node(Job *job, GNode *node)
run_gnode(GNode *gn)
GNode *gn = job->node;
static void list_parents(GNode *, FILE *);
GNode *node; /* Target of this job */
extern void job_attach_node(Job *, GNode *);
extern bool node_find_valid_commands(GNode *);
extern void node_failure(GNode *);
extern void Job_Touch(GNode *);
extern void Make_TimeStamp(GNode *, GNode *);
extern void Make_HandleUse(GNode *, GNode *);
extern bool Make_OODate(GNode *);
extern void Make_DoAllVar(GNode *);
extern int run_gnode(GNode *);
void (*node_updated)(GNode *);
engine_node_updated(GNode *gn)
extern void engine_node_updated(GNode *);
ExpandWildChildren(LstNode after, GNode *cgn, GNode *pgn)
GNode *gn; /* New source 8) */
GNode *pgn)
GNode *cgn = Lst_Datum(ln);
expand_children_from(GNode *parent, LstNode from)
static void ExpandChildren(LstNode, GNode *);
static void ExpandVarChildren(LstNode, GNode *, GNode *);
static void ExpandWildChildren(LstNode, GNode *, GNode *);
LinkParent(GNode *cgn, GNode *pgn)
ExpandVarChildren(LstNode after, GNode *cgn, GNode *pgn)
GNode *gn; /* New source 8) */
extern void LinkParent(GNode *, GNode *);
extern void expand_children_from(GNode *, LstNode);
(l)->a = ereallocarray(NULL, (l)->size, sizeof(GNode *)); \
GNode **a; /* Only used for gnodes right now */
(l)->size, sizeof(struct GNode *)); \
GNode *youngest; /* Node's youngest child */
GNode *impliedsrc; /* found by suff, to help with localvars */
GNode *groupling; /* target lists, for HELDBACK: do not build two
GNode *watched; /* the node currently building for HELDBACK */
GNode *sibling; /* equivalent targets (not complete yet) */
GNode *next;
Job_Make(GNode *gn)
extern void Job_Make(GNode *);
run_node(GNode *gn, bool *has_errors, bool *out_of_date)
static void print_unlink_cycle(struct growableArray *, GNode *);
static GNode *find_cycle(Lst, struct growableArray *);
static bool try_to_make_node(GNode *);
static bool has_predecessor_left_to_build(GNode *);
static void requeue_successors(GNode *);
GNode *e;
has_predecessor_left_to_build(GNode *gn)
GNode *pgn = Lst_Datum(ln);
requeue_successors(GNode *gn)
GNode *succ = Lst_Datum(ln);
requeue(GNode *gn)
Make_Update(GNode *cgn) /* the child node */
GNode *pgn; /* the parent node */
try_to_make_node(GNode *gn)
GNode *gn2;
GNode *gn2;
GNode *gn;
GNode *gn = gnp;
GNode *gn = to_addp;
GNode *cgn = cgnp;
GNode *pgn = pgnp;
GNode *gn;
GNode *gn;
print_unlink_cycle(struct growableArray *l, GNode *c)
GNode *gn = NULL;
GNode *gn2 = Lst_Datum(ln);
GNode *c;
static GNode *
GNode *gn = Lst_Datum(ln);
GNode *c;
extern void Make_Update(GNode *);
GNode *gn = gnp;
GNode *gn = gnp;
static GNode *mainNode; /* The main target to create. This is the
static GNode *predecessor;
static void ParseLinkSrc(GNode *, GNode *);
static int ParseDoOp(GNode **, unsigned int);
static void ParseDoSpecial(GNode *, unsigned int);
static int ParseAddDep(GNode *, GNode *);
register_target(GNode *gn, struct ohash *t)
GNode *gn2;
static void apply_op(struct growableArray *, unsigned int, GNode *);
GNode *gn, *gn2;
static bool register_target(GNode *, struct ohash *);
GNode *gn = targets->a[i];
ParseLinkSrc(GNode *pgn, GNode *cgn)
ParseDoOp(GNode **gnp, unsigned int op)
GNode *gn = *gnp;
GNode *cohort;
ParseDoSpecial(GNode *gn, unsigned int special_op)
ParseAddDep(GNode *p, GNode *s)
apply_op(struct growableArray *targets, unsigned int op, GNode *gn)
GNode *gn = Targ_FindNodei(src, esrc, TARG_CREATE);
GNode *gn = gnp;
GNode *gn;
GNode *gn;
record_possible_suffix(Suff *s, GNode *gn, char *eoname, Lst srcs, Lst targs)
record_possible_suffixes(GNode *gn, Lst srcs, Lst targs)
GNode *gn, /* Node for which to find sources */
GNode *node; /* The node describing the file */
Suff_FindDeps(GNode *gn)
SuffFindDeps(GNode *gn, Lst slst)
SuffPrintTrans(GNode *t)
static void record_possible_suffix(Suff *, GNode *, char *, Lst, Lst);
static void record_possible_suffixes(GNode *, Lst, Lst);
GNode **u;
static bool SuffApplyTransform(GNode *, GNode *, Suff *, Suff *);
static void SuffFindDeps(GNode *, Lst);
static void SuffFindArchiveDeps(GNode *, Lst);
static void SuffFindNormalDeps(GNode *, Lst);
static void SuffPrintTrans(GNode *);
static GNode *find_transform(const char *);
static GNode *find_or_create_transformi(const char *, const char *);
static GNode *
static GNode *
GNode *r;
GNode *
GNode *gn; /* GNode of transformation rule */
find_suffix_path(GNode *gn)
GNode *gn;
GNode *t; /* Target GNode */
GNode *s; /* Source GNode */
GNode *tGn, /* Target node */
GNode *sGn, /* Source node */
GNode *gn; /* Node for same */
GNode *gn, /* Node for which to locate dependencies */
GNode *mem; /* Node for member */
extern GNode *Suff_ParseAsTransform(const char *, const char *);
extern void Suff_FindDeps(GNode *);
extern Lst find_suffix_path(GNode *);
offsetof(GNode, name), NULL, hash_calloc, hash_free, element_alloc
static GNode *Targ_mk_node(const char *, const char *, unsigned int,
GNode *begin_node, *end_node, *interrupt_node, *DEFAULT;
static GNode *
GNode *gn;
GNode *
GNode *
GNode *gn;
GNode *
GNode *gn;
GNode *gn;
Targ_Ignore(GNode *gn)
Targ_Silent(GNode *gn)
Targ_Precious(GNode *gn)
node_is_real(GNode *gn)
status_to_string(GNode *gn)
extern GNode *Targ_NewGNi(const char *, const char *);
extern GNode *Targ_FindNodei(const char *, const char *, int);
extern GNode *Targ_mk_special_node(const char *, size_t, uint32_t,
extern bool Targ_Ignore(GNode *);
extern bool Targ_Silent(GNode *);
extern bool Targ_Precious(GNode *);
extern bool node_is_real(GNode *);
extern GNode *begin_node, *end_node, *interrupt_node, *DEFAULT;
extern const char *status_to_string(GNode *);
GNode *gn;
kludge_look_harder_for_target(GNode *gn)
GNode *extra, *cgn;
attach_node(GNode *gn, GNode *extra)
GNode *tmp;
names_match(GNode *a, GNode *b)
find_siblings(GNode *gn)
GNode *gn2;
look_harder_for_target(GNode *gn)
is_sibling(GNode *gn, GNode *gn2)
GNode *sibling;
GNode *first, *last;
static void attach_node(GNode *, GNode *);
static void add_to_equiv_list(struct ohash *, GNode *);
static char *names_match(GNode *, GNode *);
static void find_siblings(GNode *);
add_to_equiv_list(struct ohash *equiv, GNode *gn)
extern void look_harder_for_target(GNode *);
extern bool is_sibling(GNode *, GNode *);
extern void kludge_look_harder_for_target(GNode *);
GNode *current_node = NULL;
extern GNode *current_node;