X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftool.h;h=294805359e43dc7f2096cfc9650ca7afb5bf1379;hb=894c4bd9d58df50c38c7a656cf085c48581439ef;hp=3c3757fe794549365851170b6b1e461a1998fd74;hpb=0368a9c1972ff5fd6cd8984901ff0bdbd86afc9f;p=builder.git diff --git a/source/tool.h b/source/tool.h index 3c3757f..2948053 100644 --- a/source/tool.h +++ b/source/tool.h @@ -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 &, 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;