Lines Matching refs:gn
320 is_submake(const char *cmd, GNode *gn)
329 p_make = Var_Value(gn, ".MAKE").str;
333 mp = Var_Subst(cmd, gn, VARE_EVAL);
364 any_is_submake(GNode *gn)
368 for (ln = gn->commands.first; ln != NULL; ln = ln->next)
369 if (is_submake(ln->datum, gn))
375 printCMD(const char *ucmd, FILE *fp, GNode *gn)
379 Var_Expand(&xcmd, gn, VARE_EVAL);
385 printCMDs(GNode *gn, FILE *fp)
389 for (ln = gn->commands.first; ln != NULL; ln = ln->next)
390 printCMD(ln->datum, fp, gn);
397 if ((gn->type & (flag))) { \
399 debug_printf("Skipping meta for %s: .%s\n", gn->name, str); \
409 meta_needed(GNode *gn, const char *dname,
422 if (!(gn->type & OP_META)) {
429 if (Lst_IsEmpty(&gn->commands)) {
431 debug_printf("Skipping meta for %s: no commands\n", gn->name);
434 if ((gn->type & (OP_META|OP_SUBMAKE)) == OP_SUBMAKE) {
436 if (any_is_submake(gn)) {
437 DEBUG1(META, "Skipping meta for %s: .SUBMAKE\n", gn->name);
445 debug_printf("Skipping meta for %s: no .OBJDIR\n", gn->name);
457 gn->name);
465 meta_create(BuildMon *pbm, GNode *gn)
478 dname = Var_Value(gn, ".OBJDIR");
479 tname = GNode_VarTarget(gn);
482 if (!meta_needed(gn, dname.str, objdir_realpath, true))
488 char *mp = Var_Subst("${" MAKE_META_PREFIX "}", gn, VARE_EVAL);
515 printCMDs(gn, fp);
519 cp = GNode_VarOodate(gn);
536 gn->type |= OP_META; /* in case anyone wants to know */
538 gn->type |= OP_SILENT;
657 meta_job_start(Job *job, GNode *gn)
662 pbm->mfp = meta_create(pbm, gn);
745 meta_job_error(Job *job, GNode *gn, bool ignerr, int status)
751 if (job != NULL && gn == NULL)
752 gn = Job_Node(job);
757 if (gn != NULL)
758 Global_Set(".ERROR_TARGET", GNode_Path(gn));
933 meta_ignore(GNode *gn, const char *p)
967 Var_Set(gn, ".p.", p);
969 pm = Var_Subst(expr, gn, VARE_EVAL);
988 fm = Var_Subst(fname, gn, VARE_EVAL);
1043 meta_filter_cmd(GNode *gn, char *s)
1045 Var_Set(gn, META_CMD_FILTER_VAR, s);
1048 gn, VARE_EVAL);
1053 meta_cmd_cmp(GNode *gn, char *a, char *b, bool filter)
1060 a = meta_filter_cmd(gn, a);
1061 b = meta_filter_cmd(gn, b);
1065 Var_Delete(gn, META_CMD_FILTER_VAR);
1070 meta_oodate(GNode *gn, bool oodate)
1098 dname = Var_Value(gn, ".OBJDIR");
1099 tname = GNode_VarTarget(gn);
1102 if (!meta_needed(gn, dname.str, fname3, false))
1114 GNode_SetLocalVars(gn);
1153 cmp_filter = metaCmpFilter || Var_Exists(gn, MAKE_META_CMP_FILTER);
1155 cmdNode = gn->commands.first;
1393 if (!meta_ignore(gn, p))
1411 if (meta_ignore(gn, p))
1463 cst.cst_mtime > gn->mtime) {
1516 cmd = Var_Subst(cmd, gn, VARE_EVAL_DEFINED);
1546 !(gn->type & OP_NOMETA_CMP) &&
1547 (meta_cmd_cmp(gn, p, cmd, cmp_filter) != 0)) {
1586 if (writeMeta && (metaMissing || (gn->type & OP_META))) {
1590 if (gn->path != NULL && (cp = strrchr(gn->path, '/')) != NULL &&
1591 (cp > gn->path)) {
1592 if (strncmp(curdir, gn->path, (size_t)(cp - gn->path)) != 0) {
1612 Var_Delete(gn, OODATE);
1613 Var_Set(gn, OODATE, GNode_VarAllsrc(gn));