#include "tool.h"
+/**
+The GNU linker. Turns ObjectFiles into Executables and SharedLibraries. To
+create a shared library, specify "shared" as the second argument to
+create_target.
+
+Uses either gcc or g++ depending on what was used to compile the object files.
+*/
class GnuLinker: public Tool
{
private:
class Linker: public SubTool
{
private:
- std::string command;
+ std::string compiler_tag;
public:
Linker(GnuLinker &, const std::string &);
- virtual Target *create_target(const std::list<Target *> &, const std::string &) const;
+ virtual Target *create_target(const std::list<Target *> &, const std::string &);
+ virtual Target *create_install(Target &) const;
+ virtual std::string create_build_signature(const BuildInfo &) const;
+ private:
+ virtual void do_prepare();
+ public:
virtual Task *run(const Target &) const;
};
Linker *cxx_linker;
public:
- GnuLinker(Builder &);
+ GnuLinker(Builder &, const Architecture &, const Msp::FS::Path & = Msp::FS::Path());
~GnuLinker();
- virtual Target *create_target(const std::list<Target *> &, const std::string &) const;
+ virtual Target *create_target(const std::list<Target *> &, const std::string &);
+ virtual Target *create_install(Target &) const;
virtual Task *run(const Target &) const;
};