]> git.tdb.fi Git - builder.git/blob - source/target.h
21135b03970aa96a7b0641e096b4cba6b513860a
[builder.git] / source / target.h
1 #ifndef TARGET_H_
2 #define TARGET_H_
3
4 #include <list>
5 #include <string>
6 #include <msp/time/timestamp.h>
7
8 class Builder;
9 class Package;
10 class Target;
11
12 class TargetRef
13 {
14 public:
15         TargetRef(Builder &b, const std::string &n): builder(b), name(n) { }
16         Target *get_target();
17 private:
18         Builder &builder;
19         std::string name;
20         Target *target;
21 };
22
23 class Target
24 {
25 public:
26         const std::string &get_name() const { return name; }
27         Target *get_buildable_target();
28         bool   get_rebuild() const { return rebuild; }
29         const std::string &get_rebuild_reason() const { return rebuild_reason; }
30         virtual void find_depends()=0;
31         void   add_depend(Target *);
32         virtual const char *get_type() const=0;
33         virtual ~Target() { }
34 protected:
35         Builder     &builder;
36         const Package *package;
37         std::string name;
38         bool        building;
39         bool        rebuild;
40         std::string rebuild_reason;
41         Msp::Time::TimeStamp mtime;
42         std::list<Target *> depends;
43         std::list<Target *> rdepends;
44         bool        ready_for_build;
45
46         Target(Builder &, const Package *, const std::string &);
47         void mark_rebuild(const std::string &);
48 };
49
50 #endif