resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmInstallFilesGenerator.h
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
5 #include "cmConfigure.h" // IWYU pragma: keep
6
7 #include <iosfwd>
8 #include <string>
9 #include <vector>
10
11 #include "cmInstallGenerator.h"
12 #include "cmScriptGenerator.h"
13
14 class cmListFileBacktrace;
15 class cmLocalGenerator;
16
17 /** \class cmInstallFilesGenerator
18  * \brief Generate file installation rules.
19  */
20 class cmInstallFilesGenerator : public cmInstallGenerator
21 {
22 public:
23   cmInstallFilesGenerator(std::vector<std::string> const& files,
24                           std::string const& dest, bool programs,
25                           std::string file_permissions,
26                           std::vector<std::string> const& configurations,
27                           std::string const& component, MessageLevel message,
28                           bool exclude_from_all, std::string rename,
29                           bool optional, cmListFileBacktrace backtrace);
30   ~cmInstallFilesGenerator() override;
31
32   bool Compute(cmLocalGenerator* lg) override;
33
34   std::string GetDestination(std::string const& config) const;
35   std::string GetRename(std::string const& config) const;
36   std::vector<std::string> GetFiles(std::string const& config) const;
37   bool GetOptional() const { return this->Optional; }
38
39 protected:
40   void GenerateScriptActions(std::ostream& os, Indent indent) override;
41   void GenerateScriptForConfig(std::ostream& os, const std::string& config,
42                                Indent indent) override;
43   void AddFilesInstallRule(std::ostream& os, std::string const& config,
44                            Indent indent,
45                            std::vector<std::string> const& files);
46
47   cmLocalGenerator* LocalGenerator = nullptr;
48   std::vector<std::string> const Files;
49   std::string const FilePermissions;
50   std::string const Rename;
51   bool const Programs;
52   bool const Optional;
53 };