]> git.tdb.fi Git - builder.git/blobdiff - source/lib/sharedlibrary.cpp
Use the architecture's patterns to remove prefix from libname
[builder.git] / source / lib / sharedlibrary.cpp
index dab6b8df8e70635231e6393bef172f1594eb5b33..aae366332c974944cf2503949a09bdab164e63aa 100644 (file)
@@ -10,11 +10,12 @@ 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<SharedLibrary>().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<ObjectFile *> &objs):
@@ -22,8 +23,9 @@ SharedLibrary::SharedLibrary(Builder &b, const Component &c, const vector<Object
        libname(c.get_name()),
        import_lib(0)
 {
-       if(!libname.compare(0, 3, "lib"))
-               libname = libname.substr(3);
+       const string &lib_prefix = builder.get_current_arch().get_patterns<SharedLibrary>().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";