X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.cpp;h=c599e269408adb38d4b38c75808d19ef71dc83a6;hb=50baabc242633d531d3f9542e9a64491b6e12c6c;hp=8b900a4987af9230c4f8d860a004bcb49379825a;hpb=373e9bb43c24d38316c5bb0393f4a369563319d3;p=builder.git diff --git a/source/builder.cpp b/source/builder.cpp index 8b900a4..c599e26 100644 --- a/source/builder.cpp +++ b/source/builder.cpp @@ -150,9 +150,6 @@ Builder::Builder(int argc, char **argv): cmdline_targets.push_back(*i); } - if(cmdline_targets.empty()) - cmdline_targets.push_back("default"); - if(!work_dir.empty()) FS::chdir(work_dir); @@ -351,8 +348,7 @@ bool Builder::prepare_build() { package_manager.get_main_package().prepare(); - // Make the cmdline target depend on all targets mentioned on the command line - Target *cmdline = new VirtualTarget(*this, "cmdline"); + // Add targets from command line as goals for(NameList::iterator i=cmdline_targets.begin(); i!=cmdline_targets.end(); ++i) { Target *tgt = build_graph.get_target(*i); @@ -366,10 +362,10 @@ bool Builder::prepare_build() return false; } - cmdline->add_dependency(*tgt); + build_graph.add_goal(*tgt); } - cmdline->prepare(); + build_graph.prepare(); // Apply what-ifs for(NameList::iterator i=what_if.begin(); i!=what_if.end(); ++i) @@ -384,11 +380,7 @@ bool Builder::prepare_build() } if(build_all) - { - for(TargetMap::iterator i=targets.begin(); i!=targets.end(); ++i) - if(i->second->is_buildable() && !i->second->needs_rebuild()) - i->second->force_rebuild(); - } + build_graph.force_full_rebuild(); if(!dry_run) { @@ -402,13 +394,7 @@ bool Builder::prepare_build() int Builder::do_build() { - Target *cmdline = build_graph.get_target("cmdline"); - - unsigned total = 0; - const BuildGraph::TargetMap &targets = build_graph.get_targets(); - for(map::const_iterator i=targets.begin(); i!=targets.end(); ++i) - if(i->second->is_buildable() && i->second->needs_rebuild()) - ++total; + unsigned total = build_graph.count_rebuild_targets(); if(!total) { @@ -429,7 +415,7 @@ int Builder::do_build() { if(tasks.size()get_buildable_target(); + Target *tgt = build_graph.get_buildable_target(); if(tgt) { if(tgt->get_tool())