#include "tool.h"
+class ObjectFile;
+
/**
Common base class for GNU compilers. Turns SourceFiles into ObjectFiles.
*/
class GnuCompiler: public Tool
{
-protected:
- unsigned version;
-
public:
GnuCompiler(Builder &, const Architecture &, const std::string &);
Target *create_target(const std::vector<Target *> &, const std::string &) override;
std::string create_build_signature(const BuildInfo &) const override;
protected:
- void do_prepare() override;
- void prepare_syspath();
- void prepare_version();
- void prepare_version(const std::string &);
-public:
- Task *run(const Target &) const override;
+ void do_prepare(ToolData &) const override;
+ void prepare_syspath(ToolData &) const;
+ void prepare_version(ToolData &) const;
+ unsigned query_version(const std::string &, const std::string &) const;
+
+private:
+ static ExternalTask::Arguments _run(const ObjectFile &, Msp::FS::Path &);
};
#endif