using namespace std;
using namespace Msp;
-GnuLinker::GnuLinker(Builder &b):
- Tool(b, "LINK")
+GnuLinker::GnuLinker(Builder &b, const Architecture &a):
+ Tool(b, a, "LINK")
{
input_suffixes.push_back(".o");
input_suffixes.push_back(".a");
- const Architecture &arch = builder.get_current_arch();
- if(arch.is_native())
+ if(architecture->is_native())
{
system_path.push_back("/lib");
system_path.push_back("/usr/lib");
- if(arch.match_name("pc-32-linux"))
+ if(architecture->match_name("pc-32-linux"))
system_path.push_back("/usr/lib/i386-linux-gnu");
- else if(arch.match_name("pc-64-linux"))
+ else if(architecture->match_name("pc-64-linux"))
system_path.push_back("/usr/lib/x86_64-linux-gnu");
}
else
- system_path.push_back("/usr/"+arch.get_cross_prefix()+"/lib");
+ system_path.push_back("/usr/"+architecture->get_cross_prefix()+"/lib");
default_linker = new Linker(*this, "CC");
cxx_linker = new Linker(*this, "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);
}
}
if(binfo.threads)
argv.push_back("-pthread");
- const Architecture &arch = builder.get_current_arch();
const Architecture &native_arch = builder.get_native_arch();
- if(arch.get_bits()!=native_arch.get_bits())
- argv.push_back(format("-m%d", arch.get_bits()));
+ if(architecture->get_bits()!=native_arch.get_bits())
+ argv.push_back(format("-m%d", architecture->get_bits()));
FS::Path work_dir = comp.get_package().get_source();