qmake/generators/makefile.h
changeset 30 5dc02b23752f
parent 18 2f34d5167611
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
   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