cmGhsMultiTargetGenerator.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef cmGhsMultiTargetGenerator_h
  4. #define cmGhsMultiTargetGenerator_h
  5. #include "cmGhsMultiGpj.h"
  6. #include <iosfwd>
  7. #include <map>
  8. #include <set>
  9. #include <string>
  10. #include <vector>
  11. class cmCustomCommand;
  12. class cmCustomCommandGenerator;
  13. class cmGeneratorTarget;
  14. class cmGlobalGhsMultiGenerator;
  15. class cmLocalGhsMultiGenerator;
  16. class cmMakefile;
  17. class cmSourceFile;
  18. class cmGhsMultiTargetGenerator
  19. {
  20. public:
  21. cmGhsMultiTargetGenerator(cmGeneratorTarget* target);
  22. virtual ~cmGhsMultiTargetGenerator();
  23. virtual void Generate();
  24. private:
  25. cmGlobalGhsMultiGenerator* GetGlobalGenerator() const;
  26. void GenerateTarget();
  27. void WriteTargetSpecifics(std::ostream& fout, const std::string& config);
  28. void WriteCompilerFlags(std::ostream& fout, const std::string& config,
  29. const std::string& language);
  30. void WriteCompilerDefinitions(std::ostream& fout, const std::string& config,
  31. const std::string& language);
  32. void SetCompilerFlags(std::string const& config,
  33. const std::string& language);
  34. std::string GetDefines(const std::string& langugae,
  35. std::string const& config);
  36. void WriteIncludes(std::ostream& fout, const std::string& config,
  37. const std::string& language);
  38. void WriteTargetLinkLine(std::ostream& fout, std::string const& config);
  39. void WriteBuildEvents(std::ostream& fout);
  40. void WriteBuildEventsHelper(std::ostream& fout,
  41. const std::vector<cmCustomCommand>& ccv,
  42. std::string const& name, std::string const& cmd);
  43. void WriteCustomCommandsHelper(std::ostream& fout,
  44. cmCustomCommandGenerator const& ccg);
  45. void WriteCustomCommandLine(std::ostream& fout, std::string& fname,
  46. cmCustomCommandGenerator const& ccg);
  47. bool ComputeCustomCommandOrder(std::vector<cmSourceFile const*>& order);
  48. bool VisitCustomCommand(std::set<cmSourceFile const*>& temp,
  49. std::set<cmSourceFile const*>& perm,
  50. std::vector<cmSourceFile const*>& order,
  51. cmSourceFile const* sf);
  52. void WriteSources(std::ostream& fout_proj);
  53. void WriteSourceProperty(std::ostream& fout, const cmSourceFile* sf,
  54. std::string const& propName,
  55. std::string const& propFlag);
  56. static void WriteObjectLangOverride(std::ostream& fout,
  57. const cmSourceFile* sourceFile);
  58. bool DetermineIfIntegrityApp();
  59. cmGeneratorTarget* GeneratorTarget;
  60. cmLocalGhsMultiGenerator* LocalGenerator;
  61. cmMakefile* Makefile;
  62. std::map<std::string, std::string> FlagsByLanguage;
  63. std::map<std::string, std::string> DefinesByLanguage;
  64. std::string TargetNameReal;
  65. GhsMultiGpj::Types TagType;
  66. std::string const Name;
  67. std::string ConfigName; /* CMAKE_BUILD_TYPE */
  68. bool const CmdWindowsShell; /* custom commands run in cmd.exe or /bin/sh */
  69. };
  70. #endif // ! cmGhsMultiTargetGenerator_h