]> git.tdb.fi Git - builder.git/blobdiff - source/gnulinker.h
Have SubTool automatically pass calls to the parent tool
[builder.git] / source / gnulinker.h
index 626894433505a10f2f959ad4b2544694a63d0ed6..872234a6d33d645a36676309172c4c58e948a15d 100644 (file)
@@ -3,12 +3,40 @@
 
 #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 compiler_tag;
+
+       public:
+               Linker(GnuLinker &, const std::string &);
+
+               virtual std::string create_build_signature(const BuildInfo &) const;
+       private:
+               virtual void do_prepare();
+       public:
+               virtual Task *run(const Target &) const;
+       };
+
+       Linker *default_linker;
+       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;
 };