]> git.tdb.fi Git - builder.git/blob - source/binarycomponent.h
Refactor transitive dependencies to work on all targets
[builder.git] / source / binarycomponent.h
1 #ifndef BINARYCOMPONENT_H_
2 #define BINARYCOMPONENT_H_
3
4 #include "component.h"
5
6 class BinaryComponent: public Component
7 {
8 public:
9         class Loader: public Msp::DataFile::DerivedObjectLoader<BinaryComponent, Component::Loader>
10         {
11         public:
12                 Loader(BinaryComponent &);
13         private:
14                 void use(const std::string &);
15         };
16
17         enum Type
18         {
19                 LIBRARY,
20                 PROGRAM,
21                 MODULE
22         };
23
24 private:
25         typedef std::list<const Component *> UseList;
26
27         Type type;
28         UseList uses;
29
30 public:
31         BinaryComponent(SourcePackage &, const std::string &, Type);
32
33         Type get_type() const { return type; }
34
35         virtual void create_build_info();
36         virtual void update_exported_build_info(BuildInfo &) const;
37         virtual void create_targets() const;
38 };
39
40 #endif