#ifndef SHAREDLIB_H_
#define SHAREDLIB_H_
-#include "executable.h"
+#include "binary.h"
/**
-Represents a shared library. Mainly exists to give extra information to the
-user.
+Represents a shared library. It has two special properties: libname and
+soname. Libname is the name used by the linker. Soname is the canonical
+filename of the library, including version number. If the owning package has
+no version, soname will be empty.
*/
-class SharedLibrary: public Executable
+class SharedLibrary: public Binary
{
+private:
+ std::string libname;
+ std::string soname;
+
public:
+ SharedLibrary(Builder &, const Msp::FS::Path &);
SharedLibrary(Builder &, const Component &, const std::list<ObjectFile *> &);
- const char *get_type() const { return "SharedLibrary"; }
- const std::string &get_libname() const { return libname; }
private:
- std::string libname;
+ static std::string generate_filename(const Component &);
+
+public:
+ virtual const char *get_type() const { return "SharedLibrary"; }
+ const std::string &get_libname() const { return libname; }
+ const std::string &get_soname() const { return soname; }
};
#endif