246 virtual bool writeProjectMakefile(); |
246 virtual bool writeProjectMakefile(); |
247 virtual bool supportsMetaBuild() { return true; } |
247 virtual bool supportsMetaBuild() { return true; } |
248 virtual bool supportsMergedBuilds() { return false; } |
248 virtual bool supportsMergedBuilds() { return false; } |
249 virtual bool mergeBuildProject(MakefileGenerator * /*other*/) { return false; } |
249 virtual bool mergeBuildProject(MakefileGenerator * /*other*/) { return false; } |
250 virtual bool openOutput(QFile &, const QString &build) const; |
250 virtual bool openOutput(QFile &, const QString &build) const; |
251 virtual bool isWindowsShell() const { return Option::target_mode == Option::TARG_WIN_MODE; } |
251 virtual bool isWindowsShell() const { return Option::host_mode == Option::HOST_WIN_MODE; } |
|
252 virtual bool isForSymbianSbsv2() const { return false; } // FIXME: killme - i'm ugly! |
|
253 |
|
254 /* The next one is to avoid having SymbianCommonGenerator as a virtually |
|
255 inherited class of this class. Instead it is without a base class |
|
256 (avoiding the virtual inheritance problem), and is allowed to use |
|
257 functions defined in here. |
|
258 |
|
259 To illustrate: |
|
260 +-------------------+ |
|
261 | MakefileGenerator | |
|
262 +-------------------+ |
|
263 ^ ^ |
|
264 | | |
|
265 | X <-- Avoid this inheritance |
|
266 | | |
|
267 +------------------------+ +------------------------+ |
|
268 | UnixMakefileGenerator | | SymbianCommonGenerator | |
|
269 | or | | | |
|
270 | NmakeMakefileGenerator | | | |
|
271 +------------------------+ +------------------------+ |
|
272 ^ ^ |
|
273 | | |
|
274 | | |
|
275 | | |
|
276 +-----------------------------+ |
|
277 | SymbianMakefileTemplate<> | |
|
278 +-----------------------------+ |
|
279 |
|
280 We want to avoid the famous diamond problem, because if we have that, we need |
|
281 virtual inheritance, which not all compilers like. Therefore, we break the |
|
282 link as illustrated. Instead, we have a pointer to MakefileGenerator inside |
|
283 SymbianCommonGenerator, and allows full access by making it a friend here. |
|
284 */ |
|
285 friend class SymbianCommonGenerator; |
252 }; |
286 }; |
253 |
287 |
254 inline void MakefileGenerator::setNoIO(bool o) |
288 inline void MakefileGenerator::setNoIO(bool o) |
255 { no_io = o; } |
289 { no_io = o; } |
256 |
290 |