+ tempdir = p;
+}
+
+void Builder::add_default_tools()
+{
+ const string &arch_tc = current_arch->get_toolchain();
+ if(current_arch->get_system()=="android")
+ toolchain.add_toolchain(new AndroidTools(*this, *current_arch));
+ else if(arch_tc=="clang")
+ toolchain.add_toolchain(new ClangTools(*this, *current_arch));
+ else if(arch_tc=="gnu")
+ toolchain.add_toolchain(new GnuTools(*this, *current_arch));
+ toolchain.add_toolchain(new BuiltinTools(*this));
+ toolchain.add_tool(new DataTool(*this));
+}
+
+void Builder::set_logger(const Logger *l)
+{
+ logger = (l ? l : &default_logger);
+}
+
+list<string> Builder::collect_problems() const
+{
+ list<string> problems;
+ set<const Package *> broken_packages;
+ set<const Component *> broken_components;
+ set<const Tool *> broken_tools;
+
+ const BuildGraph::TargetMap &targets = build_graph.get_targets();
+ for(BuildGraph::TargetMap::const_iterator i=targets.begin(); i!=targets.end(); ++i)
+ if(i->second->is_broken())
+ {
+ const list<string> &tgt_problems = i->second->get_problems();
+ for(list<string>::const_iterator j=tgt_problems.begin(); j!=tgt_problems.end(); ++j)
+ problems.push_back(format("%s: %s", i->second->get_name(), *j));