resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmInstallScriptGenerator.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
10 #include "cmInstallGenerator.h"
11 #include "cmListFileCache.h"
12 #include "cmScriptGenerator.h"
13
14 class cmLocalGenerator;
15
16 /** \class cmInstallScriptGenerator
17  * \brief Generate target installation rules.
18  */
19 class cmInstallScriptGenerator : public cmInstallGenerator
20 {
21 public:
22   cmInstallScriptGenerator(
23     std::string script, bool code, std::string const& component,
24     bool exclude_from_all, bool all_components,
25     cmListFileBacktrace backtrace = cmListFileBacktrace());
26   ~cmInstallScriptGenerator() override;
27
28   bool Compute(cmLocalGenerator* lg) override;
29
30   bool IsCode() const { return this->Code; }
31
32   std::string GetScript(std::string const& config) const;
33
34 protected:
35   void GenerateScriptActions(std::ostream& os, Indent indent) override;
36   void GenerateScriptForConfig(std::ostream& os, const std::string& config,
37                                Indent indent) override;
38   void AddScriptInstallRule(std::ostream& os, Indent indent,
39                             std::string const& script) const;
40
41   std::string const Script;
42   bool const Code;
43   cmLocalGenerator* LocalGenerator;
44   bool AllowGenex = false;
45 };