| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | 
							- /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
 
-    file Copyright.txt or https://cmake.org/licensing for details.  */
 
- #ifndef cmGhsMultiGenerator_h
 
- #define cmGhsMultiGenerator_h
 
- #include "cmGlobalGenerator.h"
 
- #include "cmGhsMultiGpj.h"
 
- #include "cmGlobalGeneratorFactory.h"
 
- class cmGeneratedFileStream;
 
- class cmGlobalGhsMultiGenerator : public cmGlobalGenerator
 
- {
 
- public:
 
-   // The default filename extension of GHS MULTI's build files.
 
-   static const char* FILE_EXTENSION;
 
-   cmGlobalGhsMultiGenerator(cmake* cm);
 
-   ~cmGlobalGhsMultiGenerator();
 
-   static cmGlobalGeneratorFactory* NewFactory()
 
-   {
 
-     return new cmGlobalGeneratorSimpleFactory<cmGlobalGhsMultiGenerator>();
 
-   }
 
-   ///! create the correct local generator
 
-   cmLocalGenerator* CreateLocalGenerator(cmMakefile* mf) override;
 
-   /// @return the name of this generator.
 
-   static std::string GetActualName() { return "Green Hills MULTI"; }
 
-   ///! Get the name for this generator
 
-   std::string GetName() const override { return this->GetActualName(); }
 
-   /// Overloaded methods. @see cmGlobalGenerator::GetDocumentation()
 
-   static void GetDocumentation(cmDocumentationEntry& entry);
 
-   /**
 
-    * Utilized by the generator factory to determine if this generator
 
-    * supports toolsets.
 
-    */
 
-   static bool SupportsToolset() { return true; }
 
-   /**
 
-    * Utilized by the generator factory to determine if this generator
 
-    * supports platforms.
 
-    */
 
-   static bool SupportsPlatform() { return true; }
 
-   // Toolset / Platform Support
 
-   bool SetGeneratorToolset(std::string const& ts, cmMakefile* mf) override;
 
-   bool SetGeneratorPlatform(std::string const& p, cmMakefile* mf) override;
 
-   /**
 
-    * Try to determine system information such as shared library
 
-    * extension, pthreads, byte order etc.
 
-    */
 
-   void EnableLanguage(std::vector<std::string> const& languages, cmMakefile*,
 
-                       bool optional) override;
 
-   /*
 
-    * Determine what program to use for building the project.
 
-    */
 
-   bool FindMakeProgram(cmMakefile* mf) override;
 
-   void ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const override;
 
-   cmGeneratedFileStream* GetBuildFileStream()
 
-   {
 
-     return this->TargetFolderBuildStreams[""];
 
-   }
 
-   static void OpenBuildFileStream(std::string const& filepath,
 
-                                   cmGeneratedFileStream** filestream);
 
-   static void OpenBuildFileStream(cmGeneratedFileStream* filestream);
 
-   void OpenBuildFileStream(std::ostream& fout);
 
-   static void CloseBuildFileStream(cmGeneratedFileStream** filestream);
 
-   /// Write the common disclaimer text at the top of each build file.
 
-   static void WriteDisclaimer(std::ostream* os);
 
-   std::vector<std::string> GetLibDirs() { return this->LibDirs; }
 
-   static void AddFilesUpToPath(
 
-     cmGeneratedFileStream* mainBuildFile,
 
-     std::map<std::string, cmGeneratedFileStream*>* targetFolderBuildStreams,
 
-     char const* homeOutputDirectory, std::string const& path,
 
-     GhsMultiGpj::Types projType, std::string const& relPath = "");
 
-   static void Open(std::string const& mapKeyName, std::string const& fileName,
 
-                    std::map<std::string, cmGeneratedFileStream*>* fileMap);
 
-   static std::string trimQuotes(std::string const& str);
 
-   // Target dependency sorting
 
-   class TargetSet : public std::set<cmGeneratorTarget const*>
 
-   {
 
-   };
 
-   class TargetCompare
 
-   {
 
-     std::string First;
 
-   public:
 
-     TargetCompare(std::string const& first)
 
-       : First(first)
 
-     {
 
-     }
 
-     bool operator()(cmGeneratorTarget const* l,
 
-                     cmGeneratorTarget const* r) const;
 
-   };
 
-   class OrderedTargetDependSet;
 
- protected:
 
-   void Generate() override;
 
-   void GenerateBuildCommand(std::vector<std::string>& makeCommand,
 
-                             const std::string& makeProgram,
 
-                             const std::string& projectName,
 
-                             const std::string& projectDir,
 
-                             const std::string& targetName,
 
-                             const std::string& config, bool fast, int jobs,
 
-                             bool verbose,
 
-                             std::vector<std::string> const& makeOptions =
 
-                               std::vector<std::string>()) override;
 
- private:
 
-   void GetToolset(cmMakefile* mf, std::string& tsd, std::string& ts);
 
-   /* top-level project */
 
-   void OutputTopLevelProject(cmLocalGenerator* root,
 
-                              std::vector<cmLocalGenerator*>& generators);
 
-   void WriteTopLevelProject(std::ostream& fout, cmLocalGenerator* root,
 
-                             std::vector<cmLocalGenerator*>& generators);
 
-   void WriteMacros(std::ostream& fout);
 
-   void WriteHighLevelDirectives(std::ostream& fout);
 
-   void WriteSubProjects(std::ostream& fout, cmLocalGenerator* root,
 
-                         std::vector<cmLocalGenerator*>& generators);
 
-   static void AddFilesUpToPathNewBuildFile(
 
-     cmGeneratedFileStream* mainBuildFile,
 
-     std::map<std::string, cmGeneratedFileStream*>* targetFolderBuildStreams,
 
-     char const* homeOutputDirectory, std::string const& pathUpTo, bool isFirst,
 
-     std::string const& relPath, GhsMultiGpj::Types projType);
 
-   static void AddFilesUpToPathAppendNextFile(
 
-     std::map<std::string, cmGeneratedFileStream*>* targetFolderBuildStreams,
 
-     std::string const& pathUpTo,
 
-     std::vector<std::string>::const_iterator splitPathI,
 
-     std::vector<std::string>::const_iterator end, GhsMultiGpj::Types projType);
 
-   static std::string GetFileNameFromPath(std::string const& path);
 
-   bool IsTgtForBuild(const cmGeneratorTarget* tgt);
 
-   std::vector<cmGeneratedFileStream*> TargetSubProjects;
 
-   std::map<std::string, cmGeneratedFileStream*> TargetFolderBuildStreams;
 
-   std::vector<std::string> LibDirs;
 
-   static const char* DEFAULT_BUILD_PROGRAM;
 
-   static const char* DEFAULT_TOOLSET_ROOT;
 
- };
 
- class cmGlobalGhsMultiGenerator::OrderedTargetDependSet
 
-   : public std::multiset<cmTargetDepend,
 
-                          cmGlobalGhsMultiGenerator::TargetCompare>
 
- {
 
-   typedef std::multiset<cmTargetDepend,
 
-                         cmGlobalGhsMultiGenerator::TargetCompare>
 
-     derived;
 
- public:
 
-   typedef cmGlobalGenerator::TargetDependSet TargetDependSet;
 
-   OrderedTargetDependSet(TargetDependSet const&, std::string const& first);
 
- };
 
- #endif
 
 
  |