cmGeneratorExpressionEvaluationFile.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file LICENSE.rst or https://cmake.org/licensing for details. */
  3. #pragma once
  4. #include "cmConfigure.h" // IWYU pragma: keep
  5. #include <map>
  6. #include <memory>
  7. #include <string>
  8. #include <vector>
  9. #include "cm_sys_stat.h"
  10. #include "cmGeneratorExpression.h"
  11. #include "cmPolicies.h"
  12. class cmGeneratorTarget;
  13. class cmLocalGenerator;
  14. class cmGeneratorExpressionEvaluationFile
  15. {
  16. public:
  17. cmGeneratorExpressionEvaluationFile(
  18. std::string input, std::string target,
  19. std::unique_ptr<cmCompiledGeneratorExpression> outputFileExpr,
  20. std::unique_ptr<cmCompiledGeneratorExpression> condition,
  21. bool inputIsContent, std::string newLineCharacter, mode_t permissions,
  22. cmPolicies::PolicyStatus policyStatusCMP0070);
  23. void Generate(cmLocalGenerator* lg);
  24. std::vector<std::string> GetFiles() const { return this->Files; }
  25. void CreateOutputFile(cmLocalGenerator* lg, std::string const& config);
  26. private:
  27. void Generate(cmLocalGenerator* lg, std::string const& config,
  28. std::string const& lang,
  29. cmCompiledGeneratorExpression* inputExpression,
  30. std::map<std::string, std::string>& outputFiles, mode_t perm);
  31. std::string GetInputFileName(cmLocalGenerator const* lg);
  32. std::string GetOutputFileName(cmLocalGenerator const* lg,
  33. cmGeneratorTarget* target,
  34. std::string const& config,
  35. std::string const& lang);
  36. enum PathRole
  37. {
  38. PathForInput,
  39. PathForOutput
  40. };
  41. std::string FixRelativePath(std::string const& filePath, PathRole role,
  42. cmLocalGenerator const* lg);
  43. std::string const Input;
  44. std::string const Target;
  45. std::unique_ptr<cmCompiledGeneratorExpression> const OutputFileExpr;
  46. std::unique_ptr<cmCompiledGeneratorExpression> const Condition;
  47. std::vector<std::string> Files;
  48. bool const InputIsContent;
  49. std::string const NewLineCharacter;
  50. cmPolicies::PolicyStatus PolicyStatusCMP0070;
  51. mode_t Permissions;
  52. };