-public:
- Target *create_source(const Component &, const Msp::FS::Path &) const override;
- Target *create_source(const Msp::FS::Path &) const override;
- Target *create_target(const std::vector<Target *> &, const std::string & = std::string()) override;
- Target *create_install(Target &) const override;
- std::string create_build_signature(const BuildInfo &) const override;
-};
+template<typename T>
+void Tool::set_run_internal(bool (*f)(const T &))
+{
+ set_run([f](const Target &t){
+ const T &ct = dynamic_cast<const T &>(t);
+ return new InternalTask([f, &ct]{ return f(ct); });
+ });
+}