]> git.tdb.fi Git - builder.git/blobdiff - source/sourcepackage.cpp
Add and improve build signatures for some tools
[builder.git] / source / sourcepackage.cpp
index e5a2fa70cdee47934441d4471335d4dbc9638901..dbb759205fe0eef45f3b0b1ded50cfe5ba80a077 100644 (file)
@@ -103,8 +103,14 @@ void SourcePackage::do_prepare()
        build_info.libpath.push_back((builder.get_prefix()/"lib").str());
 
        for(FeatureList::iterator i=features.begin(); i!=features.end(); ++i)
-               if(lexical_cast<bool>(config.get_option("with_"+i->name).value))
-                       build_info.defines["WITH_"+toupper(i->name)] = "1";
+       {
+               string ident = "WITH_"+toupper(i->name);
+               string value = config.get_option("with_"+i->name).value;
+               if(!i->choices.empty())
+                       build_info.defines[ident] = value;
+               else if(lexical_cast<bool>(value))
+                       build_info.defines[ident] = "1";
+       }
 
        bool export_paths = false;
        for(list<Component>::iterator i=components.begin(); i!=components.end(); ++i)
@@ -188,17 +194,16 @@ void SourcePackage::Loader::finish()
 void SourcePackage::Loader::feature(const string &n, const string &d)
 {
        Feature feat(n);
-       feat.descr = d;
-       feat.def_value = "no";
+       feat.description = d;
        load_sub(feat);
        obj.features.push_back(feat);
-       string config_key = "with_"+feat.name;
-       obj.config.add_option(config_key, feat.def_value, feat.descr);
+
+       const Config::Option &opt = obj.config.add_option(feat);
        if(options)
        {
-               Config::InputOptions::const_iterator i = options->find(config_key);
+               Config::InputOptions::const_iterator i = options->find(opt.name);
                if(i!=options->end())
-                       obj.config.set_option(config_key, i->second);
+                       obj.config.set_option(opt.name, i->second);
        }
 }