X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flib%2Fsharedlibrary.cpp;h=7be3a89370a121f511b756a253e608128d7053e7;hb=b4781796aa997368f46b87b73a907bcab955ca3d;hp=dab6b8df8e70635231e6393bef172f1594eb5b33;hpb=58210dd87bf1ceeb54cb31ed61e825e9849c165a;p=builder.git diff --git a/source/lib/sharedlibrary.cpp b/source/lib/sharedlibrary.cpp index dab6b8d..7be3a89 100644 --- a/source/lib/sharedlibrary.cpp +++ b/source/lib/sharedlibrary.cpp @@ -10,20 +10,21 @@ using namespace std; using namespace Msp; SharedLibrary::SharedLibrary(Builder &b, const Msp::FS::Path &p): - Binary(b, p) + Binary(b, p), + libname(FS::basepart(FS::basename(p))) { - libname = FS::basepart(FS::basename(path)); - if(!libname.compare(0, 3, "lib")) - libname = libname.substr(3); + const string &lib_prefix = builder.get_current_arch().get_patterns().front().get_prefix(); + if(!libname.compare(0, lib_prefix.size(), lib_prefix)) + libname = libname.substr(lib_prefix.size()); } SharedLibrary::SharedLibrary(Builder &b, const Component &c, const vector &objs): Binary(b, c, generate_filename(c), objs), - libname(c.get_name()), - import_lib(0) + libname(c.get_name()) { - if(!libname.compare(0, 3, "lib")) - libname = libname.substr(3); + const string &lib_prefix = builder.get_current_arch().get_patterns().front().get_prefix(); + if(!libname.compare(0, lib_prefix.size(), lib_prefix)) + libname = libname.substr(lib_prefix.size()); if(builder.get_current_arch().get_system()=="windows") install_location = "bin"; @@ -33,22 +34,6 @@ SharedLibrary::SharedLibrary(Builder &b, const Component &c, const vector(*component); if(bcomp.get_type()==BinaryComponent::MODULE) install_location /= package->get_name(); - else - { - const string &version = component->get_package().get_interface_version(); - if(!version.empty()) - { - const Architecture &arch = builder.get_current_arch(); - if(arch.get_system()=="windows") - soname = arch.create_filename(format("%s-%s", libname, version)); - else if(arch.get_system()=="darwin") - soname = arch.create_filename(format("%s.%s", libname, version)); - else - soname = format("%s.%s", arch.create_filename(libname), version); - - install_filename = soname; - } - } for(ObjectFile *o: objects) o->set_used_in_shared_library(true); @@ -61,8 +46,20 @@ string SharedLibrary::generate_filename(const Component &comp) return comp.get_name()+".dlm"; else { - const Architecture &arch = comp.get_package().get_builder().get_current_arch(); - return arch.create_filename(comp.get_name()); + const SourcePackage &pkg = comp.get_package(); + const Architecture &arch = pkg.get_builder().get_current_arch(); + const string &version = pkg.get_interface_version(); + if(!version.empty()) + { + if(arch.get_system()=="windows") + return arch.create_filename(format("%s-%s", comp.get_name(), version)); + else if(arch.get_system()=="darwin") + return arch.create_filename(format("%s.%s", comp.get_name(), version)); + else + return format("%s.%s", arch.create_filename(comp.get_name()), version); + } + else + return arch.create_filename(comp.get_name()); } }