]> git.tdb.fi Git - builder.git/blobdiff - source/tool.h
Resolve cmdline targets and what-ifs the same way
[builder.git] / source / tool.h
index 3c3757fe794549365851170b6b1e461a1998fd74..294805359e43dc7f2096cfc9650ca7afb5bf1379 100644 (file)
@@ -7,6 +7,7 @@
 
 class Architecture;
 class Builder;
+class BuildInfo;
 class Component;
 class FileTarget;
 class Target;
@@ -60,7 +61,7 @@ public:
        /// Creates a source file appropriate for this tool.
        virtual Target *create_source(const Component &, const Msp::FS::Path &) const { return 0; }
 
-       /** Creates a package-less source file appropriate for this too.  This is
+       /** Creates a package-less source file appropriate for this tool.  This is
        called during dependency discovery when no package has created a target for
        the file. */
        virtual Target *create_source(const Msp::FS::Path &) const { return 0; }
@@ -73,6 +74,12 @@ public:
        alternative target type for tools that can create multiple kinds of targets. */ 
        virtual Target *create_target(const std::list<Target *> &, const std::string & = std::string()) const = 0;
 
+       /** Creates an install target for a target created by this tool.  Can return
+       null if the tool does not want to handle installing in a special way. */
+       virtual Target *create_install(Target &) const { return 0; }
+
+       virtual std::string create_build_signature(const BuildInfo &) const { return std::string(); }
+
        /** Invokes the tool to build a target.  This should not be called directly;
        use Target::build() instead. */
        virtual Task *run(const Target &) const = 0;