]> git.tdb.fi Git - builder.git/blobdiff - source/gnucompiler.cpp
Don't treat using deprecated declarations as errors
[builder.git] / source / gnucompiler.cpp
index 051722832ea66402e515733fb51cd5c6ad78aa8e..884776ab21927540885c03db4b135601889ca0a3 100644 (file)
 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)
 {
@@ -81,7 +92,6 @@ void GnuCompiler::do_prepare()
 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());
@@ -125,7 +135,10 @@ Task *GnuCompiler::run(const Target &target) const
                        argv.push_back("-Winline");
                }
                if(binfo.fatal_warnings)
+               {
                        argv.push_back("-Werror");
+                       argv.push_back("-Wno-error=deprecated-declarations");
+               }
        }
 
        const FS::Path &sysroot = binfo.sysroot;
@@ -165,13 +178,21 @@ Task *GnuCompiler::run(const Target &target) const
        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());