From abbfc62f034db2991a24e8183bff2318a74bf519 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Tue, 1 Nov 2011 17:19:30 +0100
Subject: [PATCH] Move mkspec policy into the Qt4 targets

For embedded we do not want to override the mkspec as used in the Qt version
since that was most likely tweaked to work with the tool chain selected.

In a generic desktop target we want to be able to switch between different
compilers of the same ABI.

Change-Id: Ib49e54dd15e78c2459b17c552a3c31cb3dce63eb
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
---
 src/plugins/qt4projectmanager/qmakestep.cpp     | 12 +-----------
 src/plugins/qt4projectmanager/qt4target.cpp     | 15 +++++++++++++++
 src/plugins/qt4projectmanager/qt4target.h       | 14 ++++++++------
 src/plugins/remotelinux/embeddedlinuxtarget.cpp |  9 +++++++++
 src/plugins/remotelinux/embeddedlinuxtarget.h   |  2 ++
 5 files changed, 35 insertions(+), 17 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 69d88452fa4..91f656dd8b1 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -457,17 +457,7 @@ QString QMakeStep::mkspec()
         }
     }
 
-    QtSupport::BaseQtVersion *version = bc->qtVersion();
-    // We do not know which abi the Qt version has, so let's stick with the defaults
-    if (version && version->qtAbis().count() == 1 && version->qtAbis().first().isNull())
-        return QString();
-
-    const QString tcSpec = bc->toolChain() ? bc->toolChain()->mkspec() : QString();
-    if (!version)
-        return tcSpec;
-    if (!tcSpec.isEmpty() && version->hasMkspec(tcSpec))
-        return tcSpec;
-    return version->mkspec();
+    return static_cast<Qt4BaseTarget *>(target())->mkspec(bc);
 }
 
 QVariantMap QMakeStep::toMap() const
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index f50145771c8..bc0a33c1217 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -310,6 +310,21 @@ ProjectExplorer::ToolChain *Qt4BaseTarget::preferredToolChain(ProjectExplorer::B
     return tcs.isEmpty() ? 0 : tcs.at(0);
 }
 
+QString Qt4BaseTarget::mkspec(const Qt4BuildConfiguration *bc) const
+{
+    QtSupport::BaseQtVersion *version = bc->qtVersion();
+    // We do not know which abi the Qt version has, so let's stick with the defaults
+    if (version && version->qtAbis().count() == 1 && version->qtAbis().first().isNull())
+        return QString();
+
+    const QString tcSpec = bc->toolChain() ? bc->toolChain()->mkspec() : QString();
+    if (!version)
+        return tcSpec;
+    if (!tcSpec.isEmpty() && version->hasMkspec(tcSpec))
+        return tcSpec;
+    return version->mkspec();
+}
+
 void Qt4BaseTarget::removeUnconfiguredCustomExectutableRunConfigurations()
 {
     if (runConfigurations().count()) {
diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h
index 9f25795aeeb..785b824319c 100644
--- a/src/plugins/qt4projectmanager/qt4target.h
+++ b/src/plugins/qt4projectmanager/qt4target.h
@@ -78,12 +78,12 @@ public:
     // This is the same for almost all Qt4Targets
     // so for now offer a convience function
     Qt4BuildConfiguration *addQt4BuildConfiguration(QString defaultDisplayName,
-                                                            QString displayName,
-                                                            QtSupport::BaseQtVersion *qtversion,
-                                                            QtSupport::BaseQtVersion::QmakeBuildConfigs qmakeBuildConfiguration,
-                                                            QString additionalArguments,
-                                                            QString directory,
-                                                            bool importing);
+                                                    QString displayName,
+                                                    QtSupport::BaseQtVersion *qtversion,
+                                                    QtSupport::BaseQtVersion::QmakeBuildConfigs qmakeBuildConfiguration,
+                                                    QString additionalArguments,
+                                                    QString directory,
+                                                    bool importing);
 
     virtual void createApplicationProFiles() = 0;
 
@@ -92,6 +92,8 @@ public:
     QList<ProjectExplorer::ToolChain *> possibleToolChains(ProjectExplorer::BuildConfiguration *bc) const;
     ProjectExplorer::ToolChain *preferredToolChain(ProjectExplorer::BuildConfiguration *) const;
 
+    virtual QString mkspec(const Qt4BuildConfiguration *bc) const;
+
 signals:
     void buildDirectoryInitialized();
     /// emitted if the build configuration changed in a way that
diff --git a/src/plugins/remotelinux/embeddedlinuxtarget.cpp b/src/plugins/remotelinux/embeddedlinuxtarget.cpp
index 22f3782a649..5f0ef5b03ac 100644
--- a/src/plugins/remotelinux/embeddedlinuxtarget.cpp
+++ b/src/plugins/remotelinux/embeddedlinuxtarget.cpp
@@ -39,6 +39,7 @@
 #include <qt4projectmanager/qt4buildconfiguration.h>
 #include <qt4projectmanager/qt4nodes.h>
 #include <qt4projectmanager/qt4project.h>
+#include <qtsupport/baseqtversion.h>
 
 #include <QtCore/QCoreApplication>
 
@@ -72,6 +73,14 @@ QList<ProjectExplorer::RunConfiguration *> EmbeddedLinuxTarget::runConfiguration
     return result;
 }
 
+QString EmbeddedLinuxTarget::mkspec(const Qt4ProjectManager::Qt4BuildConfiguration *bc) const
+{
+   QtSupport::BaseQtVersion *version = bc->qtVersion();
+   if (!version)
+       return QString();
+   return version->mkspec();
+}
+
 void EmbeddedLinuxTarget::createApplicationProFiles()
 {
     removeUnconfiguredCustomExectutableRunConfigurations();
diff --git a/src/plugins/remotelinux/embeddedlinuxtarget.h b/src/plugins/remotelinux/embeddedlinuxtarget.h
index 181a9b5b07f..8ff273a48d8 100644
--- a/src/plugins/remotelinux/embeddedlinuxtarget.h
+++ b/src/plugins/remotelinux/embeddedlinuxtarget.h
@@ -55,6 +55,8 @@ public:
 
     QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Node *n);
 
+    QString mkspec(const Qt4ProjectManager::Qt4BuildConfiguration *bc) const;
+
 private:
     Qt4ProjectManager::Qt4BuildConfigurationFactory *m_buildConfigurationFactory;
 
-- 
GitLab