]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Move main package tracking to PackageManager
[builder.git] / source / builder.cpp
index 6794842c50d2c872e8ac36e560d2d2dc58fd624c..813f8ed788deff1c85f8eca5810134e85f8cfb63 100644 (file)
@@ -35,7 +35,6 @@ using namespace Msp;
 
 Builder::Builder(int argc, char **argv):
        package_manager(*this),
-       main_pkg(0),
        native_arch(*this, string()),
        build_type(0),
        vfs(*this),
@@ -392,7 +391,7 @@ bool Builder::prepare_build()
        Target *tarballs = new VirtualTarget(*this, "tarballs");
        world->add_dependency(*tarballs);
 
-       main_pkg->prepare();
+       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");
@@ -558,7 +557,7 @@ int Builder::do_clean()
                Target *tgt = queue.front();
                queue.erase(queue.begin());
 
-               if(tgt->is_buildable() && (tgt->get_package()==main_pkg || clean>=2))
+               if(tgt->is_buildable() && (tgt->get_package()==&package_manager.get_main_package() || clean>=2))
                        clean_tgts.insert(tgt);
 
                const Target::Dependencies &deps = tgt->get_dependencies();
@@ -579,11 +578,12 @@ int Builder::do_clean()
 
 void Builder::package_help()
 {
-       const Config &config = main_pkg->get_config();
+       SourcePackage &main_pkg = dynamic_cast<SourcePackage &>(package_manager.get_main_package());
+       const Config &config = main_pkg.get_config();
        const Config::OptionMap &options = config.get_options();
 
        IO::print("Required packages:\n  ");
-       const Package::Requirements &requires = main_pkg->get_required_packages();
+       const Package::Requirements &requires = main_pkg.get_required_packages();
        for(Package::Requirements::const_iterator i=requires.begin(); i!=requires.end(); ++i)
        {
                if(i!=requires.begin())
@@ -644,10 +644,8 @@ void Builder::Loader::profile(const string &)
 void Builder::Loader::package(const string &n)
 {
        SourcePackage *pkg = new SourcePackage(obj, n, get_source());
-       if(!obj.main_pkg)
-               obj.main_pkg = pkg;
 
-       if(obj.conf_all || pkg==obj.main_pkg)
+       if(obj.conf_all || pkg==&obj.package_manager.get_main_package())
                load_sub(*pkg, obj.cmdline_options);
        else
                load_sub(*pkg);