]> git.tdb.fi Git - builder.git/blobdiff - source/gnucompiler.h
Account for install directories when forming displaced dependency paths
[builder.git] / source / gnucompiler.h
index 9cdf670c52db568914a4931fa11155b6d084afa1..9f5386d13a856df90a0a777f0a9cb94a802f3e4c 100644 (file)
@@ -3,16 +3,31 @@
 
 #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;
-
-       GnuCompiler(Builder &, const std::string &, const std::string &);
+       unsigned version;
 
 public:
+       GnuCompiler(Builder &, const Architecture &, const std::string &);
+
        virtual Target *create_source(const Component &, const Msp::FS::Path &) const;
-       virtual Target *create_target(const std::list<Target *> &, const std::string &) const;
+       virtual Target *create_source(const Msp::FS::Path &) 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();
+       void prepare_syspath();
+       void prepare_version();
+       void prepare_version(const std::string &);
+public:
        virtual Task *run(const Target &) const;
 };