cmNinjaTypes.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 cmNinjaTypes_h
  4. #define cmNinjaTypes_h
  5. #include "cmConfigure.h" // IWYU pragma: keep
  6. #include <map>
  7. #include <set>
  8. #include <string>
  9. #include <utility>
  10. #include <vector>
  11. enum cmNinjaTargetDepends
  12. {
  13. DependOnTargetArtifact,
  14. DependOnTargetOrdering
  15. };
  16. using cmNinjaDeps = std::vector<std::string>;
  17. using cmNinjaOuts = std::set<std::string>;
  18. using cmNinjaVars = std::map<std::string, std::string>;
  19. class cmNinjaRule
  20. {
  21. public:
  22. cmNinjaRule(std::string name)
  23. : Name(std::move(name))
  24. {
  25. }
  26. std::string Name;
  27. std::string Command;
  28. std::string Description;
  29. std::string Comment;
  30. std::string DepFile;
  31. std::string DepType;
  32. std::string RspFile;
  33. std::string RspContent;
  34. std::string Restat;
  35. bool Generator = false;
  36. };
  37. class cmNinjaBuild
  38. {
  39. public:
  40. cmNinjaBuild() = default;
  41. cmNinjaBuild(std::string rule)
  42. : Rule(std::move(rule))
  43. {
  44. }
  45. std::string Comment;
  46. std::string Rule;
  47. cmNinjaDeps Outputs;
  48. cmNinjaDeps ImplicitOuts;
  49. cmNinjaDeps ExplicitDeps;
  50. cmNinjaDeps ImplicitDeps;
  51. cmNinjaDeps OrderOnlyDeps;
  52. cmNinjaVars Variables;
  53. std::string RspFile;
  54. };
  55. #endif // ! cmNinjaTypes_h