From a4a05aef2b55014dcbf0f55755d4cdfee4ac7b12 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 1 Sep 2011 16:16:59 +0200 Subject: [PATCH] QMakeStep: Honor declarative_debug configuration for imported builds Honor the qmake line that is imported: If it contains declarative_debug or QMLJSDEBUGGER_PATH, also set the option in the qmake step, if not not. Change-Id: Ibc524ff8d39b66f76cc79807264db0dd3534e2d7 Reviewed-on: http://codereview.qt-project.org/4090 Reviewed-by: Qt Sanity Bot Reviewed-by: Daniel Teske --- .../qt-desktop/qt4desktoptargetfactory.cpp | 2 +- .../qt-desktop/qt4simulatortargetfactory.cpp | 2 +- .../qt-s60/qt4symbiantargetfactory.cpp | 2 +- .../qt4projectmanager/qt4buildconfiguration.cpp | 19 +++++++++++++------ src/plugins/qt4projectmanager/qt4buildconfiguration.h | 2 +- src/plugins/qt4projectmanager/qt4target.cpp | 11 ++++++++--- src/plugins/qt4projectmanager/qt4target.h | 3 ++- src/plugins/remotelinux/qt4maemotargetfactory.cpp | 2 +- 8 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp index 298d17e161..aedab9d645 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp @@ -180,7 +180,7 @@ ProjectExplorer::Target *Qt4DesktopTargetFactory::create(ProjectExplorer::Projec foreach (const BuildConfigurationInfo &info, infos) t->addQt4BuildConfiguration(msgBuildConfigurationName(info), QString(), info.version, info.buildConfig, - info.additionalArguments, info.directory); + info.additionalArguments, info.directory, info.importing); t->addDeployConfiguration(t->createDeployConfiguration(ProjectExplorer::Constants::DEFAULT_DEPLOYCONFIGURATION_ID)); diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp index 28d190d5b7..38ffb8afe7 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp @@ -164,7 +164,7 @@ ProjectExplorer::Target *Qt4SimulatorTargetFactory::create(ProjectExplorer::Proj foreach (const BuildConfigurationInfo &info, infos) t->addQt4BuildConfiguration(msgBuildConfigurationName(info), QString(), info.version, info.buildConfig, - info.additionalArguments, info.directory); + info.additionalArguments, info.directory, info.importing); t->addDeployConfiguration(t->createDeployConfiguration(ProjectExplorer::Constants::DEFAULT_DEPLOYCONFIGURATION_ID)); diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp index 9671927939..262adefa8d 100644 --- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp @@ -225,7 +225,7 @@ ProjectExplorer::Target *Qt4SymbianTargetFactory::create(ProjectExplorer::Projec foreach (const BuildConfigurationInfo &info, infos) t->addQt4BuildConfiguration(msgBuildConfigurationName(info), QString(), info.version, info.buildConfig, - info.additionalArguments, info.directory); + info.additionalArguments, info.directory, info.importing); t->addDeployConfiguration(t->createDeployConfiguration(QLatin1String(Qt4ProjectManager::Constants::S60_DEVICE_TARGET_ID))); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index 2ffd47c193..39833e6ee4 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -531,11 +531,16 @@ bool Qt4BuildConfiguration::compareToImportFrom(const QString &makefile) return false; } -void Qt4BuildConfiguration::removeQMLInspectorFromArguments(QString *args) +bool Qt4BuildConfiguration::removeQMLInspectorFromArguments(QString *args) { - for (Utils::QtcProcess::ArgIterator ait(args); ait.next(); ) - if (ait.value().contains(QLatin1String(Constants::QMAKEVAR_QMLJSDEBUGGER_PATH))) + bool removedArgument = false; + for (Utils::QtcProcess::ArgIterator ait(args); ait.next(); ) { + if (ait.value().contains(QLatin1String(Constants::QMAKEVAR_QMLJSDEBUGGER_PATH))) { ait.deleteArg(); + removedArgument = true; + } + } + return removedArgument; } QString Qt4BuildConfiguration::extractSpecFromArguments(QString *args, @@ -745,7 +750,7 @@ BuildConfiguration *Qt4BuildConfigurationFactory::create(ProjectExplorer::Target BuildConfiguration *bc = qt4Target->addQt4BuildConfiguration(defaultDebugName, customDebugName, version, (version->defaultBuildConfig() | QtSupport::BaseQtVersion::DebugBuild), - QString(), QString()); + QString(), QString(), false); if (qt4Target->id() != Constants::S60_EMULATOR_TARGET_ID) { //: Release build configuration. We recommend not translating it. @@ -757,7 +762,7 @@ BuildConfiguration *Qt4BuildConfigurationFactory::create(ProjectExplorer::Target bc = qt4Target->addQt4BuildConfiguration(defaultReleaseName, customReleaseName, version, (version->defaultBuildConfig() & ~QtSupport::BaseQtVersion::DebugBuild), - QString(), QString()); + QString(), QString(), false); } return bc; } @@ -832,13 +837,15 @@ void Qt4BuildConfiguration::importFromBuildDirectory() QString additionalArguments = result.second; QString parsedSpec = Qt4BuildConfiguration::extractSpecFromArguments(&additionalArguments, directory, version); - Qt4BuildConfiguration::removeQMLInspectorFromArguments(&additionalArguments); + const bool enableQmlDebugger = + Qt4BuildConfiguration::removeQMLInspectorFromArguments(&additionalArguments); // So we got all the information now apply it... setQtVersion(version); QMakeStep *qs = qmakeStep(); qs->setUserArguments(additionalArguments); + qs->setLinkQmlDebuggingLibrary(enableQmlDebugger); if (!parsedSpec.isEmpty() && parsedSpec != QLatin1String("default") && qs->mkspec() != parsedSpec) { Utils::QtcProcess::addArgs(&additionalArguments, (QStringList() << "-spec" << parsedSpec)); qs->setUserArguments(additionalArguments); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h index a46912b83e..a397831dcd 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h @@ -107,7 +107,7 @@ public: QString makefile() const; bool compareToImportFrom(const QString &makefile); - static void removeQMLInspectorFromArguments(QString *args); + static bool removeQMLInspectorFromArguments(QString *args); static QString extractSpecFromArguments(QString *arguments, const QString &directory, const QtSupport::BaseQtVersion *version, QStringList *outArgs = 0); diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 4c4283210d..bbeadfa9be 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -126,7 +126,7 @@ QList Qt4BaseTargetFactory::availableBuildConfigurations if (!version->isValid() || !version->toolChainAvailable(id)) continue; QtSupport::BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig(); - BuildConfigurationInfo info = BuildConfigurationInfo(version, config, QString(), QString()); + BuildConfigurationInfo info = BuildConfigurationInfo(version, config, QString(), QString(), false, false); info.directory = shadowBuildDirectory(proFilePath, id, msgBuildConfigurationName(info)); infoList.append(info); @@ -299,7 +299,8 @@ Qt4BuildConfiguration *Qt4BaseTarget::addQt4BuildConfiguration(QString defaultDi QString displayName, QtSupport::BaseQtVersion *qtversion, QtSupport::BaseQtVersion::QmakeBuildConfigs qmakeBuildConfiguration, QString additionalArguments, - QString directory) + QString directory, + bool importing) { Q_ASSERT(qtversion); bool debug = qmakeBuildConfiguration & QtSupport::BaseQtVersion::DebugBuild; @@ -324,8 +325,13 @@ Qt4BuildConfiguration *Qt4BaseTarget::addQt4BuildConfiguration(QString defaultDi cleanStep->setClean(true); cleanStep->setUserArguments("clean"); cleanSteps->insertStep(0, cleanStep); + + bool enableQmlDebugger + = Qt4BuildConfiguration::removeQMLInspectorFromArguments(&additionalArguments); if (!additionalArguments.isEmpty()) qmakeStep->setUserArguments(additionalArguments); + if (importing) + qmakeStep->setLinkQmlDebuggingLibrary(enableQmlDebugger); // set some options for qmake and make if (qmakeBuildConfiguration & QtSupport::BaseQtVersion::BuildAll) // debug_and_release => explicit targets @@ -1144,7 +1150,6 @@ BuildConfigurationInfo BuildConfigurationInfo::checkForBuild(const QString &dire specArgument = "-spec " + Utils::QtcProcess::quoteArg(parsedSpec); } Utils::QtcProcess::addArgs(&specArgument, additionalArguments); - Qt4BuildConfiguration::removeQMLInspectorFromArguments(&specArgument); BuildConfigurationInfo info = BuildConfigurationInfo(version, makefileBuildConfig.first, diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h index 9c06972cef..f9325e2230 100644 --- a/src/plugins/qt4projectmanager/qt4target.h +++ b/src/plugins/qt4projectmanager/qt4target.h @@ -82,7 +82,8 @@ public: QtSupport::BaseQtVersion *qtversion, QtSupport::BaseQtVersion::QmakeBuildConfigs qmakeBuildConfiguration, QString additionalArguments, - QString directory); + QString directory, + bool importing); virtual void createApplicationProFiles() = 0; diff --git a/src/plugins/remotelinux/qt4maemotargetfactory.cpp b/src/plugins/remotelinux/qt4maemotargetfactory.cpp index b02ec1892f..afacc185cf 100644 --- a/src/plugins/remotelinux/qt4maemotargetfactory.cpp +++ b/src/plugins/remotelinux/qt4maemotargetfactory.cpp @@ -214,7 +214,7 @@ ProjectExplorer::Target *Qt4MaemoTargetFactory::create(ProjectExplorer::Project foreach (const BuildConfigurationInfo &info, infos) target->addQt4BuildConfiguration(msgBuildConfigurationName(info), QString(), info.version, info.buildConfig, - info.additionalArguments, info.directory); + info.additionalArguments, info.directory, info.importing); foreach (const QString &deployConfigId, deployConfigIds) { target->addDeployConfiguration(target->createDeployConfiguration(deployConfigId)); -- 2.11.0