From e59a208b69e701593ca7ba60f3a4c2215f3e44c4 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Wed, 16 Jun 2021 10:53:22 -0400
Subject: [PATCH] cmGlobalVisualStudio10Generator: Adopt GetVSInstanceVersion
 method

Port from `cmGlobalVisualStudioVersionedGenerator`.
---
 Source/cmGlobalVisualStudio10Generator.h        |  7 +++++++
 .../cmGlobalVisualStudioVersionedGenerator.cxx  | 17 +++++++++++------
 Source/cmGlobalVisualStudioVersionedGenerator.h |  2 +-
 3 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h
index 8d30ef8e855..5022a0fe5ed 100644
--- a/Source/cmGlobalVisualStudio10Generator.h
+++ b/Source/cmGlobalVisualStudio10Generator.h
@@ -5,6 +5,8 @@
 #include <memory>
 #include <set>
 
+#include <cm/optional>
+
 #include "cmGlobalVisualStudio8Generator.h"
 #include "cmVisualStudio10ToolsetOptions.h"
 
@@ -119,6 +121,11 @@ public:
   std::string Encoding() override;
   const char* GetToolsVersion() const;
 
+  virtual cm::optional<unsigned long long> GetVSInstanceVersion() const
+  {
+    return {};
+  }
+
   bool GetSupportsUnityBuilds() const { return this->SupportsUnityBuilds; }
 
   bool FindMakeProgram(cmMakefile* mf) override;
diff --git a/Source/cmGlobalVisualStudioVersionedGenerator.cxx b/Source/cmGlobalVisualStudioVersionedGenerator.cxx
index c11ab1bf82c..50dc30b32cf 100644
--- a/Source/cmGlobalVisualStudioVersionedGenerator.cxx
+++ b/Source/cmGlobalVisualStudioVersionedGenerator.cxx
@@ -391,10 +391,15 @@ bool cmGlobalVisualStudioVersionedGenerator::GetVSInstance(
   return vsSetupAPIHelper.GetVSInstanceInfo(dir);
 }
 
-bool cmGlobalVisualStudioVersionedGenerator::GetVSInstanceVersion(
-  unsigned long long& vsInstanceVersion) const
+cm::optional<unsigned long long>
+cmGlobalVisualStudioVersionedGenerator::GetVSInstanceVersion() const
 {
-  return vsSetupAPIHelper.GetVSInstanceVersion(vsInstanceVersion);
+  cm::optional<unsigned long long> result;
+  unsigned long long vsInstanceVersion;
+  if (vsSetupAPIHelper.GetVSInstanceVersion(vsInstanceVersion)) {
+    result = vsInstanceVersion;
+  }
+  return result;
 }
 
 bool cmGlobalVisualStudioVersionedGenerator::IsStdOutEncodingSupported() const
@@ -407,9 +412,9 @@ bool cmGlobalVisualStudioVersionedGenerator::IsStdOutEncodingSupported() const
     return false;
   }
   unsigned long long const vsInstanceVersion16_7_P2 = 4503631666610212;
-  unsigned long long vsInstanceVersion;
-  return (this->GetVSInstanceVersion(vsInstanceVersion) &&
-          vsInstanceVersion > vsInstanceVersion16_7_P2);
+  cm::optional<unsigned long long> vsInstanceVersion =
+    this->GetVSInstanceVersion();
+  return (vsInstanceVersion && *vsInstanceVersion > vsInstanceVersion16_7_P2);
 }
 
 const char*
diff --git a/Source/cmGlobalVisualStudioVersionedGenerator.h b/Source/cmGlobalVisualStudioVersionedGenerator.h
index cee129e52b5..105e4954bd4 100644
--- a/Source/cmGlobalVisualStudioVersionedGenerator.h
+++ b/Source/cmGlobalVisualStudioVersionedGenerator.h
@@ -28,7 +28,7 @@ public:
 
   bool GetVSInstance(std::string& dir) const;
 
-  bool GetVSInstanceVersion(unsigned long long& vsInstanceVersion) const;
+  cm::optional<unsigned long long> GetVSInstanceVersion() const override;
 
   AuxToolset FindAuxToolset(std::string& version,
                             std::string& props) const override;
-- 
GitLab