X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fgnulinker.cpp;h=ede0119aeb44dec627cd37d39e14e15ad108420f;hb=323285f97a1a6fe2628f818371a8b03f233dd036;hp=114bf09c84404910f480a904aa952761366eb2fa;hpb=82ae60a647ebb9567f7177c353245f4d72faaf5e;p=builder.git diff --git a/source/gnulinker.cpp b/source/gnulinker.cpp index 114bf09..ede0119 100644 --- a/source/gnulinker.cpp +++ b/source/gnulinker.cpp @@ -74,11 +74,8 @@ Target *GnuLinker::create_target(const list &sources, const string &ar SharedLibrary *shlib = new SharedLibrary(builder, comp, objs); if(architecture->get_system()=="windows") { - ExportDefinitions *exp = new ExportDefinitions(builder, comp, *shlib); - shlib->add_side_effect(*exp); const Tool &dlltool = builder.get_toolchain().get_tool("DLL"); - ImportLibrary *imp = dynamic_cast(dlltool.create_target(*exp)); - shlib->set_import_library(imp); + dlltool.create_target(*shlib); } bin = shlib; } @@ -99,7 +96,9 @@ Target *GnuLinker::create_install(Target &target) const else { const Pattern &pattern = architecture->get_shared_library_patterns().front(); - inst_tgt->set_symlink(pattern.apply(shlib->get_libname())); + string link_name = pattern.apply(shlib->get_libname()); + if(link_name!=FS::basename(inst_tgt->get_path())) + inst_tgt->set_symlink(link_name); } return inst_tgt; } @@ -174,12 +173,6 @@ Task *GnuLinker::Linker::run(const Target &target) const { argv.push_back("-shared"); argv.push_back("-fPIC"); - const Target::Dependencies &side_eff = target.get_side_effects(); - for(Target::Dependencies::const_iterator i=side_eff.begin(); i!=side_eff.end(); ++i) - { - if(ExportDefinitions *exp = dynamic_cast(*i)) - argv.push_back("-Wl,--output-def,"+relative(exp->get_path(), work_dir).str()); - } if(architecture->get_system()!="windows" && !shlib->get_soname().empty()) argv.push_back("-Wl,-soname,"+shlib->get_soname()); }