resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmQtAutoGenGlobalInitializer.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 <map>
8 #include <memory>
9 #include <string>
10 #include <unordered_map>
11 #include <vector>
12
13 #include "cmQtAutoGen.h"
14
15 class cmLocalGenerator;
16 class cmQtAutoGenInitializer;
17
18 /// @brief Initializes the QtAutoGen generators
19 class cmQtAutoGenGlobalInitializer
20 {
21 public:
22   /// @brief Collection of QtAutogen related keywords
23   class Keywords
24   {
25   public:
26     Keywords();
27
28     std::string AUTOMOC;
29     std::string AUTOUIC;
30     std::string AUTORCC;
31
32     std::string AUTOMOC_EXECUTABLE;
33     std::string AUTOUIC_EXECUTABLE;
34     std::string AUTORCC_EXECUTABLE;
35
36     std::string SKIP_AUTOGEN;
37     std::string SKIP_AUTOMOC;
38     std::string SKIP_AUTOUIC;
39     std::string SKIP_AUTORCC;
40
41     std::string AUTOUIC_OPTIONS;
42     std::string AUTORCC_OPTIONS;
43
44     std::string qrc;
45     std::string ui;
46   };
47
48   cmQtAutoGenGlobalInitializer(
49     std::vector<std::unique_ptr<cmLocalGenerator>> const& localGenerators);
50   ~cmQtAutoGenGlobalInitializer();
51
52   Keywords const& kw() const { return this->Keywords_; }
53
54   bool generate();
55
56 private:
57   friend class cmQtAutoGenInitializer;
58
59   bool InitializeCustomTargets();
60   bool SetupCustomTargets();
61
62   void GetOrCreateGlobalTarget(cmLocalGenerator* localGen,
63                                std::string const& name,
64                                std::string const& comment);
65
66   void AddToGlobalAutoGen(cmLocalGenerator* localGen,
67                           std::string const& targetName);
68   void AddToGlobalAutoRcc(cmLocalGenerator* localGen,
69                           std::string const& targetName);
70
71   cmQtAutoGen::CompilerFeaturesHandle GetCompilerFeatures(
72     std::string const& generator, std::string const& executable,
73     std::string& error);
74
75   std::vector<std::unique_ptr<cmQtAutoGenInitializer>> Initializers_;
76   std::map<cmLocalGenerator*, std::string> GlobalAutoGenTargets_;
77   std::map<cmLocalGenerator*, std::string> GlobalAutoRccTargets_;
78   std::unordered_map<std::string, cmQtAutoGen::CompilerFeaturesHandle>
79     CompilerFeatures_;
80   Keywords const Keywords_;
81 };