=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/make/engine.c,v retrieving revision 1.68 retrieving revision 1.69 diff -c -r1.68 -r1.69 *** src/usr.bin/make/engine.c 2020/01/16 16:07:18 1.68 --- src/usr.bin/make/engine.c 2020/01/26 12:41:21 1.69 *************** *** 1,4 **** ! /* $OpenBSD: engine.c,v 1.68 2020/01/16 16:07:18 espie Exp $ */ /* * Copyright (c) 2012 Marc Espie. * --- 1,4 ---- ! /* $OpenBSD: engine.c,v 1.69 2020/01/26 12:41:21 espie Exp $ */ /* * Copyright (c) 2012 Marc Espie. * *************** *** 241,247 **** Job_Touch(GNode *gn) { handle_all_signals(); ! if (gn->type & (OP_JOIN|OP_USE|OP_EXEC|OP_OPTIONAL|OP_PHONY)) { /* * .JOIN, .USE, and .OPTIONAL targets are "virtual" targets * and, as such, shouldn't really be created. --- 241,247 ---- Job_Touch(GNode *gn) { handle_all_signals(); ! if (gn->type & (OP_USE|OP_OPTIONAL|OP_PHONY)) { /* * .JOIN, .USE, and .OPTIONAL targets are "virtual" targets * and, as such, shouldn't really be created. *************** *** 347,353 **** for (ln = Lst_First(&gn->children); ln != NULL; ln = Lst_Adv(ln)) { child = Lst_Datum(ln); ! if ((child->type & (OP_EXEC|OP_USE|OP_INVISIBLE)) != 0) continue; if (OP_NOP(child->type) || (target = Var(TARGET_INDEX, child)) == NULL) { --- 347,353 ---- for (ln = Lst_First(&gn->children); ln != NULL; ln = Lst_Adv(ln)) { child = Lst_Datum(ln); ! if ((child->type & (OP_USE|OP_INVISIBLE)) != 0) continue; if (OP_NOP(child->type) || (target = Var(TARGET_INDEX, child)) == NULL) { *************** *** 371,380 **** * hosed. */ do_oodate = false; ! if (gn->type & OP_JOIN) { ! if (child->built_status == REBUILT) ! do_oodate = true; ! } else if (is_strictly_before(gn->mtime, child->mtime) || (!is_strictly_before(child->mtime, starttime) && child->built_status == REBUILT)) do_oodate = true; --- 371,377 ---- * hosed. */ do_oodate = false; ! if (is_strictly_before(gn->mtime, child->mtime) || (!is_strictly_before(child->mtime, starttime) && child->built_status == REBUILT)) do_oodate = true; *************** *** 413,421 **** if (gn->impliedsrc) Var(IMPSRC_INDEX, gn) = Var(TARGET_INDEX, gn->impliedsrc); - - if (gn->type & OP_JOIN) - Var(TARGET_INDEX, gn) = Var(ALLSRC_INDEX, gn); } /* Wrapper to call Make_TimeStamp from a forEach loop. */ --- 410,415 ---- *************** *** 434,440 **** * Certain types of targets needn't even be sought as their datedness * doesn't depend on their modification time... */ ! if ((gn->type & (OP_JOIN|OP_USE|OP_EXEC|OP_PHONY)) == 0) { (void)Dir_MTime(gn); if (DEBUG(MAKE)) { if (!is_out_of_date(gn->mtime)) --- 428,434 ---- * Certain types of targets needn't even be sought as their datedness * doesn't depend on their modification time... */ ! if ((gn->type & (OP_USE|OP_PHONY)) == 0) { (void)Dir_MTime(gn); if (DEBUG(MAKE)) { if (!is_out_of_date(gn->mtime)) *************** *** 462,476 **** if (DEBUG(MAKE)) printf(".USE node..."); oodate = false; ! } else if (gn->type & OP_JOIN) { ! /* ! * A target with the .JOIN attribute is only considered ! * out-of-date if any of its children was out-of-date. ! */ ! if (DEBUG(MAKE)) ! printf(".JOIN node..."); ! oodate = gn->child_rebuilt; ! } else if (gn->type & (OP_FORCE|OP_EXEC|OP_PHONY)) { /* * A node which is the object of the force (!) operator or which * has the .EXEC attribute is always considered out-of-date. --- 456,462 ---- if (DEBUG(MAKE)) printf(".USE node..."); oodate = false; ! } else if (gn->type & (OP_FORCE|OP_PHONY)) { /* * A node which is the object of the force (!) operator or which * has the .EXEC attribute is always considered out-of-date.