#include "binarypackage.h"
#include "builder.h"
#include "copy.h"
+#include "datatool.h"
#include "gnuarchiver.h"
#include "gnuccompiler.h"
#include "gnucxxcompiler.h"
cmdline_targets.push_back(*i);
}
- if(cmdline_targets.empty())
- cmdline_targets.push_back("default");
-
if(!work_dir.empty())
FS::chdir(work_dir);
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()
{
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);
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)
}
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)
{
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)
{
{
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())