|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r78302 - trunk/tools/build/v2/engine
From: steven_at_[hidden]
Date: 2012-05-02 02:55:48
Author: steven_watanabe
Date: 2012-05-02 02:55:44 EDT (Wed, 02 May 2012)
New Revision: 78302
URL: http://svn.boost.org/trac/boost/changeset/78302
Log:
Avoid a spurious dependency.
Text files modified:
trunk/tools/build/v2/engine/make.c | 18 +++++++++++++-----
1 files changed, 13 insertions(+), 5 deletions(-)
Modified: trunk/tools/build/v2/engine/make.c
==============================================================================
--- trunk/tools/build/v2/engine/make.c (original)
+++ trunk/tools/build/v2/engine/make.c 2012-05-02 02:55:44 EDT (Wed, 02 May 2012)
@@ -301,6 +301,7 @@
{
TARGETS * c;
TARGET * ptime = t;
+ TARGET * located_target = 0;
time_t last;
time_t leaf;
time_t hlast;
@@ -346,11 +347,7 @@
* depending on us will depend on that other target as well.
*/
if ( another_target )
- {
- TARGET * other = bindtarget( another_target );
- t->depends = targetentry( t->depends, other );
- other->dependants = targetentry( other->dependants, t );
- }
+ located_target = bindtarget( another_target );
t->binding = t->time ? T_BIND_EXISTS : T_BIND_MISSING;
}
@@ -436,6 +433,14 @@
make0rescan( target_scc( c->target->includes ), rescanning );
}
+ if ( located_target )
+ {
+ if ( located_target->fate == T_FATE_INIT )
+ make0( located_target, ptime, depth + 1, counts, anyhow, rescanning );
+ else if ( located_target->fate != T_FATE_MAKING && rescanning )
+ make0rescan( located_target, rescanning );
+ }
+
/* Step 3b: recursively make0() internal includes node. */
if ( t->includes )
make0( t->includes, p, depth + 1, counts, anyhow, rescanning );
@@ -449,6 +454,9 @@
t->depends = targetchain( t->depends, incs );
}
+ if ( located_target )
+ t->depends = targetentry( t->depends, located_target );
+
/* Step 3d: detect cycles. */
{
int cycle_depth = depth;
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk