X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fobjectfile.h;h=21483147cfa20cb7dd22b115450baec00e8ed89e;hb=bd2a50ecb9f582c6e9569ffc9f33d41f10363c5f;hp=42238e14b546db0c356b3be02b9d3da6a052f4ae;hpb=74266a6e650f019063cdcd1c9a7bd26d8f99041b;p=builder.git diff --git a/source/objectfile.h b/source/objectfile.h index 42238e1..2148314 100644 --- a/source/objectfile.h +++ b/source/objectfile.h @@ -1,7 +1,7 @@ #ifndef OBJECTFILE_H_ #define OBJECTFILE_H_ -#include "target.h" +#include "filetarget.h" class Component; class SourceFile; @@ -9,22 +9,33 @@ class SourceFile; /** Object files are compiled from source files. */ -class ObjectFile: public Target +class ObjectFile: public FileTarget { +private: + const Component ∁ + SourceFile &source; + TargetList new_deps; + public: ObjectFile(Builder &, const Component &, SourceFile &); - const char *get_type() const { return "ObjectFile"; } + virtual const char *get_type() const { return "ObjectFile"; } const Component &get_component() const { return comp; } - void find_depends(); - Action *build(); + SourceFile &get_source() const { return source; } + + /** Processes as many new dependences as possible. Some may be created on + the fly and can't be processed until their own dependencies are ready. In + such cases this function needs to be called again. */ + virtual void find_depends(); + private: - const Component ∁ - TargetList new_deps; - + /** Recursively looks for header targets and adds them as dependencies. */ void find_depends(Target *); + + /** Adds a target to the dependency list as well as the new dependencies + list. */ void add_depend(Target *); - static std::string generate_target_name(const Component &, const std::string &); + static Msp::FS::Path generate_target_path(const Component &, const std::string &); }; #endif