X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgnucompiler.h;h=8257dd83576e7236233cc88ef49ac92bcb89e42e;hb=1ed833343bc83b83c5f61cbfd74423bbba677a04;hp=cd6aa52b6c8b73ca96b459c2d549554972d54137;hpb=1c80c1c33af10e8e325808906a95969ee57676b6;p=builder.git diff --git a/source/gnucompiler.h b/source/gnucompiler.h index cd6aa52..8257dd8 100644 --- a/source/gnucompiler.h +++ b/source/gnucompiler.h @@ -3,6 +3,8 @@ #include "tool.h" +class ObjectFile; + /** Common base class for GNU compilers. Turns SourceFiles into ObjectFiles. @@ -13,17 +15,23 @@ appropriate type. 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 &, 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 &, 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