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