This gives errors for nonsensical stuff like linux-windows-32-64-gnu-msvc,
which was previously accepted.
for(unsigned j=0; (!ok && systems[j]); ++j)
if(p==systems[j])
{
+ if(!system.empty() && p!=system)
+ throw invalid_argument("Conflicting system specification");
system = p;
ok = true;
}
for(unsigned j=0; (!ok && toolchains[j]); ++j)
if(p==toolchains[j])
{
+ if(!toolchain.empty() && p!=toolchain)
+ throw invalid_argument("Conflicting toolchain specification");
toolchain = p;
ok = true;
}
if(!ok && (p=="32" || p=="64"))
{
- bits = lexical_cast<unsigned>(p);
+ unsigned b = lexical_cast<unsigned>(p);
+ if(bits && b!=bits)
+ throw invalid_argument("Conflicting bits specification");
+ bits = b;
ok = true;
}