summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalVisualStudioVersionedGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-01-28 15:49:16 (GMT)
committerBrad King <brad.king@kitware.com>2019-01-28 17:58:21 (GMT)
commit0fd742a6ffa637b8ccac3b61b42bd10b2c3a87cc (patch)
tree3f264f210f2e7ab523433b4f87509e581c7e9110 /Source/cmGlobalVisualStudioVersionedGenerator.cxx
parent17cef3806d958bd03ec08b925fe585a0cfa204fa (diff)
downloadCMake-0fd742a6ffa637b8ccac3b61b42bd10b2c3a87cc.zip
CMake-0fd742a6ffa637b8ccac3b61b42bd10b2c3a87cc.tar.gz
CMake-0fd742a6ffa637b8ccac3b61b42bd10b2c3a87cc.tar.bz2
VS: Teach VS 2019 generator to select host tools matching host arch
This generator is new so we can introduce the long-desired behavior of selecting ``host=x64`` tools by default on x64 hosts.
Diffstat (limited to 'Source/cmGlobalVisualStudioVersionedGenerator.cxx')
-rw-r--r--Source/cmGlobalVisualStudioVersionedGenerator.cxx18
1 files changed, 18 insertions, 0 deletions
diff --git a/Source/cmGlobalVisualStudioVersionedGenerator.cxx b/Source/cmGlobalVisualStudioVersionedGenerator.cxx
index b019f39..bc6b453 100644
--- a/Source/cmGlobalVisualStudioVersionedGenerator.cxx
+++ b/Source/cmGlobalVisualStudioVersionedGenerator.cxx
@@ -11,10 +11,13 @@
#if defined(_M_ARM64)
# define HOST_PLATFORM_NAME "ARM64"
+# define HOST_TOOLS_ARCH ""
#elif defined(_M_ARM)
# define HOST_PLATFORM_NAME "ARM"
+# define HOST_TOOLS_ARCH ""
#elif defined(_M_IA64)
# define HOST_PLATFORM_NAME "Itanium"
+# define HOST_TOOLS_ARCH ""
#else
# include "cmsys/SystemInformation.hxx"
#endif
@@ -33,6 +36,20 @@ static std::string VSHostPlatformName()
#endif
}
+static std::string VSHostArchitecture()
+{
+#ifdef HOST_TOOLS_ARCH
+ return HOST_TOOLS_ARCH;
+#else
+ cmsys::SystemInformation info;
+ if (info.Is64Bits()) {
+ return "x64";
+ } else {
+ return "x86";
+ }
+#endif
+}
+
static unsigned int VSVersionToMajor(
cmGlobalVisualStudioGenerator::VSVersion v)
{
@@ -262,6 +279,7 @@ cmGlobalVisualStudioVersionedGenerator::cmGlobalVisualStudioVersionedGenerator(
this->DefaultLinkFlagTableName = VSVersionToToolset(this->Version);
if (this->Version >= cmGlobalVisualStudioGenerator::VS16) {
this->DefaultPlatformName = VSHostPlatformName();
+ this->DefaultPlatformToolsetHostArchitecture = VSHostArchitecture();
}
}