cwd=Path::getcwd();
- archs.insert(StringMap::value_type("native", ""));
-
- StringMap &native_tools=tools.insert(ToolMap::value_type("native", StringMap())).first->second;
- native_tools.insert(StringMap::value_type("CC", "gcc"));
- native_tools.insert(StringMap::value_type("CXX", "g++"));
- native_tools.insert(StringMap::value_type("LD", "gcc"));
- native_tools.insert(StringMap::value_type("LDXX", "g++"));
- native_tools.insert(StringMap::value_type("AR", "ar"));
+ Architecture &native_arch=archs.insert(ArchMap::value_type("native", Architecture(*this, "native"))).first->second;
+ native_arch.set_tool("CC", "gcc");
+ native_arch.set_tool("CXX", "g++");
+ native_arch.set_tool("LD", "gcc");
+ native_arch.set_tool("LXX", "g++");
+ native_arch.set_tool("AR", "ar");
const char *home=getenv("HOME");
if(home)
syspath.push_back("/usr/lib");
}
else
- syspath.push_back("/usr/"+get_arch_prefix(arch)+"/lib");
+ syspath.push_back("/usr/"+get_architecture(arch).get_prefix()+"/lib");
Target *tgt=0;
for(StringList::iterator j=syspath.begin(); (!tgt && j!=syspath.end()); ++j)
return tgt;
}
-const string &Builder::get_arch_prefix(const string &arch) const
+const Architecture &Builder::get_architecture(const string &arch) const
{
- StringMap::const_iterator i=archs.find(arch);
+ ArchMap::const_iterator i=archs.find(arch);
if(i==archs.end())
throw InvalidParameterValue("Unknown architecture");
return i->second;
}
-string Builder::get_tool(const std::string &tool, const std::string &arch)
-{
- ToolMap::iterator i=tools.find(arch);
- if(i!=tools.end())
- {
- StringMap::iterator j=i->second.find(tool);
- if(j!=i->second.end())
- return j->second;
- }
-
- // Either the arch, or the tool within the arch was not found
- i=tools.find("native");
- StringMap::iterator j=i->second.find(tool);
- if(j==i->second.end())
- throw InvalidParameterValue("Unknown tool");
-
- return get_arch_prefix(arch)+"-"+j->second;
-}
-
void Builder::apply_profile_template(Config &config, const string &pt) const
{
vector<string> parts=split(pt, '-');
add("package", &Loader::package);
}
-void Builder::Loader::architecture(const string &a, const string &p)
+void Builder::Loader::architecture(const string &n)
{
- bld.archs.insert(StringMap::value_type(a, p));
+ Architecture arch(bld, n);
+ load_sub(arch);
+ bld.archs.insert(ArchMap::value_type(n, arch));
}
void Builder::Loader::binpkg(const string &n)