From 3c63b621d9adc621aed227b1154fa36b7c765992 Mon Sep 17 00:00:00 2001
From: Joerg Bornemann <joerg.bornemann@qt.io>
Date: Tue, 17 May 2016 14:40:46 +0200
Subject: [PATCH] QbsProjectManager: Write MSVC compiler version to profile

Change-Id: Ibd8c559ffecf327eee6af8e6d5fbacb5c8c863d1
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
---
 .../defaultpropertyprovider.cpp               | 21 +++++++++++++++++--
 src/plugins/qbsprojectmanager/qbsconstants.h  |  3 +++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
index a7869c491ff..2954ec64777 100644
--- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
+++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
@@ -156,6 +156,19 @@ QVariantMap DefaultPropertyProvider::properties(const ProjectExplorer::Kit *k,
     return data;
 }
 
+struct MSVCVersion
+{
+    int major = 0;
+    int minor = 0;
+};
+
+static MSVCVersion msvcCompilerVersion(const ProjectExplorer::Abi &abi)
+{
+    MSVCVersion v;
+    v.major = abi.osFlavor() - ProjectExplorer::Abi::WindowsMsvc2005Flavor + 14;
+    return v;
+}
+
 QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplorer::Kit *k,
                                                              const QVariantMap &defaultData) const
 {
@@ -228,10 +241,14 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor
     const QString toolchainPrefix = extractToolchainPrefix(&compilerName);
     if (!toolchainPrefix.isEmpty())
         data.insert(QLatin1String(CPP_TOOLCHAINPREFIX), toolchainPrefix);
-    if (toolchain.contains(QLatin1String("msvc")))
+    if (toolchain.contains(QLatin1String("msvc"))) {
         data.insert(QLatin1String(CPP_COMPILERNAME), compilerName);
-    else
+        const MSVCVersion v = msvcCompilerVersion(targetAbi);
+        data.insert(QLatin1String(CPP_COMPILERVERSIONMAJOR), v.major);
+        data.insert(QLatin1String(CPP_COMPILERVERSIONMINOR), v.minor);
+    } else {
         data.insert(QLatin1String(CPP_CXXCOMPILERNAME), compilerName);
+    }
     if (targetAbi.os() != ProjectExplorer::Abi::WindowsOS
             || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) {
         data.insert(QLatin1String(CPP_LINKERNAME), compilerName);
diff --git a/src/plugins/qbsprojectmanager/qbsconstants.h b/src/plugins/qbsprojectmanager/qbsconstants.h
index 66a3a2c21b4..63a18145bbe 100644
--- a/src/plugins/qbsprojectmanager/qbsconstants.h
+++ b/src/plugins/qbsprojectmanager/qbsconstants.h
@@ -38,6 +38,9 @@ const char CPP_TOOLCHAINPATH[] = "cpp.toolchainInstallPath";
 const char CPP_TOOLCHAINPREFIX[] = "cpp.toolchainPrefix";
 const char CPP_COMPILERNAME[] = "cpp.compilerName";
 const char CPP_CXXCOMPILERNAME[] = "cpp.cxxCompilerName";
+const char CPP_COMPILERVERSIONMAJOR[] = "cpp.compilerVersionMajor";
+const char CPP_COMPILERVERSIONMINOR[] = "cpp.compilerVersionMinor";
+const char CPP_COMPILERVERSIONPATCH[] = "cpp.compilerVersionPatch";
 const char CPP_LINKERNAME[] = "cpp.linkerName";
 const char CPP_PLATFORMCFLAGS[] = "cpp.platformCFlags";
 const char CPP_PLATFORMCXXFLAGS[] = "cpp.platformCxxFlags";
-- 
GitLab