#include "tool.h"
+/**
+Common base class for GNU compilers. Turns SourceFiles into ObjectFiles.
+
+Since invocation is mostly the same for all language frontends, most of the
+logic is here and the individual tools only handle creating source files of
+appropriate type.
+*/
class GnuCompiler: public Tool
{
protected:
- GnuCompiler(Builder &, const std::string &, const std::string &);
+ std::string version;
+
+ GnuCompiler(Builder &, const Architecture &, const std::string &, const Msp::FS::Path & = Msp::FS::Path());
public:
- virtual Target *create_target(const std::list<Target *> &, const std::string &) const;
+ virtual Target *create_target(const std::list<Target *> &, const std::string &);
+ virtual std::string create_build_signature(const BuildInfo &) const;
+protected:
+ virtual void do_prepare();
+public:
virtual Task *run(const Target &) const;
};