]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Move architecture information from Builder to class Architecture
[builder.git] / source / builder.cpp
index d4669520abd93fd7aabaf4b9b1ba7cf2bfc690ac..ee7eabfd1c9e93ff3913f510fb8e0ee09563cc7d 100644 (file)
@@ -115,14 +115,12 @@ Builder::Builder(int argc, char **argv):
 
        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)
@@ -260,7 +258,7 @@ Target *Builder::get_library(const string &lib, const string &arch, const list<s
                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)
@@ -273,34 +271,15 @@ Target *Builder::get_library(const string &lib, const string &arch, const list<s
        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, '-');
@@ -800,9 +779,11 @@ Builder::Loader::Loader(Builder &b, const Path::Path &s):
        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)