| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file LICENSE.rst or https://cmake.org/licensing for details. */
- #pragma once
- #include "cmConfigure.h" // IWYU pragma: keep
- #include <map>
- #include <memory>
- #include <string>
- #include <vector>
- #include "cm_sys_stat.h"
- #include "cmGeneratorExpression.h"
- #include "cmPolicies.h"
- namespace cm {
- namespace GenEx {
- struct Context;
- }
- }
- class cmGeneratorTarget;
- class cmLocalGenerator;
- class cmGeneratorExpressionEvaluationFile
- {
- public:
- cmGeneratorExpressionEvaluationFile(
- std::string input, std::string target,
- std::unique_ptr<cmCompiledGeneratorExpression> outputFileExpr,
- std::unique_ptr<cmCompiledGeneratorExpression> condition,
- bool inputIsContent, std::string newLineCharacter, mode_t permissions,
- cmPolicies::PolicyStatus policyStatusCMP0070);
- void Generate(cmLocalGenerator* lg);
- std::vector<std::string> GetFiles() const { return this->Files; }
- void CreateOutputFile(cmLocalGenerator* lg, std::string const& config);
- private:
- void Generate(cmLocalGenerator* lg, std::string const& config,
- std::string const& lang,
- cmCompiledGeneratorExpression* inputExpression,
- std::map<std::string, std::string>& outputFiles, mode_t perm);
- std::string GetInputFileName(cmLocalGenerator const* lg);
- std::string GetOutputFileName(cm::GenEx::Context const& context,
- cmGeneratorTarget* target);
- enum PathRole
- {
- PathForInput,
- PathForOutput
- };
- std::string FixRelativePath(std::string const& filePath, PathRole role,
- cmLocalGenerator const* lg);
- std::string const Input;
- std::string const Target;
- std::unique_ptr<cmCompiledGeneratorExpression> const OutputFileExpr;
- std::unique_ptr<cmCompiledGeneratorExpression> const Condition;
- std::vector<std::string> Files;
- bool const InputIsContent;
- std::string const NewLineCharacter;
- cmPolicies::PolicyStatus PolicyStatusCMP0070;
- mode_t Permissions;
- };
|