-/* $Id$
-
-This file is part of builder
-Copyright © 2006-2007, 2009 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#ifndef SHAREDLIB_H_
#define SHAREDLIB_H_
#include "binary.h"
-#include "library.h"
+
+class ImportLibrary;
/**
-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.
+
+A SharedLibrary can also store a pointer to the associated ImportLibrary, for
+platforms that need one.
*/
-class SharedLibrary: public Binary, public Library
+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 *> &);
+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; }
-private:
- std::string create_soname(const Component &);
+ void set_import_library(ImportLibrary *);
+ ImportLibrary *get_import_library() const { return import_lib; }
};
#endif