X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fobjectfile.h;h=7cc6f604c685ef343d744d39dfb4067cde2240a2;hb=20994a6f4802f2dbcf01888d0e1996edf554ade5;hp=962151c5e412f1923d873ec23504851f5ddd0d4e;hpb=0d80cabf649b931b26e7055385156c75a7385d35;p=builder.git diff --git a/source/objectfile.h b/source/objectfile.h index 962151c..7cc6f60 100644 --- a/source/objectfile.h +++ b/source/objectfile.h @@ -1,24 +1,49 @@ +/* $Id$ + +This file is part of builder +Copyright © 2006-2009 Mikko Rasa, Mikkosoft Productions +Distributed under the LGPL +*/ + #ifndef OBJECTFILE_H_ #define OBJECTFILE_H_ -#include "target.h" +#include "filetarget.h" class Component; class SourceFile; -class ObjectFile: public Target +/** +Object files are compiled from source files. +*/ +class ObjectFile: public FileTarget { -public: - ObjectFile(Builder &, const Component &, SourceFile &); - const char *get_type() const { return "ObjectFile"; } - void find_depends(); - Action *build(); private: const Component ∁ + SourceFile &source; + TargetList new_deps; +public: + ObjectFile(Builder &, const Component &, SourceFile &); + virtual const char *get_type() const { return "ObjectFile"; } + const Component &get_component() const { return comp; } + 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: + /** Recursively looks for header targets and adds them as dependencies. */ void find_depends(Target *); - static std::string generate_target_name(const Component &, const std::string &); + /** Adds a target to the dependency list as well as the new dependencies + list. */ + void add_depend(Target *); + virtual Action *create_action(); + + static Msp::FS::Path generate_target_path(const Component &, const std::string &); }; #endif