From caa8bd454eeffa629d47238087f85d06e0f3b359 Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Fri, 9 Sep 2011 09:54:37 +0000 Subject: [PATCH] qmake: Warn when using a mkspec that might not work with the tool chain Warn when using a mkspec that might or might not work with the selected tool chain. Task-number: QTCREATORBUG-5854 Change-Id: Ifead5108ccd109f66707ad7aa371daead8cb57e7 Reviewed-on: http://codereview.qt-project.org/4522 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Daniel Teske <daniel.teske@nokia.com> --- src/plugins/projectexplorer/buildstep.h | 3 ++ .../projectexplorer/buildstepspage.cpp | 15 ++++++++ src/plugins/projectexplorer/buildstepspage.h | 1 + src/plugins/qt4projectmanager/qmakestep.cpp | 37 ++++++++++++++++--- src/plugins/qt4projectmanager/qmakestep.h | 6 +++ 5 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index 0da0279603c..a9b98a7ee26 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -136,9 +136,12 @@ public: : QWidget() {} virtual QString summaryText() const = 0; + virtual QString additionalSummaryText() const { return QString(); } virtual QString displayName() const = 0; + signals: void updateSummary(); + void updateAdditionalSummary(); }; } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index 52e742fcd64..27f70167613 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -140,6 +140,19 @@ void BuildStepListWidget::updateSummary() } } +void BuildStepListWidget::updateAdditionalSummary() +{ + BuildStepConfigWidget *widget = qobject_cast<BuildStepConfigWidget *>(sender()); + if (widget) { + foreach (const BuildStepsWidgetData *s, m_buildStepsData) { + if (s->widget == widget) { + s->detailsWidget->setAdditionalSummaryText(widget->additionalSummaryText()); + break; + } + } + } +} + void BuildStepListWidget::init(BuildStepList *bsl) { Q_ASSERT(bsl); @@ -222,6 +235,8 @@ void BuildStepListWidget::addBuildStepWidget(int pos, BuildStep *step) connect(s->widget, SIGNAL(updateSummary()), this, SLOT(updateSummary())); + connect(s->widget, SIGNAL(updateAdditionalSummary()), + this, SLOT(updateAdditionalSummary())); connect(s->upButton, SIGNAL(clicked()), m_upMapper, SLOT(map())); diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h index e770fb8c842..56ddb6874be 100644 --- a/src/plugins/projectexplorer/buildstepspage.h +++ b/src/plugins/projectexplorer/buildstepspage.h @@ -85,6 +85,7 @@ private slots: void triggerAddBuildStep(); void addBuildStep(int pos); void updateSummary(); + void updateAdditionalSummary(); void triggerStepMoveUp(int pos); void stepMoved(int from, int to); void triggerStepMoveDown(int pos); diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index abecb0d5cb8..f1f8ed0fe88 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -537,6 +537,11 @@ QString QMakeStepConfigWidget::summaryText() const return m_summaryText; } +QString QMakeStepConfigWidget::additionalSummaryText() const +{ + return m_additionalSummaryText; +} + QString QMakeStepConfigWidget::displayName() const { return m_step->displayName(); @@ -664,18 +669,24 @@ void QMakeStepConfigWidget::updateSummaryLabel() Qt4BuildConfiguration *qt4bc = m_step->qt4BuildConfiguration(); QtSupport::BaseQtVersion *qtVersion = qt4bc->qtVersion(); if (!qtVersion) { - m_summaryText = tr("<b>qmake:</b> No Qt version set. Cannot run qmake."); - emit updateSummary(); + setSummaryText(tr("<b>qmake:</b> No Qt version set. Cannot run qmake.")); return; } - // We don't want the full path to the .pro file QString args = m_step->allArguments(true); // And we only use the .pro filename not the full path QString program = QFileInfo(qtVersion->qmakeCommand()).fileName(); - m_summaryText = tr("<b>qmake:</b> %1 %2").arg(program, args); - emit updateSummary(); + setSummaryText(tr("<b>qmake:</b> %1 %2").arg(program, args)); + ToolChain *tc = qt4bc->toolChain(); + if (!tc) + return; + + QString tcSpec = tc->mkspec(); + if (!tcSpec.isEmpty() && tcSpec != m_step->mkspec()) + setAdditionalSummaryText(tr("<b>Warning:</b> The tool chain suggested \"%1\" as mkspec.").arg(tcSpec)); + else + setAdditionalSummaryText(QString()); } void QMakeStepConfigWidget::updateQmlDebuggingOption() @@ -723,6 +734,22 @@ void QMakeStepConfigWidget::recompileMessageBoxFinished(int button) } } +void QMakeStepConfigWidget::setSummaryText(const QString &text) +{ + if (text == m_summaryText) + return; + m_summaryText = text; + emit updateSummary(); +} + +void QMakeStepConfigWidget::setAdditionalSummaryText(const QString &text) +{ + if (text == m_additionalSummaryText) + return; + m_additionalSummaryText = text; + emit updateAdditionalSummary(); +} + //// // QMakeStepFactory //// diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h index 2a23acbb2e7..0a779fb3d09 100644 --- a/src/plugins/qt4projectmanager/qmakestep.h +++ b/src/plugins/qt4projectmanager/qmakestep.h @@ -143,6 +143,7 @@ public: QMakeStepConfigWidget(QMakeStep *step); ~QMakeStepConfigWidget(); QString summaryText() const; + QString additionalSummaryText() const; QString displayName() const; private slots: // slots for handling buildconfiguration/step signals @@ -167,9 +168,14 @@ private: void updateSummaryLabel(); void updateQmlDebuggingOption(); void updateEffectiveQMakeCall(); + + void setSummaryText(const QString &); + void setAdditionalSummaryText(const QString &); + Ui::QMakeStep *m_ui; QMakeStep *m_step; QString m_summaryText; + QString m_additionalSummaryText; bool m_ignoreChange; }; -- GitLab