X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.cpp;h=723930a315b3c6e16c9d30192e4847762c5b5a26;hb=b6dcf65b5e1b99f6c65454358c7610f3e9c8af2b;hp=31cdd1806aa62b5e921ed531d73631920a8baf3a;hpb=0fd98b61eb112fe397c67b7735627b7bbdd01e41;p=builder.git diff --git a/source/builder.cpp b/source/builder.cpp index 31cdd18..723930a 100644 --- a/source/builder.cpp +++ b/source/builder.cpp @@ -89,7 +89,7 @@ Builder::Builder(int argc, char **argv): { unsigned equal=i->find('='); if(equal!=string::npos) - cmdline_options.insert(RawOptionMap::value_type(i->substr(0, equal), i->substr(equal+1))); + cmdline_options.insert(StringMap::value_type(i->substr(0, equal), i->substr(equal+1))); else cmdline_targets.push_back(*i); } @@ -112,6 +112,24 @@ Builder::Builder(int argc, char **argv): native_tools.insert(StringMap::value_type("LD", "gcc")); native_tools.insert(StringMap::value_type("LDXX", "g++")); native_tools.insert(StringMap::value_type("AR", "ar")); + + StringMap &release_profile=profile_tmpl.insert(ProfileTemplateMap::value_type("release", StringMap())).first->second; + release_profile.insert(StringMap::value_type("optimize", "3")); + release_profile.insert(StringMap::value_type("outdir", "$profile")); + + StringMap &debug_profile=profile_tmpl.insert(ProfileTemplateMap::value_type("debug", StringMap())).first->second; + debug_profile.insert(StringMap::value_type("debug", "1")); + debug_profile.insert(StringMap::value_type("outdir", "$profile")); + + for(StringMap::iterator i=archs.begin(); i!=archs.end(); ++i) + { + if(i->first=="native") + continue; + + StringMap &arch_profile=profile_tmpl.insert(ProfileTemplateMap::value_type(i->first, StringMap())).first->second; + arch_profile.insert(StringMap::value_type("arch", i->first)); + arch_profile.insert(StringMap::value_type("prefix", "$HOME/local/$arch")); + } } /** @@ -280,6 +298,20 @@ string Builder::get_tool(const std::string &tool, const std::string &arch) return get_arch_prefix(arch)+j->second; } +void Builder::apply_profile_template(Config &config, const string &pt) const +{ + vector parts=split(pt, '-'); + + for(vector::iterator i=parts.begin(); i!=parts.end(); ++i) + { + ProfileTemplateMap::const_iterator j=profile_tmpl.find(*i); + if(j==profile_tmpl.end()) + continue; + + config.update(j->second); + } +} + int Builder::main() { if(load_build_file(cwd/build_file))