Browse Source

Add global generator factory method to get default platform name

Brad King 6 years ago
parent
commit
8bba458ea5

+ 5 - 0
Source/cmGlobalGeneratorFactory.h

@@ -41,6 +41,9 @@ public:
 
   /** Get the list of supported platforms name for this generator */
   virtual std::vector<std::string> GetKnownPlatforms() const = 0;
+
+  /** If the generator suports platforms, get its default.  */
+  virtual std::string GetDefaultPlatformName() const = 0;
 };
 
 template <class T>
@@ -87,6 +90,8 @@ public:
     // default is no platform supported
     return std::vector<std::string>();
   }
+
+  std::string GetDefaultPlatformName() const override { return std::string(); }
 };
 
 #endif

+ 2 - 0
Source/cmGlobalVisualStudio10Generator.cxx

@@ -100,6 +100,8 @@ public:
     platforms.emplace_back("Itanium");
     return platforms;
   }
+
+  std::string GetDefaultPlatformName() const override { return "Win32"; }
 };
 
 cmGlobalGeneratorFactory* cmGlobalVisualStudio10Generator::NewFactory()

+ 2 - 0
Source/cmGlobalVisualStudio11Generator.cxx

@@ -109,6 +109,8 @@ public:
 
     return platforms;
   }
+
+  std::string GetDefaultPlatformName() const override { return "Win32"; }
 };
 
 cmGlobalGeneratorFactory* cmGlobalVisualStudio11Generator::NewFactory()

+ 2 - 0
Source/cmGlobalVisualStudio12Generator.cxx

@@ -84,6 +84,8 @@ public:
     platforms.emplace_back("ARM");
     return platforms;
   }
+
+  std::string GetDefaultPlatformName() const override { return "Win32"; }
 };
 
 cmGlobalGeneratorFactory* cmGlobalVisualStudio12Generator::NewFactory()

+ 2 - 0
Source/cmGlobalVisualStudio14Generator.cxx

@@ -84,6 +84,8 @@ public:
     platforms.emplace_back("ARM");
     return platforms;
   }
+
+  std::string GetDefaultPlatformName() const override { return "Win32"; }
 };
 
 cmGlobalGeneratorFactory* cmGlobalVisualStudio14Generator::NewFactory()

+ 2 - 0
Source/cmGlobalVisualStudio9Generator.cxx

@@ -99,6 +99,8 @@ public:
     }
     return platforms;
   }
+
+  std::string GetDefaultPlatformName() const override { return "Win32"; }
 };
 
 cmGlobalGeneratorFactory* cmGlobalVisualStudio9Generator::NewFactory()

+ 7 - 0
Source/cmGlobalVisualStudioVersionedGenerator.cxx

@@ -159,6 +159,8 @@ public:
     platforms.emplace_back("ARM64");
     return platforms;
   }
+
+  std::string GetDefaultPlatformName() const override { return "Win32"; }
 };
 
 cmGlobalGeneratorFactory*
@@ -234,6 +236,11 @@ public:
     platforms.emplace_back("ARM64");
     return platforms;
   }
+
+  std::string GetDefaultPlatformName() const override
+  {
+    return VSHostPlatformName();
+  }
 };
 
 cmGlobalGeneratorFactory*

+ 2 - 0
Source/cmGlobalXCodeGenerator.cxx

@@ -152,6 +152,8 @@ public:
   {
     return std::vector<std::string>();
   }
+
+  std::string GetDefaultPlatformName() const override { return std::string(); }
 };
 
 cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(

+ 1 - 0
Source/cmake.cxx

@@ -977,6 +977,7 @@ void cmake::GetRegisteredGenerators(std::vector<GeneratorInfo>& generators,
       info.supportsToolset = gen->SupportsToolset();
       info.supportsPlatform = gen->SupportsPlatform();
       info.supportedPlatforms = gen->GetKnownPlatforms();
+      info.defaultPlatform = gen->GetDefaultPlatformName();
       info.name = name;
       info.baseName = name;
       info.isAlias = false;

+ 1 - 0
Source/cmake.h

@@ -105,6 +105,7 @@ public:
     bool supportsToolset;
     bool supportsPlatform;
     std::vector<std::string> supportedPlatforms;
+    std::string defaultPlatform;
     bool isAlias;
   };