]> git.tdb.fi Git - builder.git/blobdiff - source/sharedlibrary.h
Add support for statically linking the C++ standard library
[builder.git] / source / sharedlibrary.h
index d8fa41bcdf7593caeba4f7ab012b1b8e0549acc4..c40bccd3bfde548e21efdf2d7b132c93e1eb835b 100644 (file)
@@ -1,32 +1,39 @@
-/* $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