version 1.23, 2000/09/14 13:52:42 |
version 1.24, 2000/11/24 14:36:34 |
|
|
* Set the cmtime field of a parent node based on the mtime stamp in its |
* Set the cmtime field of a parent node based on the mtime stamp in its |
* child. Called from MakeOODate via Lst_ForEach. |
* child. Called from MakeOODate via Lst_ForEach. |
* |
* |
* Results: |
|
* Always returns 0. |
|
* |
|
* Side Effects: |
* Side Effects: |
* The cmtime of the parent node will be changed if the mtime |
* The cmtime of the parent node will be changed if the mtime |
* field of the child is greater than it. |
* field of the child is greater than it. |
|
|
GNode *pgn; /* the current parent */ |
GNode *pgn; /* the current parent */ |
GNode *cgn; /* the child we've just examined */ |
GNode *cgn; /* the child we've just examined */ |
{ |
{ |
if (cgn->mtime > pgn->cmtime) |
if (is_before(pgn->cmtime, cgn->mtime)) |
pgn->cmtime = cgn->mtime; |
pgn->cmtime = cgn->mtime; |
} |
} |
|
|
|
/* Wrapper to call Make_TimeStamp from a forEach loop */ |
static void |
static void |
MakeTimeStamp(pgn, cgn) |
MakeTimeStamp(pgn, cgn) |
void *pgn; /* the current parent */ |
void *pgn; /* the current parent */ |
|
|
*/ |
*/ |
|
|
oodate = Arch_LibOODate (gn) || |
oodate = Arch_LibOODate (gn) || |
(gn->cmtime == OUT_OF_DATE && (gn->type & OP_DOUBLEDEP)); |
(is_out_of_date(gn->cmtime) && (gn->type & OP_DOUBLEDEP)); |
} else if (gn->type & OP_JOIN) { |
} else if (gn->type & OP_JOIN) { |
/* |
/* |
* A target with the .JOIN attribute is only considered |
* A target with the .JOIN attribute is only considered |
|
|
} |
} |
} |
} |
oodate = TRUE; |
oodate = TRUE; |
} else if (gn->mtime < gn->cmtime || |
} else if (is_before(gn->mtime, gn->cmtime) || |
(gn->cmtime == OUT_OF_DATE && |
(is_out_of_date(gn->cmtime) && |
(gn->mtime == OUT_OF_DATE || (gn->type & OP_DOUBLEDEP)))) |
(is_out_of_date(gn->mtime) || (gn->type & OP_DOUBLEDEP)))) |
{ |
{ |
/* |
/* |
* A node whose modification time is less than that of its |
* A node whose modification time is less than that of its |
|
|
* it. |
* it. |
*/ |
*/ |
if (DEBUG(MAKE)) { |
if (DEBUG(MAKE)) { |
if (gn->mtime < gn->cmtime) { |
if (is_before(gn->mtime, gn->cmtime)) { |
printf("modified before source..."); |
printf("modified before source..."); |
} else if (gn->mtime == OUT_OF_DATE) { |
} else if (is_out_of_date(gn->mtime)) { |
printf("non-existent and no sources..."); |
printf("non-existent and no sources..."); |
} else { |
} else { |
printf(":: operator and no sources..."); |
printf(":: operator and no sources..."); |
|
|
if ( ! (cgn->type & (OP_EXEC|OP_USE))) { |
if ( ! (cgn->type & (OP_EXEC|OP_USE))) { |
if (cgn->made == MADE) { |
if (cgn->made == MADE) { |
pgn->childMade = TRUE; |
pgn->childMade = TRUE; |
if (pgn->cmtime < cgn->mtime) { |
if (is_before(pgn->cmtime, cgn->mtime)) { |
pgn->cmtime = cgn->mtime; |
pgn->cmtime = cgn->mtime; |
} |
} |
} else { |
} else { |
(void)Make_TimeStamp (pgn, cgn); |
(void)Make_TimeStamp(pgn, cgn); |
} |
} |
} |
} |
if (pgn->unmade == 0) { |
if (pgn->unmade == 0) { |
|
|
if (pgn->type & OP_JOIN) { |
if (pgn->type & OP_JOIN) { |
if (cgn->made == MADE) |
if (cgn->made == MADE) |
Varq_Append(OODATE_INDEX, child, pgn); |
Varq_Append(OODATE_INDEX, child, pgn); |
} else if ((pgn->mtime < cgn->mtime) || |
} else if (is_before(pgn->mtime, cgn->mtime) || |
(cgn->mtime >= now && cgn->made == MADE)) |
(!is_before(cgn->mtime, now) && cgn->made == MADE)) |
{ |
{ |
/* |
/* |
* It goes in the OODATE variable if the parent is younger than the |
* It goes in the OODATE variable if the parent is younger than the |