]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Support gcc's -iquote feature
[builder.git] / source / builder.cpp
index 8b900a4987af9230c4f8d860a004bcb49379825a..07007f61bd75c82ae9f80d5e35315e29b7374b23 100644 (file)
@@ -16,6 +16,7 @@
 #include "binarypackage.h"
 #include "builder.h"
 #include "copy.h"
+#include "datatool.h"
 #include "gnuarchiver.h"
 #include "gnuccompiler.h"
 #include "gnucxxcompiler.h"
@@ -150,9 +151,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);
 
@@ -206,6 +204,7 @@ Builder::Builder(int argc, char **argv):
        toolchain.add_tool(new PkgConfigGenerator(*this));
        if(current_arch->get_system()=="windows")
                toolchain.add_tool(new MingwDllTool(*this, *current_arch));
+       toolchain.add_tool(new DataTool(*this));
 }
 
 Builder::~Builder()
@@ -351,8 +350,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 +364,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 +382,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 +396,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<string, Target *>::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 +417,7 @@ int Builder::do_build()
        {
                if(tasks.size()<jobs && !fail && !starved)
                {
-                       Target *tgt = cmdline->get_buildable_target();
+                       Target *tgt = build_graph.get_buildable_target();
                        if(tgt)
                        {
                                if(tgt->get_tool())