+ virtual Target *create_target(const std::list<Target *> &, const std::string & = std::string()) = 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(); }
+
+ void prepare();
+
+protected:
+ virtual void do_prepare() { }
+
+ /** Locates an executable for the tool from the VFS. If it isn't found, a
+ problem is reported. If cross is true and the architecture is not native,
+ a cross prefix is added to the command. */
+ void set_executable(const std::string &command, bool cross = false);
+
+public:
+ const std::list<std::string> &get_problems() const { return problems; }