diff options
Diffstat (limited to 'usr.bin/make')
-rw-r--r-- | usr.bin/make/compat.c | 11 | ||||
-rw-r--r-- | usr.bin/make/engine.c | 6 | ||||
-rw-r--r-- | usr.bin/make/gnode.h | 5 | ||||
-rw-r--r-- | usr.bin/make/make.c | 16 | ||||
-rw-r--r-- | usr.bin/make/suff.c | 11 | ||||
-rw-r--r-- | usr.bin/make/targ.c | 12 |
6 files changed, 19 insertions, 42 deletions
diff --git a/usr.bin/make/compat.c b/usr.bin/make/compat.c index 8da3df0c660..8d51afe9f61 100644 --- a/usr.bin/make/compat.c +++ b/usr.bin/make/compat.c @@ -1,5 +1,5 @@ /* $OpenPackages$ */ -/* $OpenBSD: compat.c,v 1.65 2007/11/03 14:05:39 espie Exp $ */ +/* $OpenBSD: compat.c,v 1.66 2007/11/06 21:12:23 espie Exp $ */ /* $NetBSD: compat.c,v 1.14 1996/11/06 17:59:01 christos Exp $ */ /* @@ -99,11 +99,6 @@ CompatMake(void *gnp, /* The node to make */ return; } - if (Lst_Member(&gn->iParents, pgn) != NULL) { - Varq_Set(IMPSRC_INDEX, Varq_Value(TARGET_INDEX, gn), - pgn); - } - /* All the children were made ok. Now cmtime contains the * modification time of the newest child, we need to find out * if we exist and when we were modified last. The criteria @@ -189,10 +184,6 @@ CompatMake(void *gnp, /* The node to make */ * to abort. */ pgn->make = false; else { - if (Lst_Member(&gn->iParents, pgn) != NULL) { - Varq_Set(IMPSRC_INDEX, Varq_Value(TARGET_INDEX, gn), - pgn); - } switch (gn->made) { case BEINGMADE: Error("Graph cycles through %s\n", gn->name); diff --git a/usr.bin/make/engine.c b/usr.bin/make/engine.c index 9bc499edf1e..76ed176fd2d 100644 --- a/usr.bin/make/engine.c +++ b/usr.bin/make/engine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: engine.c,v 1.12 2007/11/03 14:05:39 espie Exp $ */ +/* $OpenBSD: engine.c,v 1.13 2007/11/06 21:12:23 espie Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. * Copyright (c) 1988, 1989 by Adam de Boor @@ -287,6 +287,10 @@ Make_DoAllVar(GNode *gn) { Lst_ForEach(&gn->children, MakeAddAllSrc, gn); + if (gn->impliedsrc) + Varq_Set(IMPSRC_INDEX, + Varq_Value(TARGET_INDEX, gn->impliedsrc), gn); + if (Varq_Value(OODATE_INDEX, gn) == NULL) Varq_Set(OODATE_INDEX, "", gn); if (Varq_Value(ALLSRC_INDEX, gn) == NULL) diff --git a/usr.bin/make/gnode.h b/usr.bin/make/gnode.h index 8317182d34e..6bd1687524b 100644 --- a/usr.bin/make/gnode.h +++ b/usr.bin/make/gnode.h @@ -1,7 +1,7 @@ #ifndef GNODE_H #define GNODE_H /* $OpenPackages$ */ -/* $OpenBSD: gnode.h,v 1.7 2007/11/02 17:27:24 espie Exp $ */ +/* $OpenBSD: gnode.h,v 1.8 2007/11/06 21:12:23 espie Exp $ */ /* * Copyright (c) 2001 Marc Espie. @@ -121,8 +121,7 @@ struct GNode_ { TIMESTAMP cmtime; /* The modification time of its youngest * child */ - LIST iParents; /* Links to parents for which this is an - * implied source, if any */ + GNode *impliedsrc; LIST cohorts; /* Other nodes for the :: operator */ LIST parents; /* Nodes that depend on this one */ LIST children; /* Nodes on which this one depends */ diff --git a/usr.bin/make/make.c b/usr.bin/make/make.c index e9b5053aea8..7cb4e75ffca 100644 --- a/usr.bin/make/make.c +++ b/usr.bin/make/make.c @@ -1,5 +1,5 @@ /* $OpenPackages$ */ -/* $OpenBSD: make.c,v 1.46 2007/11/06 21:09:42 espie Exp $ */ +/* $OpenBSD: make.c,v 1.47 2007/11/06 21:12:23 espie Exp $ */ /* $NetBSD: make.c,v 1.10 1996/11/06 17:59:15 christos Exp $ */ /* @@ -137,9 +137,6 @@ MakeHandleUse(void *pgn, void *cgn) * If the child wasn't made, the cmtime field of the parent will be * altered if the child's mtime is big enough. * - * Finally, if the child is the implied source for the parent, the - * parent's IMPSRC variable is set appropriately. - * *----------------------------------------------------------------------- */ void @@ -147,7 +144,7 @@ Make_Update(GNode *cgn) /* the child node */ { GNode *pgn; /* the parent node */ char *cname; /* the child's name */ - LstNode ln; /* Element in parents and iParents lists */ + LstNode ln; /* Element in parents list */ cname = Varq_Value(TARGET_INDEX, cgn); @@ -214,15 +211,6 @@ Make_Update(GNode *cgn) /* the child node */ if (succ->make && succ->unmade == 0 && succ->made == UNMADE) (void)Lst_QueueNew(&toBeMade, succ); } - - /* Set the .IMPSRC variables for all the implied parents - * of this node. */ - for (ln = Lst_First(&cgn->iParents); ln != NULL; ln = Lst_Adv(ln)) { - pgn = (GNode *)Lst_Datum(ln); - if (pgn->make) - Varq_Set(IMPSRC_INDEX, cname, pgn); - } - } static bool diff --git a/usr.bin/make/suff.c b/usr.bin/make/suff.c index 2a3e33ecda8..f161012ec22 100644 --- a/usr.bin/make/suff.c +++ b/usr.bin/make/suff.c @@ -1,5 +1,5 @@ /* $OpenPackages$ */ -/* $OpenBSD: suff.c,v 1.73 2007/11/02 17:27:24 espie Exp $ */ +/* $OpenBSD: suff.c,v 1.74 2007/11/06 21:12:23 espie Exp $ */ /* $NetBSD: suff.c,v 1.13 1996/11/06 17:59:25 christos Exp $ */ /* @@ -1280,10 +1280,9 @@ SuffApplyTransform( if ((sGn->type & OP_OPMASK) == OP_DOUBLEDEP) { /* When a :: node is used as the implied source of a node, we - * have to link all its cohorts in as sources as well. Only the - * initial sGn gets the target in its iParents list, however, - * as that will be sufficient to get the .IMPSRC variable set - * for tGn. */ + * have to link all its cohorts in as sources as well. There's + * only one implied src, as that will be sufficient to get + * the .IMPSRC variable set for tGn. */ for (ln=Lst_First(&sGn->cohorts); ln != NULL; ln=Lst_Adv(ln)) { gn = (GNode *)Lst_Datum(ln); @@ -1326,7 +1325,7 @@ SuffApplyTransform( /* Keep track of another parent to which this beast is transformed so * the .IMPSRC variable can be set correctly for the parent. */ - Lst_AtEnd(&sGn->iParents, tGn); + tGn->impliedsrc = sGn; return true; } diff --git a/usr.bin/make/targ.c b/usr.bin/make/targ.c index 27e678bef8a..4dabe25f231 100644 --- a/usr.bin/make/targ.c +++ b/usr.bin/make/targ.c @@ -1,5 +1,5 @@ /* $OpenPackages$ */ -/* $OpenBSD: targ.c,v 1.49 2007/11/02 17:27:24 espie Exp $ */ +/* $OpenBSD: targ.c,v 1.50 2007/11/06 21:12:23 espie Exp $ */ /* $NetBSD: targ.c,v 1.11 1997/02/20 16:51:50 christos Exp $ */ /* @@ -186,7 +186,6 @@ Targ_NewGNi(const char *name, const char *ename) gn->order = 0; ts_set_out_of_date(gn->mtime); ts_set_out_of_date(gn->cmtime); - Lst_Init(&gn->iParents); Lst_Init(&gn->cohorts); Lst_Init(&gn->parents); Lst_Init(&gn->children); @@ -195,6 +194,7 @@ Targ_NewGNi(const char *name, const char *ename) SymTable_Init(&gn->context); gn->lineno = 0; gn->fname = NULL; + gn->impliedsrc = NULL; Lst_Init(&gn->commands); gn->suffix = NULL; @@ -215,7 +215,6 @@ TargFreeGN(void *gnp) GNode *gn = (GNode *)gnp; efree(gn->path); - Lst_Destroy(&gn->iParents, NOFREE); Lst_Destroy(&gn->cohorts, NOFREE); Lst_Destroy(&gn->parents, NOFREE); Lst_Destroy(&gn->children, NOFREE); @@ -376,17 +375,14 @@ TargPrintNode(GNode *gn, int pass) printf("# unmade\n"); } } - if (!Lst_IsEmpty(&gn->iParents)) { - printf("# implicit parents: "); - Lst_Every(&gn->iParents, TargPrintName); - fputc('\n', stdout); - } } if (!Lst_IsEmpty(&gn->parents)) { printf("# parents: "); Lst_Every(&gn->parents, TargPrintName); fputc('\n', stdout); } + if (gn->impliedsrc) + printf("# implied source: %s\n", gn->impliedsrc->name); printf("%-16s", gn->name); switch (gn->type & OP_OPMASK) { |