diff --git a/jam/compile.c b/jam/compile.c index efe84a6d70..9091613dde 100644 --- a/jam/compile.c +++ b/jam/compile.c @@ -576,6 +576,25 @@ evaluate_rule( action->rule = rule; action->targets = targetlist( (TARGETS *)0, lol_get( args, 0 ) ); action->sources = targetlist( (TARGETS *)0, lol_get( args, 1 ) ); + + /* Make targets[1,N-1] depend on targets[0], to describe the */ + /* generated targets for the rule. Do it with includes, to */ + /* reflect non-build dependency. */ + + if( action->targets ) + { + TARGET *t0 = action->targets->target; + for( t = action->targets->next; t; t = t->next ) + { + TARGET *tn = t->target; + if( !tn->includes ) + { + tn->includes = copytarget( tn ); + } + tn = tn->includes; + tn->depends = targetentry( tn->depends, t0 ); + } + } /* Append this action to the actions of each target */