/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include #include enum cmNinjaTargetDepends { DependOnTargetArtifact, DependOnTargetOrdering }; using cmNinjaDeps = std::vector; using cmNinjaVars = std::map; class cmNinjaRule { public: cmNinjaRule(std::string name) : Name(std::move(name)) { } std::string Name; std::string Command; std::string Description; std::string Comment; std::string DepFile; std::string DepType; std::string RspFile; std::string RspContent; std::string Restat; bool Generator = false; }; class cmNinjaBuild { public: cmNinjaBuild() = default; cmNinjaBuild(std::string rule) : Rule(std::move(rule)) { } std::string Comment; std::string Rule; cmNinjaDeps Outputs; cmNinjaDeps ImplicitOuts; cmNinjaDeps WorkDirOuts; // For cmake_ninja_workdir. cmNinjaDeps ExplicitDeps; cmNinjaDeps ImplicitDeps; cmNinjaDeps OrderOnlyDeps; cmNinjaVars Variables; std::string RspFile; };