X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgnucompiler.h;h=0c283e22827ac3f1afa05bdd4f6302bb032bd99d;hb=9e28243c9687608ec3c32954b4031490296ae877;hp=9cdf670c52db568914a4931fa11155b6d084afa1;hpb=338eefb513953ae55e8e3614c009c242ba8ad74e;p=builder.git diff --git a/source/gnucompiler.h b/source/gnucompiler.h index 9cdf670..0c283e2 100644 --- a/source/gnucompiler.h +++ b/source/gnucompiler.h @@ -3,16 +3,27 @@ #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: - std::string name; +private: + std::string command; - GnuCompiler(Builder &, const std::string &, const std::string &); +protected: + GnuCompiler(Builder &, const Architecture &, const std::string &, const std::string &); public: - virtual Target *create_source(const Component &, const Msp::FS::Path &) const; - virtual Target *create_target(const std::list &, const std::string &) const; + virtual Target *create_target(const std::list &, const std::string &); + virtual std::string create_build_signature(const BuildInfo &) const; +protected: + virtual void do_prepare(); +public: virtual Task *run(const Target &) const; };