resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmGlobalVisualStudio11Generator.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 <memory>
8 #include <set>
9 #include <string>
10
11 #include <cm/optional>
12
13 #include "cmGlobalVisualStudio10Generator.h"
14 #include "cmTransformDepfile.h"
15
16 class cmGlobalGeneratorFactory;
17 class cmMakefile;
18 class cmake;
19
20 /** \class cmGlobalVisualStudio11Generator  */
21 class cmGlobalVisualStudio11Generator : public cmGlobalVisualStudio10Generator
22 {
23 public:
24   static std::unique_ptr<cmGlobalGeneratorFactory> NewFactory();
25
26   bool MatchesGeneratorName(const std::string& name) const override;
27
28   bool SupportsCustomCommandDepfile() const override { return true; }
29
30   cm::optional<cmDepfileFormat> DepfileFormat() const override
31   {
32     return cmDepfileFormat::MSBuildAdditionalInputs;
33   }
34
35 protected:
36   cmGlobalVisualStudio11Generator(cmake* cm, const std::string& name,
37                                   std::string const& platformInGeneratorName);
38
39   bool InitializeWindowsPhone(cmMakefile* mf) override;
40   bool InitializeWindowsStore(cmMakefile* mf) override;
41   bool SelectWindowsPhoneToolset(std::string& toolset) const override;
42   bool SelectWindowsStoreToolset(std::string& toolset) const override;
43
44   // Used to verify that the Desktop toolset for the current generator is
45   // installed on the machine.
46   virtual bool IsWindowsDesktopToolsetInstalled() const;
47
48   // These aren't virtual because we need to check if the selected version
49   // of the toolset is installed
50   bool IsWindowsPhoneToolsetInstalled() const;
51   bool IsWindowsStoreToolsetInstalled() const;
52
53   bool UseFolderProperty() const override;
54   static std::set<std::string> GetInstalledWindowsCESDKs();
55
56   /** Return true if target system supports debugging deployment. */
57   bool TargetSystemSupportsDeployment() const override;
58
59 private:
60   class Factory;
61   friend class Factory;
62 };