summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-02-21 19:05:59 (GMT)
committerBrad King <brad.king@kitware.com>2017-02-21 19:05:59 (GMT)
commite9e8a5dc084b470a50ab4a16008db30022068fb0 (patch)
tree75c867d7a125ad301735ca8e13e0f7c68399c990
parentfe8f5b54f561de6fa8fed1186aa7ef3ce721b7d9 (diff)
parent2da0838c64b6d43fd12eecb5d65ac458a335b266 (diff)
downloadCMake-e9e8a5dc084b470a50ab4a16008db30022068fb0.zip
CMake-e9e8a5dc084b470a50ab4a16008db30022068fb0.tar.gz
CMake-e9e8a5dc084b470a50ab4a16008db30022068fb0.tar.bz2
Merge branch 'vs2017-fallback-sdk' into release
-rw-r--r--Source/cmGlobalVisualStudio15Generator.cxx34
-rw-r--r--Source/cmGlobalVisualStudio15Generator.h4
2 files changed, 38 insertions, 0 deletions
diff --git a/Source/cmGlobalVisualStudio15Generator.cxx b/Source/cmGlobalVisualStudio15Generator.cxx
index d11ee7c..2312bc0 100644
--- a/Source/cmGlobalVisualStudio15Generator.cxx
+++ b/Source/cmGlobalVisualStudio15Generator.cxx
@@ -109,6 +109,18 @@ void cmGlobalVisualStudio15Generator::WriteSLNHeader(std::ostream& fout)
}
}
+bool cmGlobalVisualStudio15Generator::InitializeWindows(cmMakefile* mf)
+{
+ // If the Win 8.1 SDK is installed then we can select a SDK matching
+ // the target Windows version.
+ if (this->IsWin81SDKInstalled()) {
+ return cmGlobalVisualStudio14Generator::InitializeWindows(mf);
+ }
+ // Otherwise we must choose a Win 10 SDK even if we are not targeting
+ // Windows 10.
+ return this->SelectWindows10SDK(mf, false);
+}
+
bool cmGlobalVisualStudio15Generator::SelectWindowsStoreToolset(
std::string& toolset) const
{
@@ -135,6 +147,28 @@ bool cmGlobalVisualStudio15Generator::IsWindowsStoreToolsetInstalled() const
return vsSetupAPIHelper.IsWin10SDKInstalled();
}
+bool cmGlobalVisualStudio15Generator::IsWin81SDKInstalled() const
+{
+ // Does the VS installer tool know about one?
+ if (vsSetupAPIHelper.IsWin81SDKInstalled()) {
+ return true;
+ }
+
+ // Does the registry know about one (e.g. from VS 2015)?
+ std::string win81Root;
+ if (cmSystemTools::ReadRegistryValue(
+ "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\"
+ "Windows Kits\\Installed Roots;KitsRoot81",
+ win81Root, cmSystemTools::KeyWOW64_32) ||
+ cmSystemTools::ReadRegistryValue(
+ "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\"
+ "Windows Kits\\Installed Roots;KitsRoot81",
+ win81Root, cmSystemTools::KeyWOW64_32)) {
+ return true;
+ }
+ return false;
+}
+
std::string cmGlobalVisualStudio15Generator::FindMSBuildCommand()
{
std::string msbuild;
diff --git a/Source/cmGlobalVisualStudio15Generator.h b/Source/cmGlobalVisualStudio15Generator.h
index 781b41e..f979b65 100644
--- a/Source/cmGlobalVisualStudio15Generator.h
+++ b/Source/cmGlobalVisualStudio15Generator.h
@@ -28,6 +28,7 @@ public:
virtual const char* GetToolsVersion() { return "15.0"; }
protected:
+ bool InitializeWindows(cmMakefile* mf) CM_OVERRIDE;
virtual bool SelectWindowsStoreToolset(std::string& toolset) const;
virtual const char* GetIDEVersion() { return "15.0"; }
@@ -40,6 +41,9 @@ protected:
// of the toolset is installed
bool IsWindowsStoreToolsetInstalled() const;
+ // Check for a Win 8 SDK known to the registry or VS installer tool.
+ bool IsWin81SDKInstalled() const;
+
std::string FindMSBuildCommand() CM_OVERRIDE;
std::string FindDevEnvCommand() CM_OVERRIDE;