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),
21 libname(c.get_name()),
22 soname(create_soname(c))
24 install_location = "lib";
25 if(component->get_type()==Component::MODULE)
27 install_location += '/';
28 install_location += package->get_name();
32 string SharedLibrary::generate_filename(const Component &comp)
34 if(comp.get_type()==Component::MODULE)
35 return comp.get_name()+".m";
38 const Architecture &arch = comp.get_package().get_builder().get_current_arch();
39 return arch.get_shared_library_patterns().front().apply(comp.get_name());
43 string SharedLibrary::create_soname(const Component &c)
45 const string &ver = c.get_package().get_version();
51 for(; i<ver.size(); ++i)
59 return format("%s.%s", FS::basename(path), ver.substr(0, i));