11 #define EXEPOSTFIX ".exe"
41 XMLElement
*node
, *head
;
45 std::vector
<Module
*> modules
;
46 std::vector
<Include
*> includes
;
47 std::vector
<Define
*> defines
;
48 std::vector
<LinkerFlag
*> linkerFlags
;
49 std::vector
<Property
*> properties
;
53 Project ( const std::string
& filename
);
55 void ProcessXML ( const std::string
& path
);
56 Module
* LocateModule ( const std::string
& name
);
57 const Module
* LocateModule ( const std::string
& name
) const;
60 void ProcessXMLSubElement ( const XMLElement
& e
,
61 const std::string
& path
,
64 // disable copy semantics
65 Project ( const Project
& );
66 Project
& operator = ( const Project
& );
86 const Project
& project
;
87 const XMLElement
& node
;
89 std::string extension
;
92 ImportLibrary
* importLibrary
;
93 std::vector
<File
*> files
;
94 std::vector
<Library
*> libraries
;
95 std::vector
<Include
*> includes
;
96 std::vector
<Define
*> defines
;
97 std::vector
<Invoke
*> invocations
;
98 std::vector
<Dependency
*> dependencies
;
100 std::vector
<LinkerFlag
*> linkerFlags
;
102 Module ( const Project
& project
,
103 const XMLElement
& moduleNode
,
104 const std::string
& modulePath
);
106 ModuleType
GetModuleType ( const std::string
& location
,
107 const XMLAttribute
& attribute
);
108 bool HasImportLibrary () const;
109 std::string
GetTargetName () const;
110 std::string
GetDependencyPath () const;
111 std::string
GetBasePath () const;
112 std::string
GetPath () const;
113 std::string
GetPathWithPrefix ( const std::string
& prefix
) const;
114 std::string
GetTargets () const;
115 std::string
GetInvocationTarget ( const int index
) const;
118 std::string
GetDefaultModuleExtension () const;
119 void ProcessXMLSubElement ( const XMLElement
& e
,
120 const std::string
& path
,
128 const Project
& project
;
129 const Module
* module
;
130 const XMLElement
& node
;
131 std::string directory
;
132 std::string basePath
;
134 Include ( const Project
& project
,
135 const XMLElement
& includeNode
);
136 Include ( const Project
& project
,
137 const Module
* module
,
138 const XMLElement
& includeNode
);
149 const Project
& project
;
150 const Module
* module
;
151 const XMLElement
& node
;
155 Define ( const Project
& project
,
156 const XMLElement
& defineNode
);
157 Define ( const Project
& project
,
158 const Module
* module
,
159 const XMLElement
& defineNode
);
172 File ( const std::string
& _name
);
181 const XMLElement
& node
;
182 const Module
& module
;
185 Library ( const XMLElement
& _node
,
186 const Module
& _module
,
187 const std::string
& _name
);
196 const XMLElement
& node
;
197 const Module
& module
;
198 const Module
* invokeModule
;
199 std::vector
<InvokeFile
*> input
;
200 std::vector
<InvokeFile
*> output
;
202 Invoke ( const XMLElement
& _node
,
203 const Module
& _module
);
206 std::string
GetTargets () const;
208 void ProcessXMLSubElement ( const XMLElement
& e
);
209 void ProcessXMLSubElementInput ( const XMLElement
& e
);
210 void ProcessXMLSubElementOutput ( const XMLElement
& e
);
217 const XMLElement
& node
;
219 std::string switches
;
221 InvokeFile ( const XMLElement
& _node
,
222 const std::string
& _name
);
231 const XMLElement
& node
;
232 const Module
& module
;
233 const Module
* dependencyModule
;
235 Dependency ( const XMLElement
& _node
,
236 const Module
& _module
);
245 const XMLElement
& node
;
246 const Module
& module
;
247 std::string basename
;
248 std::string definition
;
250 ImportLibrary ( const XMLElement
& _node
,
251 const Module
& module
);
260 const XMLElement
& node
;
261 const Project
& project
;
262 const Module
* module
;
263 std::string property
, value
;
264 std::vector
<File
*> files
;
265 std::vector
<Include
*> includes
;
266 std::vector
<Define
*> defines
;
267 std::vector
<Property
*> properties
;
268 std::vector
<If
*> ifs
;
270 If ( const XMLElement
& node_
,
271 const Project
& project_
,
272 const Module
* module_
);
282 const Project
& project
;
283 const Module
* module
;
284 const XMLElement
& node
;
287 LinkerFlag ( const Project
& project
,
288 const XMLElement
& linkerFlagNode
);
289 LinkerFlag ( const Project
& project
,
290 const Module
* module
,
291 const XMLElement
& linkerFlagNode
);
302 const XMLElement
& node
;
303 const Project
& project
;
304 const Module
* module
;
305 std::string name
, value
;
307 Property ( const XMLElement
& node_
,
308 const Project
& project_
,
309 const Module
* module_
);
315 FixSeparator ( const std::string
& s
);
317 #endif /* __RBUILD_H */