X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.cpp;h=927b3026c93b7e40755924bc5d99da927d34f23f;hb=666bf60f80a3f220a112c2a97ed00b72871924d3;hp=4ca2e43ec87bdcef8942f49e4fd85aebafd25dcf;hpb=25a315f3cb5805614c513ac762ea1bd512ce82cb;p=builder.git diff --git a/source/builder.cpp b/source/builder.cpp index 4ca2e43..927b302 100644 --- a/source/builder.cpp +++ b/source/builder.cpp @@ -99,6 +99,7 @@ Builder::Builder(int argc, char **argv): } if(verbose>=2) { + logger.enable_channel("environment"); logger.enable_channel("packages"); logger.enable_channel("commands"); } @@ -165,31 +166,13 @@ Builder::Builder(int argc, char **argv): package_manager.set_no_externals(no_externals); - load_build_file((FS::get_sys_data_dir(argv[0], "builder")/"builderrc").str()); - load_build_file((FS::get_user_data_dir("builder")/"rc").str()); - if(arch.empty()) current_arch = &native_arch; else current_arch = new Architecture(*this, arch); - if(!current_arch->is_native()) - { - for(StringMap::const_iterator i=cross_prefixes.begin(); i!=cross_prefixes.end(); ++i) - if(current_arch->match_name(i->first)) - { - current_arch->set_cross_prefix(i->second); - break; - } - } - - toolchain.add_tool(new GnuCCompiler(*this, *current_arch)); - toolchain.add_tool(new GnuCxxCompiler(*this, *current_arch)); - toolchain.add_tool(new GnuLinker(*this, *current_arch)); - toolchain.add_tool(new GnuArchiver(*this, *current_arch)); - toolchain.add_tool(new Copy(*this)); - toolchain.add_tool(new Tar(*this)); - toolchain.add_tool(new PkgConfigGenerator(*this)); + load_build_file((FS::get_sys_data_dir(argv[0], "builder")/"builderrc").str()); + load_build_file((FS::get_user_data_dir("builder")/"rc").str()); if(prfx.empty()) { @@ -211,6 +194,14 @@ Builder::Builder(int argc, char **argv): vector 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)); + toolchain.add_tool(new GnuArchiver(*this, *current_arch)); + toolchain.add_tool(new Copy(*this)); + toolchain.add_tool(new Tar(*this)); + toolchain.add_tool(new PkgConfigGenerator(*this)); } Builder::~Builder() @@ -402,13 +393,13 @@ int Builder::create_targets() Target *world = new VirtualTarget(*this, "world"); Target *def_tgt = new VirtualTarget(*this, "default"); - world->add_depend(def_tgt); + world->add_depend(*def_tgt); Target *install = new VirtualTarget(*this, "install"); - world->add_depend(install); + world->add_depend(*install); Target *tarballs = new VirtualTarget(*this, "tarballs"); - world->add_depend(tarballs); + world->add_depend(*tarballs); const PackageManager::PackageMap &packages = package_manager.get_packages(); for(PackageManager::PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i) @@ -430,7 +421,7 @@ int Builder::create_targets() return -1; } - cmdline->add_depend(tgt); + cmdline->add_depend(*tgt); } cmdline->prepare(); @@ -454,9 +445,11 @@ int Builder::create_targets() i->second->force_rebuild(); } - for(PackageManager::PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i) - if(SourcePackage *spkg = dynamic_cast(i->second)) - spkg->get_deps_cache().save(); + if(!dry_run) + { + for(PackageManager::PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i) + i->second->save_caches(); + } return 0; } @@ -606,24 +599,25 @@ string Builder::helpmsg; Builder::Loader::Loader(Builder &b, const FS::Path &s): - bld(b), + DataFile::ObjectLoader(b), src(s) { + add("architecture", &Loader::architecture); add("binary_package", &Loader::binpkg); - add("cross_prefix", &Loader::cross_prefix); add("profile", &Loader::profile); add("package", &Loader::package); } -void Builder::Loader::binpkg(const string &n) +void Builder::Loader::architecture(const string &n) { - BinaryPackage *pkg = new BinaryPackage(bld, n); - load_sub(*pkg); + if(obj.current_arch->match_name(n)) + load_sub(*obj.current_arch); } -void Builder::Loader::cross_prefix(const string &a, const string &p) +void Builder::Loader::binpkg(const string &n) { - bld.cross_prefixes[a] = p; + BinaryPackage *pkg = new BinaryPackage(obj, n); + load_sub(*pkg); } void Builder::Loader::profile(const string &n) @@ -631,14 +625,14 @@ void Builder::Loader::profile(const string &n) StringMap prf; ProfileLoader ldr(prf); load_sub_with(ldr); - bld.profile_tmpl.insert(ProfileTemplateMap::value_type(n, prf)); + obj.profile_tmpl.insert(ProfileTemplateMap::value_type(n, prf)); } void Builder::Loader::package(const string &n) { - SourcePackage *pkg = new SourcePackage(bld, n, src); - if(!bld.main_pkg) - bld.main_pkg = pkg; + SourcePackage *pkg = new SourcePackage(obj, n, src); + if(!obj.main_pkg) + obj.main_pkg = pkg; load_sub(*pkg); }