#ifndef SHAREDLIB_H_
#define SHAREDLIB_H_
-#include "executable.h"
+#include "binary.h"
-class SharedLibrary: public Executable
+class ImportLibrary;
+
+/**
+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.
+
+A SharedLibrary can also store a pointer to the associated ImportLibrary, for
+platforms that need one.
+*/
+class SharedLibrary: public Binary
{
+private:
+ std::string libname;
+ std::string soname;
+ ImportLibrary *import_lib;
+
public:
+ SharedLibrary(Builder &, const Msp::FS::Path &);
SharedLibrary(Builder &, const Component &, const std::list<ObjectFile *> &);
- const char *get_type() const { return "SharedLibrary"; }
+private:
+ 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; }
+
+ void set_import_library(ImportLibrary *);
+ ImportLibrary *get_import_library() const { return import_lib; }
};
#endif