]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
It's okay to throw exceptions from Loader functions
[builder.git] / source / builder.cpp
index d598a9f5cb2caa8bc6e5f8d238bdaad9c0ddd86a..3ac4b282ad9d19615236714b01cfc75345d55c8c 100644 (file)
@@ -56,7 +56,6 @@ Builder::Builder(int argc, char **argv):
        string work_dir;
        bool full_paths = false;
        unsigned max_depth = 4;
-       StringList cmdline_warn;
        string prfx;
        string temp_str;
        string arch;
@@ -145,7 +144,7 @@ Builder::Builder(int argc, char **argv):
        {
                string::size_type equal = i->find('=');
                if(equal!=string::npos)
-                       cmdline_options.insert(StringMap::value_type(i->substr(0, equal), i->substr(equal+1)));
+                       cmdline_options.insert(Config::InputOptions::value_type(i->substr(0, equal), i->substr(equal+1)));
                else
                        cmdline_targets.push_back(*i);
        }
@@ -158,6 +157,10 @@ Builder::Builder(int argc, char **argv):
 
        cwd = FS::getcwd();
 
+       package_manager.append_package_path(cwd);
+       package_manager.append_package_path(cwd/"..");
+       package_manager.append_binary_package_path(FS::get_sys_data_dir(argv[0], "builder"));
+
        package_manager.set_no_externals(no_externals);
 
        if(arch.empty())
@@ -256,7 +259,7 @@ int Builder::main()
        list<string> package_details;
        for(PackageManager::PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i)
        {
-               if(!i->second || !i->second->is_prepared())
+               if(!i->second->is_prepared())
                        continue;
 
                string line = i->second->get_name();
@@ -380,7 +383,7 @@ bool Builder::prepare_build()
 
        // Make the cmdline target depend on all targets mentioned on the command line
        Target *cmdline = new VirtualTarget(*this, "cmdline");
-       for(list<string>::iterator i=cmdline_targets.begin(); i!=cmdline_targets.end(); ++i)
+       for(NameList::iterator i=cmdline_targets.begin(); i!=cmdline_targets.end(); ++i)
        {
                Target *tgt = get_target(*i);
                if(!tgt)
@@ -399,7 +402,7 @@ bool Builder::prepare_build()
        cmdline->prepare();
 
        // Apply what-ifs
-       for(StringList::iterator i=what_if.begin(); i!=what_if.end(); ++i)
+       for(NameList::iterator i=what_if.begin(); i!=what_if.end(); ++i)
        {
                FileTarget *tgt = vfs.get_target(cwd/ *i);
                if(!tgt)
@@ -567,8 +570,8 @@ void Builder::package_help()
        const Config::OptionMap &options = config.get_options();
 
        IO::print("Required packages:\n  ");
-       const PackageList &requires = main_pkg->get_required_packages();
-       for(PackageList::const_iterator i=requires.begin(); i!=requires.end(); ++i)
+       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())
                        IO::print(", ");