]> git.tdb.fi Git - builder.git/blobdiff - source/tool.h
Redesign the way commands are set for tools
[builder.git] / source / tool.h
index be3646cd8f0f674a6022980a1205de5aa5c7b6b9..7531bbf86b945e82638ea0044a106001b4a45931 100644 (file)
@@ -27,6 +27,7 @@ protected:
        Builder &builder;
        const Architecture *architecture;
        std::string tag;
+       std::string command;
        FileTarget *executable;
        SuffixList input_suffixes;
        SuffixList aux_suffixes;
@@ -45,8 +46,15 @@ public:
        tool is architecture-agnostic. */
        const Architecture *get_architecture() const { return architecture; }
 
+       /** Overrides the command used by the tool.  The new command should accept
+       the same command line arguments.  Only works on tools that use an external
+       command.  If cross is true and the architecture is not native, a cross
+       prefix is added to the command.  May have no effect after prepare() has been
+       called. */
+       void set_command(const std::string &cmd, bool cross = false);
+
        /** Returns a target for the tool's own executable.  If the tool does not
-       use an external program, returns null. */
+       use an external program, returns null.  The tool must be prepared first. */
        FileTarget *get_executable() const { return executable; }
 
        /// Returns a list of suffixes that can be processed with this tool.
@@ -90,11 +98,6 @@ public:
 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; }