1 #include <msp/fs/utils.h>
2 #include <msp/strings/format.h>
5 #include "sharedlibrary.h"
6 #include "sourcepackage.h"
11 SharedLibrary::SharedLibrary(Builder &b, const Msp::FS::Path &p):
14 libname = FS::basepart(FS::basename(path));
15 if(!libname.compare(0, 3, "lib"))
16 libname = libname.substr(3);
19 SharedLibrary::SharedLibrary(Builder &b, const Component &c, const list<ObjectFile *> &objs):
20 Binary(b, c, generate_filename(c), objs),
23 install_location = "lib";
24 if(component->get_type()==Component::MODULE)
25 install_location /= package->get_name();
27 const string &version = component->get_package().get_version();
30 string::size_type i = 0;
31 for(unsigned dots=0; i<version.size(); ++i)
32 if(version[i]=='.' && ++dots>=2)
35 soname = format("%s.%s", FS::basename(path), version.substr(0, i));
39 string SharedLibrary::generate_filename(const Component &comp)
41 if(comp.get_type()==Component::MODULE)
42 return comp.get_name()+".m";
45 const Architecture &arch = comp.get_package().get_builder().get_current_arch();
46 return arch.get_shared_library_patterns().front().apply(comp.get_name());