X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuildgraph.cpp;h=6ae13dcdf304cd5396b02b2a9b3a68bf5af3da0e;hb=HEAD;hp=46c0c4855ae02544cac7e8fee47e471b969da914;hpb=690b9c5f340504517cf6ba8aad0c168dcdff4efa;p=builder.git diff --git a/source/buildgraph.cpp b/source/buildgraph.cpp deleted file mode 100644 index 46c0c48..0000000 --- a/source/buildgraph.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include "builder.h" -#include "buildgraph.h" -#include "component.h" -#include "sourcepackage.h" -#include "tool.h" -#include "virtualtarget.h" - -using namespace std; - -BuildGraph::BuildGraph(Builder &b): - builder(b), - goals(new VirtualTarget(builder, "goals")) -{ - Target *world = new VirtualTarget(builder, "world"); - world->add_dependency(*new VirtualTarget(builder, "default")); - world->add_dependency(*new VirtualTarget(builder, "install")); - world->add_dependency(*new VirtualTarget(builder, "archives")); -} - -BuildGraph::~BuildGraph() -{ - for(const auto &kvp: targets) - delete kvp.second; -} - -Target *BuildGraph::get_target(const string &n) const -{ - auto i = targets.find(n); - if(i!=targets.end()) - return i->second; - return 0; -} - -void BuildGraph::add_target(Target *t) -{ - targets.insert(TargetMap::value_type(t->get_name(), t)); -} - -void BuildGraph::add_primary_target(Target &t) -{ - get_target("world")->add_dependency(t); - - Package *main_pkg = &builder.get_package_manager().get_main_package(); - if(t.get_package()==main_pkg && t.get_component() && t.get_component()->is_default()) - get_target("default")->add_dependency(t); -} - -void BuildGraph::add_installed_target(Target &t) -{ - Target *inst_tgt = 0; - if(const Tool *tool = t.get_tool()) - inst_tgt = tool->create_install(t); - if(!inst_tgt) - inst_tgt = builder.get_toolchain().get_tool("CP").create_target(t); - get_target("install")->add_dependency(*inst_tgt); -} - -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(const auto &kvp: targets) - if(kvp.second->is_buildable() && !kvp.second->needs_rebuild()) - kvp.second->force_rebuild(); -} - -unsigned BuildGraph::count_rebuild_targets() const -{ - unsigned count = 0; - for(const auto &kvp: targets) - if(kvp.second->is_buildable() && kvp.second->needs_rebuild()) - ++count; - return count; -} - -Target *BuildGraph::get_buildable_target() const -{ - return goals->get_buildable_target(); -}