version 1.87, 2019/12/21 15:28:16 |
version 1.88, 2019/12/21 15:29:25 |
|
|
|
|
switch(gn->built_status) { |
switch(gn->built_status) { |
case UNKNOWN: |
case UNKNOWN: |
/* First mark ourselves to be made, then apply whatever |
/* First mark ourselves to be built, then apply whatever |
* transformations the suffix module thinks are necessary. |
* transformations the suffix module thinks are necessary. |
* Once that's done, we can descend and make all our children. |
* Once that's done, we can descend and make all our children. |
* If any of them has an error but the -k flag was given, |
* If any of them has an error but the -k flag was given, |
|
|
return; |
return; |
} |
} |
|
|
/* All the children were made ok. Now youngest points to |
/* All the children built ok. Now youngest points to |
* the newest child, we need to find out |
* the newest child, we need to find out |
* if we exist and when we were modified last. The criteria |
* if we exist and when we were modified last. The criteria |
* for datedness are defined by the Make_OODate function. */ |
* for datedness are defined by the Make_OODate function. */ |
|
|
*/ |
*/ |
sib = gn; |
sib = gn; |
do { |
do { |
/* We need to be re-made. We also have to make sure |
/* We need to be rebuilt. We also have to make sure |
* we've got a $? variable. To be nice, we also define |
* we've got a $? variable. To be nice, we also define |
* the $> variable using Make_DoAllVar(). |
* the $> variable using Make_DoAllVar(). |
*/ |
*/ |
|
|
gn->built_status = sib->built_status; |
gn->built_status = sib->built_status; |
|
|
if (gn->built_status != ERROR) { |
if (gn->built_status != ERROR) { |
/* If the node was made successfully, mark it so, |
/* If the node was built successfully, mark it so, |
* update its modification time and timestamp all |
* update its modification time and timestamp all |
* its parents. |
* its parents. |
* This is to keep its state from affecting that of |
* This is to keep its state from affecting that of |
|
|
printf("update time: %s\n", |
printf("update time: %s\n", |
time_to_string(&gn->mtime)); |
time_to_string(&gn->mtime)); |
if (!(gn->type & OP_EXEC)) { |
if (!(gn->type & OP_EXEC)) { |
pgn->childMade = true; |
pgn->child_rebuilt = true; |
Make_TimeStamp(pgn, gn); |
Make_TimeStamp(pgn, gn); |
} |
} |
} else if (keepgoing) |
} else if (keepgoing) |
|
|
break; |
break; |
case REBUILT: |
case REBUILT: |
if ((gn->type & OP_EXEC) == 0) { |
if ((gn->type & OP_EXEC) == 0) { |
pgn->childMade = true; |
pgn->child_rebuilt = true; |
Make_TimeStamp(pgn, gn); |
Make_TimeStamp(pgn, gn); |
} |
} |
break; |
break; |
|
|
Compat_Run(Lst targs) /* List of target nodes to re-create */ |
Compat_Run(Lst targs) /* List of target nodes to re-create */ |
{ |
{ |
GNode *gn = NULL; /* Current root target */ |
GNode *gn = NULL; /* Current root target */ |
int errors; /* Number of targets not remade due to errors */ |
int errors; /* Number of targets not built due to errors */ |
|
|
/* For each entry in the list of targets to create, call CompatMake on |
/* For each entry in the list of targets to create, call CompatMake on |
* it to create the thing. CompatMake will leave the 'built_status' |
* it to create the thing. CompatMake will leave the 'built_status' |
|
|
* REBUILT gn was recreated successfully |
* REBUILT gn was recreated successfully |
* ERROR An error occurred while gn was being |
* ERROR An error occurred while gn was being |
* created |
* created |
* ABORTED gn was not remade because one of its |
* ABORTED gn was not built because one of its |
* inferiors could not be made due to errors. |
* dependencies could not be built due |
*/ |
* to errors. */ |
errors = 0; |
errors = 0; |
while ((gn = Lst_DeQueue(targs)) != NULL) { |
while ((gn = Lst_DeQueue(targs)) != NULL) { |
CompatMake(gn, NULL); |
CompatMake(gn, NULL); |