using namespace std;
using namespace Msp;
+namespace {
+
+const char *cpus[] =
+{
+ "athlonxp", "athlon-xp",
+ "armv7a", "armv7-a",
+ 0
+};
+
+}
+
GnuCompiler::GnuCompiler(Builder &b, const Architecture &a, const string &t, const FS::Path &sysroot):
Tool(b, a, t)
{
Task *GnuCompiler::run(const Target &target) const
{
const ObjectFile &object = dynamic_cast<const ObjectFile &>(target);
- const Component &comp = *object.get_component();
ExternalTask::Arguments argv;
argv.push_back(executable->get_path().str());
if(architecture->is_native() && architecture->get_bits()!=native_arch.get_bits())
argv.push_back(format("-m%d", architecture->get_bits()));
- const string &cpu = architecture->get_cpu();
+ string cpu = architecture->get_cpu();
if(!cpu.empty())
+ {
+ for(unsigned i=0; cpus[i]; i+=2)
+ if(cpu==cpus[i])
+ {
+ cpu = cpus[i+1];
+ break;
+ }
argv.push_back("-march="+cpu);
+ }
FS::Path obj_path = object.get_path();
FS::Path src_path = object.get_source().get_path();
- FS::Path work_dir = comp.get_package().get_source_directory();
+ FS::Path work_dir = object.get_component()->get_package().get_source_directory();
argv.push_back("-o");
argv.push_back(relative(obj_path, work_dir).str());