aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-01-27 14:28:49 +0100
committerTobias Hunger <tobias.hunger@qt.io>2017-01-30 13:27:16 +0000
commite8b4e180cd0eb3752116284415b327f0946be833 (patch)
treea32b8bcf4c85526e1bf20e552cc40a6388083286
parent836252990a2f46b16698b13dd883e841fedd2e37 (diff)
RunConfiguration: Introduce buildSystemTarget()
Introduce a method that maps a RunConfiguration to the build system target that created the executable. Implement the method in all RunConfigurations where that makes sense (e.g. no CustomExecutables). Change-Id: Ifaac859c2cd9b2806a0d7c185b2239312a67752a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/baremetal/baremetalrunconfiguration.cpp9
-rw-r--r--src/plugins/baremetal/baremetalrunconfiguration.h2
-rw-r--r--src/plugins/cmakeprojectmanager/cmakerunconfiguration.h2
-rw-r--r--src/plugins/ios/iosrunconfiguration.cpp5
-rw-r--r--src/plugins/ios/iosrunconfiguration.h2
-rw-r--r--src/plugins/projectexplorer/runconfiguration.h4
-rw-r--r--src/plugins/qbsprojectmanager/qbsnodes.cpp2
-rw-r--r--src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp2
-rw-r--r--src/plugins/qbsprojectmanager/qbsrunconfiguration.h2
-rw-r--r--src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp5
-rw-r--r--src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h2
-rw-r--r--src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp5
-rw-r--r--src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h2
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp7
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.h2
-rw-r--r--src/plugins/remotelinux/remotelinuxrunconfiguration.cpp5
-rw-r--r--src/plugins/remotelinux/remotelinuxrunconfiguration.h2
-rw-r--r--src/plugins/winrt/winrtrunconfiguration.cpp7
-rw-r--r--src/plugins/winrt/winrtrunconfiguration.h2
19 files changed, 66 insertions, 3 deletions
diff --git a/src/plugins/baremetal/baremetalrunconfiguration.cpp b/src/plugins/baremetal/baremetalrunconfiguration.cpp
index eb57e3549b..b7fcf1b62e 100644
--- a/src/plugins/baremetal/baremetalrunconfiguration.cpp
+++ b/src/plugins/baremetal/baremetalrunconfiguration.cpp
@@ -155,6 +155,15 @@ QString BareMetalRunConfiguration::projectFilePath() const
return m_projectFilePath;
}
+QString BareMetalRunConfiguration::buildSystemTarget() const
+{
+ const BuildTargetInfoList targets = target()->applicationTargets();
+ const Utils::FileName projectFilePath = Utils::FileName::fromString(m_projectFilePath);
+ auto bst = std::find_if(targets.list.constBegin(), targets.list.constEnd(),
+ [&projectFilePath](const BuildTargetInfo &bti) { return bti.projectFilePath == projectFilePath; });
+ return (bst == targets.list.constEnd()) ? QString() : bst->targetName;
+}
+
void BareMetalRunConfiguration::setDisabledReason(const QString &reason) const
{
m_disabledReason = reason;
diff --git a/src/plugins/baremetal/baremetalrunconfiguration.h b/src/plugins/baremetal/baremetalrunconfiguration.h
index 9d24cb27e7..ef400cb203 100644
--- a/src/plugins/baremetal/baremetalrunconfiguration.h
+++ b/src/plugins/baremetal/baremetalrunconfiguration.h
@@ -58,6 +58,8 @@ public:
QString projectFilePath() const;
+ QString buildSystemTarget() const final;
+
static const char *IdPrefix;
signals:
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
index eb7ef71abb..b89c23ffc4 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
@@ -56,6 +56,8 @@ public:
bool isEnabled() const override;
QString disabledReason() const override;
+ QString buildSystemTarget() const final { return m_buildTarget; }
+
protected:
CMakeRunConfiguration(ProjectExplorer::Target *parent, CMakeRunConfiguration *source);
bool fromMap(const QVariantMap &map) override;
diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp
index e6e7010874..d33e2eaf76 100644
--- a/src/plugins/ios/iosrunconfiguration.cpp
+++ b/src/plugins/ios/iosrunconfiguration.cpp
@@ -274,6 +274,11 @@ QVariantMap IosRunConfiguration::toMap() const
return res;
}
+QString IosRunConfiguration::buildSystemTarget() const
+{
+ return static_cast<QmakeProject *>(target()->project())->mapProFilePathToTarget(m_profilePath);
+}
+
bool IosRunConfiguration::isEnabled() const
{
if (m_parseInProgress || !m_parseSuccess)
diff --git a/src/plugins/ios/iosrunconfiguration.h b/src/plugins/ios/iosrunconfiguration.h
index 8d1b50251e..09919e5b3b 100644
--- a/src/plugins/ios/iosrunconfiguration.h
+++ b/src/plugins/ios/iosrunconfiguration.h
@@ -68,6 +68,8 @@ public:
bool fromMap(const QVariantMap &map) override;
QVariantMap toMap() const override;
+ QString buildSystemTarget() const final;
+
protected:
IosRunConfiguration(ProjectExplorer::Target *parent, IosRunConfiguration *source);
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index e63b5bdee5..6d0dbda775 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -266,6 +266,10 @@ public:
virtual Runnable runnable() const;
virtual Abi abi() const;
+ // Return the name of the build system target that created this run configuration.
+ // May return an empty string if no target built the executable!
+ virtual QString buildSystemTarget() const { return QString(); }
+
void addExtraAspect(IRunConfigurationAspect *aspect);
signals:
diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp
index e7b0678bcd..092e842453 100644
--- a/src/plugins/qbsprojectmanager/qbsnodes.cpp
+++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp
@@ -665,7 +665,7 @@ QList<ProjectExplorer::RunConfiguration *> QbsProductNode::runConfigurations() c
QbsRunConfiguration *qbsRc = qobject_cast<QbsRunConfiguration *>(rc);
if (!qbsRc)
continue;
- if (qbsRc->uniqueProductName() == QbsProject::uniqueProductName(qbsProductData()))
+ if (qbsRc->buildSystemTarget() == QbsProject::uniqueProductName(qbsProductData()))
result << qbsRc;
}
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
index 90c65b42f9..49cf0a7f4f 100644
--- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
@@ -297,7 +297,7 @@ void QbsRunConfiguration::addToBaseEnvironment(Utils::Environment &env) const
env.prependOrSetLibrarySearchPath(qtVersion->qmakeProperty("QT_INSTALL_LIBS"));
}
-QString QbsRunConfiguration::uniqueProductName() const
+QString QbsRunConfiguration::buildSystemTarget() const
{
return m_uniqueProductName;
}
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
index 51c2f2f384..5fab929aa0 100644
--- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
+++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
@@ -75,7 +75,7 @@ public:
void addToBaseEnvironment(Utils::Environment &env) const;
- QString uniqueProductName() const;
+ QString buildSystemTarget() const final;
bool isConsoleApplication() const;
signals:
diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp
index 8da6dd2320..49f1013018 100644
--- a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp
+++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp
@@ -136,6 +136,11 @@ QString QmakeAndroidRunConfiguration::disabledReason() const
return QString();
}
+QString QmakeAndroidRunConfiguration::buildSystemTarget() const
+{
+ return qmakeProject()->mapProFilePathToTarget(m_proFilePath);
+}
+
void QmakeAndroidRunConfiguration::proFileUpdated(QmakeProjectManager::QmakeProFileNode *pro, bool success, bool parseInProgress)
{
QmakeProject *project = qmakeProject();
diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h
index d67fdf01b5..4fbaf29590 100644
--- a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h
+++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h
@@ -51,6 +51,8 @@ public:
bool isEnabled() const override;
QString disabledReason() const override;
+ QString buildSystemTarget() const final;
+
protected:
QmakeAndroidRunConfiguration(ProjectExplorer::Target *parent, QmakeAndroidRunConfiguration *source);
diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
index faf7bba961..af9c7e9601 100644
--- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
+++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
@@ -422,6 +422,11 @@ void DesktopQmakeRunConfiguration::addToBaseEnvironment(Environment &env) const
env.prependOrSetLibrarySearchPath(qtVersion->qmakeProperty("QT_INSTALL_LIBS"));
}
+QString DesktopQmakeRunConfiguration::buildSystemTarget() const
+{
+ return qmakeProject()->mapProFilePathToTarget(m_proFilePath);
+}
+
Utils::FileName DesktopQmakeRunConfiguration::proFilePath() const
{
return m_proFilePath;
diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h
index b9c7aebe1b..144745b07b 100644
--- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h
+++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h
@@ -78,6 +78,8 @@ public:
void addToBaseEnvironment(Utils::Environment &env) const;
+ QString buildSystemTarget() const final;
+
signals:
void baseWorkingDirectoryChanged(const QString&);
void usingDyldImageSuffixChanged(bool);
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
index a57a30294d..702ae7a24a 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
@@ -1546,6 +1546,13 @@ QmakeProject::AsyncUpdateState QmakeProject::asyncUpdateState() const
return m_asyncUpdateState;
}
+QString QmakeProject::mapProFilePathToTarget(const FileName &proFilePath)
+{
+ const QmakeProjectManager::QmakeProFileNode *root = rootProjectNode();
+ const QmakeProjectManager::QmakeProFileNode *node = root ? root->findProFileFor(proFilePath) : nullptr;
+ return node ? node->targetInformation().target : QString();
+}
+
} // namespace QmakeProjectManager
#include "qmakeproject.moc"
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h
index c109dd8e2c..3784daa6b5 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.h
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.h
@@ -136,6 +136,8 @@ public:
enum AsyncUpdateState { Base, AsyncFullUpdatePending, AsyncPartialUpdatePending, AsyncUpdateInProgress, ShuttingDown };
AsyncUpdateState asyncUpdateState() const;
+ QString mapProFilePathToTarget(const Utils::FileName &proFilePath);
+
signals:
void proFileUpdated(QmakeProjectManager::QmakeProFileNode *node, bool, bool);
void buildDirectoryInitialized();
diff --git a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp
index fbbe4ba2e1..4dcca9c9cc 100644
--- a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp
+++ b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp
@@ -151,6 +151,11 @@ QVariantMap RemoteLinuxRunConfiguration::toMap() const
return map;
}
+QString RemoteLinuxRunConfiguration::buildSystemTarget() const
+{
+ return d->targetName;
+}
+
bool RemoteLinuxRunConfiguration::fromMap(const QVariantMap &map)
{
if (!RunConfiguration::fromMap(map))
diff --git a/src/plugins/remotelinux/remotelinuxrunconfiguration.h b/src/plugins/remotelinux/remotelinuxrunconfiguration.h
index a13cad77b5..6060b4540a 100644
--- a/src/plugins/remotelinux/remotelinuxrunconfiguration.h
+++ b/src/plugins/remotelinux/remotelinuxrunconfiguration.h
@@ -77,6 +77,8 @@ public:
QVariantMap toMap() const override;
+ QString buildSystemTarget() const final;
+
static const char *IdPrefix;
signals:
diff --git a/src/plugins/winrt/winrtrunconfiguration.cpp b/src/plugins/winrt/winrtrunconfiguration.cpp
index 1c91142a14..4a29b722e8 100644
--- a/src/plugins/winrt/winrtrunconfiguration.cpp
+++ b/src/plugins/winrt/winrtrunconfiguration.cpp
@@ -32,6 +32,7 @@
#include <projectexplorer/target.h>
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/runconfigurationaspects.h>
+#include <qmakeprojectmanager/qmakeproject.h>
namespace WinRt {
namespace Internal {
@@ -84,5 +85,11 @@ void WinRtRunConfiguration::setUninstallAfterStop(bool b)
emit uninstallAfterStopChanged(m_uninstallAfterStop);
}
+QString WinRtRunConfiguration::buildSystemTarget() const
+{
+ return static_cast<QmakeProjectManager::QmakeProject *>(target()->project())
+ ->mapProFilePathToTarget(Utils::FileName::fromString(m_proFilePath));
+}
+
} // namespace Internal
} // namespace WinRt
diff --git a/src/plugins/winrt/winrtrunconfiguration.h b/src/plugins/winrt/winrtrunconfiguration.h
index dc4d6e15e6..36bcf1ad43 100644
--- a/src/plugins/winrt/winrtrunconfiguration.h
+++ b/src/plugins/winrt/winrtrunconfiguration.h
@@ -47,6 +47,8 @@ public:
bool uninstallAfterStop() const { return m_uninstallAfterStop; }
void setUninstallAfterStop(bool b);
+ QString buildSystemTarget() const final;
+
signals:
void argumentsChanged(QString);
void uninstallAfterStopChanged(bool);