]> git.tdb.fi Git - builder.git/blobdiff - source/gnulinker.cpp
Redesign the way commands are set for tools
[builder.git] / source / gnulinker.cpp
index cfdee8daffc3570e572006d85093733bbe35c75f..ea448acdcf3105980709bca561a1c1b3bc2ceb28 100644 (file)
@@ -115,7 +115,14 @@ Task *GnuLinker::run(const Target &) const
 GnuLinker::Linker::Linker(GnuLinker &p, const string &ct):
        SubTool(p),
        compiler_tag(ct)
-{ }
+{
+       if(compiler_tag=="CC")
+               set_command("gcc", true);
+       else if(compiler_tag=="CXX")
+               set_command("g++", true);
+       else
+               throw invalid_argument("GnuLinker::Linker::Linker");
+}
 
 Target *GnuLinker::Linker::create_target(const list<Target *> &sources, const string &arg)
 {
@@ -150,19 +157,6 @@ void GnuLinker::Linker::do_prepare()
                compiler.prepare();
                executable = compiler.get_executable();
        }
-       else
-       {
-               string command;
-               if(compiler_tag=="CC")
-                       command = "gcc";
-               else if(compiler_tag=="CXX")
-                       command = "g++";
-               else
-                       throw invalid_argument("GnuLinker::Linker::Linker");
-               if(architecture->is_cross())
-                       command = format("%s-%s", architecture->get_cross_prefix(), command);
-               executable = builder.get_vfs().find_binary(command);
-       }
 }
 
 Task *GnuLinker::Linker::run(const Target &target) const
@@ -189,7 +183,7 @@ Task *GnuLinker::Linker::run(const Target &target) const
                argv.push_back("-L"+i->str());
        if(binfo.strip)
                argv.push_back("-s");
-       if(binfo.threads)
+       if(binfo.threads && architecture->get_system()!="windows")
                argv.push_back("-pthread");
 
        const Architecture &native_arch = builder.get_native_arch();