+
+void BuildGraph::add_goal(Target &t)
+{
+ goals->add_dependency(t);
+}
+
+void BuildGraph::prepare()
+{
+ if(goals->get_dependencies().empty())
+ add_goal(*get_target("default"));
+ goals->prepare();
+}
+
+void BuildGraph::force_full_rebuild()
+{
+ for(TargetMap::iterator i=targets.begin(); i!=targets.end(); ++i)
+ if(i->second->is_buildable() && !i->second->needs_rebuild())
+ i->second->force_rebuild();
+}
+
+unsigned BuildGraph::count_rebuild_targets() const
+{
+ unsigned count = 0;
+ for(map<string, Target *>::const_iterator i=targets.begin(); i!=targets.end(); ++i)
+ if(i->second->is_buildable() && i->second->needs_rebuild())
+ ++count;
+ return count;
+}
+
+Target *BuildGraph::get_buildable_target() const
+{
+ return goals->get_buildable_target();
+}