]> git.tdb.fi Git - builder.git/blobdiff - source/gnucompiler.cpp
Adjust build signatures to contain the tool tag
[builder.git] / source / gnucompiler.cpp
index 2752ff4ed969db58745094d0d38249c752fa976b..97d3b3086b275b444ca8c4432ae349fcd5cae0b5 100644 (file)
@@ -72,7 +72,7 @@ Target *GnuCompiler::create_source(const FS::Path &path) const
 Target *GnuCompiler::create_target(const list<Target *> &sources, const string &)
 {
        if(sources.size()!=1)
-               throw invalid_argument("GnuCCompiler::create_target");
+               throw invalid_argument("GnuCompiler::create_target");
        SourceFile &source = dynamic_cast<SourceFile &>(*sources.front());
        ObjectFile *obj = new ObjectFile(builder, *source.get_component(), source);
        obj->set_tool(*this);
@@ -84,13 +84,14 @@ string GnuCompiler::create_build_signature(const BuildInfo &binfo) const
        if(!executable)
                return string();
 
-       string result = FS::basename(executable->get_path());
+       string result = Tool::create_build_signature(binfo);
        if(!architecture->get_cpu().empty())
        {
                result += ",m";
                result += architecture->get_cpu();
        }
-       result += ',';
+       if(binfo.debug || binfo.optimize)
+               result += ',';
        if(binfo.debug)
                result += 'g';
        if(binfo.optimize)
@@ -162,7 +163,7 @@ void GnuCompiler::prepare_syspath()
                else if(architecture->is_native())
                        system_path.push_back("/usr/include");
                else
-                       system_path.push_back("/usr/"+architecture->get_cross_prefix()+"/include");
+                       system_path.push_back(format("/usr/%s/include", architecture->get_cross_prefix()));
        }
 }
 
@@ -254,20 +255,20 @@ Task *GnuCompiler::run(const Target &target) const
        const FS::Path &sysroot = binfo.sysroot;
        if(!sysroot.empty())
                argv.push_back("--sysroot="+sysroot.str());
-       for(BuildInfo::PathList::const_iterator i=binfo.local_incpath.begin(); i!=binfo.local_incpath.end(); ++i)
+       for(const FS::Path &p: binfo.local_incpath)
        {
                argv.push_back("-iquote");
-               argv.push_back(i->str());
+               argv.push_back(p.str());
        }
-       for(BuildInfo::PathList::const_iterator i=binfo.incpath.begin(); i!=binfo.incpath.end(); ++i)
-               argv.push_back("-I"+i->str());
+       for(const FS::Path &p: binfo.incpath)
+               argv.push_back("-I"+p.str());
 
-       for(BuildInfo::DefineMap::const_iterator i=binfo.defines.begin(); i!=binfo.defines.end(); ++i)
+       for(const auto &kvp: binfo.defines)
        {
-               if(i->second.empty())
-                       argv.push_back(format("-D%s", i->first));
+               if(kvp.second.empty())
+                       argv.push_back(format("-D%s", kvp.first));
                else
-                       argv.push_back(format("-D%s=%s", i->first, i->second));
+                       argv.push_back(format("-D%s=%s", kvp.first, kvp.second));
        }
 
        if(binfo.debug)