X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Farchitecture.cpp;h=fd31bcdbfd942a9ad05146d73e7dbb73fcecc38b;hb=323285f97a1a6fe2628f818371a8b03f233dd036;hp=8e618deb4ae9de2c78e3d1ec8e169f829652c8c3;hpb=40177b0cfc0d4e67f971941f632e4f1f7e7c3f88;p=builder.git diff --git a/source/architecture.cpp b/source/architecture.cpp index 8e618de..fd31bcd 100644 --- a/source/architecture.cpp +++ b/source/architecture.cpp @@ -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) @@ -110,8 +108,10 @@ Architecture::Architecture(Builder &b, const string &spec): { sharedlib_patterns.push_back(Pattern("%.dll")); sharedlib_patterns.push_back(Pattern("lib%.dll")); + /* XXX Hack: Consider import libraries (*.dll.a) as dynamic libraries, + even though technically they are linked statically. */ + sharedlib_patterns.push_back(Pattern("lib%.dll.a")); staticlib_patterns.push_back(Pattern("lib%.a")); - staticlib_patterns.push_back(Pattern("lib%.dll.a")); executable_patterns.push_back(Pattern("%.exe")); } else @@ -122,39 +122,6 @@ Architecture::Architecture(Builder &b, const string &spec): } } -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(i->second[0]=='-') - return cross_prefix+i->second; - else - return i->second; - } - - const Architecture &native_arch = builder.get_native_arch(); - if(this!=&native_arch) - { - if(!cross_prefix.empty()) - return cross_prefix+"-"+native_arch.get_tool(t); - else - return native_arch.get_tool(t); - } - else - throw invalid_argument("Unknown tool"); -} - bool Architecture::match_name(const string &pattern) const { vector parts = split(pattern, "-"); @@ -227,13 +194,7 @@ void Architecture::parse_specification(const string &spec) Architecture::Loader::Loader(Architecture &a): - arch(a) + DataFile::ObjectLoader(a) { add("prefix", &Architecture::cross_prefix); - add("tool", &Loader::tool); -} - -void Architecture::Loader::tool(const string &t, const string &p) -{ - arch.tools[t] = p; }