- Target *create_target(Target &, const std::string & = std::string()) const;
- virtual Target *create_target(const std::list<Target *> &, const std::string & = std::string()) const = 0;
+
+ /// Convenience function to create a target from a single source.
+ Target *create_target(Target &, const std::string & = std::string());
+
+ /** Creates a target from sources. The exact types of accepted sources
+ depends on the tool. The optional second argument can be used to select an
+ 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()) = 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() { }
+
+public:
+ const std::list<std::string> &get_problems() const { return problems; }
+
+ /** Invokes the tool to build a target. This should not be called directly;
+ use Target::build() instead. */