X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftarget.cpp;h=2005d25cfc55817792d47289a2c1c2dabb58ce9d;hb=4629d189a531c962cf15a511df787f30c3adcb02;hp=38eaab59708440fb3d70bd3761ac4e793e53f321;hpb=83d2a8a39e0a09733ffc666d7f885fc328b831f2;p=builder.git diff --git a/source/target.cpp b/source/target.cpp index 38eaab5..2005d25 100644 --- a/source/target.cpp +++ b/source/target.cpp @@ -26,8 +26,8 @@ Target::Target(Builder &b, const Package *p, const string &n): building(false), rebuild(false), deps_ready(false), - prepared(false), - counted(false) + preparing(false), + prepared(false) { builder.add_target(this); } @@ -65,13 +65,19 @@ void Target::prepare() { if(prepared) return; + if(preparing) + { + builder.problem((package ? package->get_name() : string()), "Dependency cycle detected at "+name); + return; + } - prepared=true; + preparing=true; for(TargetList::iterator i=depends.begin(); i!=depends.end(); ++i) (*i)->prepare(); check_rebuild(); - + preparing=false; + prepared=true; } Action *Target::build() @@ -97,18 +103,6 @@ Action *Target::build() return action; } -unsigned Target::count_rebuild() -{ - if(counted) - return 0; - - counted=true; - unsigned count=rebuild; - for(TargetList::iterator i=depends.begin(); i!=depends.end(); ++i) - count+=(*i)->count_rebuild(); - return count; -} - void Target::touch() { mtime=Time::now();