Merge branch 'release-3.29'
[kiteware-cmake.git] / Source / cmNinjaTypes.h
blobb77e0b528598cc788b7d7461c96583f327c1e350
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
5 #include "cmConfigure.h" // IWYU pragma: keep
7 #include <map>
8 #include <string>
9 #include <unordered_set>
10 #include <utility>
11 #include <vector>
13 enum cmNinjaTargetDepends
15 DependOnTargetArtifact,
16 DependOnTargetOrdering
19 using cmNinjaDeps = std::vector<std::string>;
20 using cmNinjaVars = std::map<std::string, std::string>;
22 class cmNinjaRule
24 public:
25 cmNinjaRule(std::string name)
26 : Name(std::move(name))
30 std::string Name;
31 std::string Command;
32 std::string Description;
33 std::string Comment;
34 std::string DepFile;
35 std::string DepType;
36 std::string RspFile;
37 std::string RspContent;
38 std::string Restat;
39 bool Generator = false;
42 class cmNinjaBuild
44 public:
45 cmNinjaBuild() = default;
46 cmNinjaBuild(std::string rule)
47 : Rule(std::move(rule))
51 std::string Comment;
52 std::string Rule;
53 cmNinjaDeps Outputs;
54 cmNinjaDeps ImplicitOuts;
55 cmNinjaDeps WorkDirOuts; // For cmake_ninja_workdir.
56 cmNinjaDeps ExplicitDeps;
57 cmNinjaDeps ImplicitDeps;
58 cmNinjaDeps OrderOnlyDeps;
59 cmNinjaVars Variables;
60 std::string RspFile;