]> git.tdb.fi Git - builder.git/blobdiff - source/architecture.cpp
Store lookup failures separately from the package map
[builder.git] / source / architecture.cpp
index e0b69667952c64c1ad2e70229e5c4e951a128d7f..efe9c732dd707696d3d74610e340065c480960f2 100644 (file)
@@ -84,8 +84,6 @@ Architecture::Architecture(Builder &b, const string &spec):
                const Architecture &native_arch = builder.get_native_arch();
                if(type.empty())
                        type = native_arch.type;
-               if(cpu.empty())
-                       cpu = native_arch.cpu;
                if(system.empty())
                        system = native_arch.system;
                if(!bits)
@@ -105,39 +103,21 @@ Architecture::Architecture(Builder &b, const string &spec):
        if(!cpu.empty())
                name += format("-%s", cpu);
        name += format("-%d-%s", bits, system);
-}
-
-void Architecture::set_tool(const string &t, const string &p)
-{
-       tools[t] = p;
-}
-
-void Architecture::set_cross_prefix(const string &p)
-{
-       cross_prefix = p;
-}
 
-std::string Architecture::get_tool(const string &t) const
-{
-       StringMap::const_iterator i = tools.find(t);
-       if(i!=tools.end())
+       if(system=="windows")
        {
-               if(i->second[0]=='-')
-                       return cross_prefix+i->second;
-               else
-                       return i->second;
+               sharedlib_patterns.push_back(Pattern("%.dll"));
+               sharedlib_patterns.push_back(Pattern("lib%.dll"));
+               staticlib_patterns.push_back(Pattern("lib%.a"));
+               staticlib_patterns.push_back(Pattern("lib%.dll.a"));
+               executable_patterns.push_back(Pattern("%.exe"));
        }
-
-       const Architecture &native_arch = builder.get_native_arch();
-       if(this!=&native_arch)
+       else
        {
-               if(!cross_prefix.empty())
-                       return cross_prefix+"-"+native_arch.get_tool(t);
-               else
-                       return native_arch.get_tool(t);
+               sharedlib_patterns.push_back(Pattern("lib%.so"));
+               staticlib_patterns.push_back(Pattern("lib%.a"));
+               executable_patterns.push_back(Pattern("%"));
        }
-       else
-               throw invalid_argument("Unknown tool");
 }
 
 bool Architecture::match_name(const string &pattern) const
@@ -212,13 +192,7 @@ void Architecture::parse_specification(const string &spec)
 
 
 Architecture::Loader::Loader(Architecture &a):
-       arch(a)
+       DataFile::ObjectLoader<Architecture>(a)
 {
        add("prefix", &Architecture::cross_prefix);
-       add("tool",   &Loader::tool);
-}
-
-void Architecture::Loader::tool(const string &t, const string &p)
-{
-       arch.tools[t] = p;
 }