cmNinjaTypes.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #pragma once
  4. #include "cmConfigure.h" // IWYU pragma: keep
  5. #include <map>
  6. #include <set>
  7. #include <string>
  8. #include <utility>
  9. #include <vector>
  10. enum cmNinjaTargetDepends
  11. {
  12. DependOnTargetArtifact,
  13. DependOnTargetOrdering
  14. };
  15. using cmNinjaDeps = std::vector<std::string>;
  16. using cmNinjaOuts = std::set<std::string>;
  17. using cmNinjaVars = std::map<std::string, std::string>;
  18. class cmNinjaRule
  19. {
  20. public:
  21. cmNinjaRule(std::string name)
  22. : Name(std::move(name))
  23. {
  24. }
  25. std::string Name;
  26. std::string Command;
  27. std::string Description;
  28. std::string Comment;
  29. std::string DepFile;
  30. std::string DepType;
  31. std::string RspFile;
  32. std::string RspContent;
  33. std::string Restat;
  34. bool Generator = false;
  35. };
  36. class cmNinjaBuild
  37. {
  38. public:
  39. cmNinjaBuild() = default;
  40. cmNinjaBuild(std::string rule)
  41. : Rule(std::move(rule))
  42. {
  43. }
  44. std::string Comment;
  45. std::string Rule;
  46. cmNinjaDeps Outputs;
  47. cmNinjaDeps ImplicitOuts;
  48. cmNinjaDeps WorkDirOuts; // For cmake_ninja_workdir.
  49. cmNinjaDeps ExplicitDeps;
  50. cmNinjaDeps ImplicitDeps;
  51. cmNinjaDeps OrderOnlyDeps;
  52. cmNinjaVars Variables;
  53. std::string RspFile;
  54. };