X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Farchitecture.cpp;h=3a9f5549df5f7a2add49547dbf05c22d122117e3;hb=dad4c41302de525a1456e9d5b738831487c8acac;hp=cf888f00e24ede0d80ee16952fb5c63724c53738;hpb=82cf6fa5658ccbe612b989e50dfe4e88e617b980;p=builder.git diff --git a/source/architecture.cpp b/source/architecture.cpp index cf888f0..3a9f554 100644 --- a/source/architecture.cpp +++ b/source/architecture.cpp @@ -1,15 +1,8 @@ -/* $Id$ - -This file is part of builder -Copyright © 2007-2010 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include #ifndef WIN32 #include #endif -#include +#include #include #include "architecture.h" #include "builder.h" @@ -56,6 +49,7 @@ const char *aliases[] = { "i586", "pentium", "i686", "pentiumpro", + "x86_64", "athlon64", "win32", "windows", 0 }; @@ -151,7 +145,7 @@ std::string Architecture::get_tool(const string &t) const return native_arch.get_tool(t); } else - throw KeyError("Unknown tool", t); + throw invalid_argument("Unknown tool"); } bool Architecture::match_name(const string &pattern) const @@ -160,7 +154,9 @@ bool Architecture::match_name(const string &pattern) const for(vector::const_iterator i=parts.begin(); i!=parts.end(); ++i) { string part = resolve_alias(*i); - if(part!=type && part!=cpu && part!=system) + if((part=="32" && bits==32) || (part=="64" && bits==64)) + ; + else if(part!=type && part!=cpu && part!=system) return false; } return true; @@ -188,7 +184,7 @@ void Architecture::parse_specification(const string &spec) if(part==types[j]) { if(!type.empty() && part!=type) - throw InvalidParameterValue("Conflicting type specification"); + throw invalid_argument("Conflicting type specification"); type = part; ok = true; } @@ -199,7 +195,7 @@ void Architecture::parse_specification(const string &spec) if(type.empty()) type = cpus[j+1]; else if(cpus[j+1]!=type) - throw InvalidParameterValue("Conflicting CPU specification"); + throw invalid_argument("Conflicting CPU specification"); cpu = part; ok = true; } @@ -218,7 +214,7 @@ void Architecture::parse_specification(const string &spec) } if(!ok) - throw InvalidParameterValue("Unrecognized part in arch specification: "+*i); + throw invalid_argument("Unrecognized part in arch specification: "+*i); } }