getopt.add_option( "max-depth", max_depth, GetOpt::REQUIRED_ARG).set_help("Show up to NUM levels in analysis..", "NUM");
getopt.add_option( "prefix", prfx, GetOpt::REQUIRED_ARG).set_help("Install things to DIR.", "DIR");
getopt.add_option( "tempdir", temp_str, GetOpt::REQUIRED_ARG).set_help("Store temporary files in DIR.", "DIR");
- getopt.add_option( "warnings", cmdline_warn, GetOpt::REQUIRED_ARG).set_help("Compiler warnings to use.", "LIST");
usagemsg = getopt.generate_usage(argv[0])+" [<target> ...]";
helpmsg = getopt.generate_help();
getopt(argc, argv);
build_type = &i->second;
}
- warnings.push_back("all");
- warnings.push_back("extra");
- warnings.push_back("shadow");
- warnings.push_back("pointer-arith");
- warnings.push_back("error");
- for(StringList::iterator i=cmdline_warn.begin(); i!=cmdline_warn.end(); ++i)
- {
- vector<string> warns = split(*i, ',');
- warnings.insert(warnings.end(), warns.begin(), warns.end());
- }
-
toolchain.add_tool(new GnuCCompiler(*this, *current_arch));
toolchain.add_tool(new GnuCxxCompiler(*this, *current_arch));
toolchain.add_tool(new GnuLinker(*this, *current_arch));
targets.insert(TargetMap::value_type(t->get_name(), t));
}
+void Builder::add_primary_target(Target &t)
+{
+ get_target("world")->add_dependency(t);
+
+ if(t.get_package()==main_pkg && t.get_component() && t.get_component()->is_default())
+ get_target("default")->add_dependency(t);
+}
+
void Builder::usage(const char *reason, const char *argv0, bool brief)
{
if(reason)
logger.log("files", format("Reading %s", fn));
DataFile::Parser parser(in, fn.str());
- Loader loader(*this, fn.subpath(0, fn.size()-1));
+ Loader loader(*this);
loader.load(parser);
return 0;
else if(show_progress)
logger.log("summary", "Build complete");
+ if(!dry_run)
+ {
+ const PackageManager::PackageMap &packages = package_manager.get_packages();
+ for(PackageManager::PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i)
+ i->second->save_caches();
+ }
+
return fail;
}
string Builder::helpmsg;
-Builder::Loader::Loader(Builder &b, const FS::Path &s):
- DataFile::ObjectLoader<Builder>(b),
- src(s)
+Builder::Loader::Loader(Builder &b):
+ DataFile::ObjectLoader<Builder>(b)
{
add("architecture", &Loader::architecture);
add("binary_package", &Loader::binpkg);
void Builder::Loader::package(const string &n)
{
- SourcePackage *pkg = new SourcePackage(obj, n, src);
+ SourcePackage *pkg = new SourcePackage(obj, n, get_source());
if(!obj.main_pkg)
obj.main_pkg = pkg;