X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.cpp;h=504fc7d8ea565139fdda95eb731f61ea103fd60e;hb=675571163de39c2872ab1b78c8ab0c6b84dac538;hp=bd1ee1aa82b523c450faeb6c72357e9d6651fc8d;hpb=bd2a50ecb9f582c6e9569ffc9f33d41f10363c5f;p=builder.git diff --git a/source/builder.cpp b/source/builder.cpp index bd1ee1a..504fc7d 100644 --- a/source/builder.cpp +++ b/source/builder.cpp @@ -21,15 +21,13 @@ #include "gnuccompiler.h" #include "gnucxxcompiler.h" #include "gnulinker.h" -#include "header.h" -#include "install.h" +#include "installedfile.h" #include "misc.h" #include "package.h" #include "pkgconfig.h" #include "pkgconfiggenerator.h" #include "sharedlibrary.h" #include "sourcepackage.h" -#include "systemlibrary.h" #include "tar.h" #include "task.h" #include "virtualtarget.h" @@ -270,7 +268,7 @@ int Builder::main() if(j->second->get_package()==i->second) { ++count; - if(j->second->get_rebuild()) + if(j->second->needs_rebuild()) ++to_be_built; } if(count) @@ -507,21 +505,12 @@ int Builder::create_targets() if(spkg->get_install_flags()&(SourcePackage::LIB|SourcePackage::INCLUDE)) { PkgConfig *pc = new PkgConfig(*this, *spkg); - install->add_depend(new Install(*this, *spkg, *pc)); + install->add_depend(new InstalledFile(*this, *spkg, *pc)); } } - // Find dependencies until no new targets are created - while(!new_tgts.empty()) - { - Target *tgt = new_tgts.front(); - new_tgts.erase(new_tgts.begin()); - tgt->find_depends(); - if(!tgt->get_depends_ready()) - new_tgts.push_back(tgt); - } - // Apply what-ifs + // XXX This does not currently work with targets found during dependency discovery for(StringList::iterator i=what_if.begin(); i!=what_if.end(); ++i) { FileTarget *tgt = vfs.get_target(cwd/ *i); @@ -566,7 +555,7 @@ int Builder::do_build() unsigned total = 0; for(map::const_iterator i=targets.begin(); i!=targets.end(); ++i) - if(i->second->is_buildable() && i->second->get_rebuild()) + if(i->second->is_buildable() && i->second->needs_rebuild()) ++total; if(!total) @@ -640,7 +629,7 @@ int Builder::do_clean() // Cleaning doesn't care about ordering, so a simpler method can be used set clean_tgts; - TargetList queue; + list queue; queue.push_back(get_target("cmdline")); while(!queue.empty()) @@ -651,8 +640,8 @@ int Builder::do_clean() if(tgt->is_buildable() && (tgt->get_package()==main_pkg || clean>=2)) clean_tgts.insert(tgt); - const TargetList &deps = tgt->get_depends(); - for(TargetList::const_iterator i=deps.begin(); i!=deps.end(); ++i) + const Target::Dependencies &deps = tgt->get_depends(); + for(list::const_iterator i=deps.begin(); i!=deps.end(); ++i) if(!clean_tgts.count(*i)) queue.push_back(*i); }