From 84ce2e5b706f82df4070c197f0a13a86c1f74f05 Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Mon, 16 Mar 2009 18:13:45 +0100
Subject: [PATCH] Fixes:    Add a makeCommand() virtual function to ToolChain

Details:  Move that code from qt4project to a common class.
---
 src/plugins/projectexplorer/toolchain.cpp         | 15 +++++++++++++++
 src/plugins/projectexplorer/toolchain.h           |  5 +++++
 .../qt4projectmanager/gdbmacrosbuildstep.cpp      |  4 ++--
 src/plugins/qt4projectmanager/makestep.cpp        |  5 ++---
 src/plugins/qt4projectmanager/qt4project.cpp      |  7 ++++++-
 src/plugins/qt4projectmanager/qt4project.h        |  2 ++
 .../qt4projectmanager/qtversionmanager.cpp        | 15 ---------------
 src/plugins/qt4projectmanager/qtversionmanager.h  |  1 -
 8 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp
index 0d3a2d850d9..7c080aad8e2 100644
--- a/src/plugins/projectexplorer/toolchain.cpp
+++ b/src/plugins/projectexplorer/toolchain.cpp
@@ -154,6 +154,11 @@ void GccToolChain::addToEnvironment(ProjectExplorer::Environment &env)
     Q_UNUSED(env)
 }
 
+QString GccToolChain::makeCommand() const
+{
+    return "make";
+}
+
 bool GccToolChain::equals(ToolChain *other) const
 {
     return (m_gcc == static_cast<GccToolChain *>(other)->m_gcc);
@@ -186,6 +191,11 @@ void MinGWToolChain::addToEnvironment(ProjectExplorer::Environment &env)
 //        qDebug()<<"Adding "<<binDir<<" to the PATH";
 }
 
+QString MinGWToolChain::makeCommand() const
+{
+    return "mingw32-make.exe";
+}
+
 
 MSVCToolChain::MSVCToolChain(const QString &name)
     : m_name(name), m_valuesSet(false)
@@ -293,6 +303,11 @@ void MSVCToolChain::addToEnvironment(ProjectExplorer::Environment &env)
 
 }
 
+QString MSVCToolChain::makeCommand() const
+{
+    return "nmake.exe";
+}
+
 WinCEToolChain::WinCEToolChain(const QString &name, const QString &platform)
     : MSVCToolChain(name), m_platform(platform)
 {
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index aeaa45fe7df..a977c125bf3 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -52,11 +52,13 @@ public:
     virtual QList<HeaderPath> systemHeaderPaths() = 0;
     virtual void addToEnvironment(ProjectExplorer::Environment &env) = 0;
     virtual ToolChainType type() const = 0;
+    virtual QString makeCommand() const = 0;
 
     ToolChain();
     virtual ~ToolChain();
     
     static bool equals(ToolChain *, ToolChain *);
+    // Factory methods
     static ToolChain *createGccToolChain(const QString &gcc);
     static ToolChain *createMinGWToolChain(const QString &gcc, const QString &mingwPath);
     static ToolChain *createMSVCToolChain(const QString &name);
@@ -77,6 +79,7 @@ public:
     virtual QList<HeaderPath> systemHeaderPaths();
     virtual void addToEnvironment(ProjectExplorer::Environment &env);
     virtual ToolChainType type() const;
+    virtual QString makeCommand() const;
 
 protected:
     virtual bool equals(ToolChain *other) const;
@@ -93,6 +96,7 @@ public:
     MinGWToolChain(const QString &gcc, const QString &mingwPath);
     virtual void addToEnvironment(ProjectExplorer::Environment &env);
     virtual ToolChainType type() const;
+    virtual QString makeCommand() const;
 protected:
     virtual bool equals(ToolChain *other) const;
 private:
@@ -108,6 +112,7 @@ public:
     virtual QList<HeaderPath> systemHeaderPaths();
     virtual void addToEnvironment(ProjectExplorer::Environment &env);
     virtual ToolChainType type() const;
+    virtual QString makeCommand() const;
 protected:
     virtual bool equals(ToolChain *other) const;
     QString m_name;
diff --git a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp
index 1b9fcb29e77..4fe0dc00045 100644
--- a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp
+++ b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp
@@ -127,7 +127,7 @@ void GdbMacrosBuildStep::run(QFutureInterface<bool> & fi)
         qmake.start(m_qmake, QStringList()<<"-spec"<<mkspec<<configarguments<<"gdbmacros.pro");
         qmake.waitForFinished();
 
-        QString makeCmd = qt4Project->qtVersion(m_buildConfiguration)->makeCommand();
+        QString makeCmd = qt4Project->makeCommand(m_buildConfiguration);
         if (!value(m_buildConfiguration, "makeCmd").toString().isEmpty())
             makeCmd = value(m_buildConfiguration, "makeCmd").toString();
         if (!QFileInfo(makeCmd).isAbsolute()) {
@@ -147,7 +147,7 @@ void GdbMacrosBuildStep::run(QFutureInterface<bool> & fi)
         QProcess make;
         make.setEnvironment(qt4Project->environment(m_buildConfiguration).toStringList());
         make.setWorkingDirectory(destDir);
-        make.start(qt4Project->qtVersion(m_buildConfiguration)->makeCommand(), QStringList()<<"distclean");
+        make.start(qt4Project->makeCommand(m_buildConfiguration), QStringList()<<"distclean");
         make.waitForFinished();
 
         QStringList directories;
diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index 399fd5f6ed4..f7d9d3a1514 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -95,8 +95,7 @@ bool MakeStep::init(const QString &name)
         workingDirectory = QFileInfo(project()->file()->fileName()).absolutePath();
     setWorkingDirectory(name, workingDirectory);
 
-    //NBS only dependency on Qt4Project, we probably simply need a MakeProject from which Qt4Project derives
-    QString makeCmd = qobject_cast<Qt4Project *>(project())->qtVersion(name)->makeCommand();
+    QString makeCmd = qobject_cast<Qt4Project *>(project())->makeCommand(name);
     if (!value(name, "makeCmd").toString().isEmpty())
         makeCmd = value(name, "makeCmd").toString();
     if (!QFileInfo(makeCmd).isAbsolute()) {
@@ -293,7 +292,7 @@ void MakeStepConfigWidget::init(const QString &buildConfiguration)
     if (!showPage0) {
         Qt4Project *pro = qobject_cast<Qt4Project *>(m_makeStep->project());
         Q_ASSERT(pro);
-        m_ui.makeLabel->setText(tr("Override %1:").arg(pro->qtVersion(buildConfiguration)->makeCommand()));
+        m_ui.makeLabel->setText(tr("Override %1:").arg(pro->makeCommand(buildConfiguration)));
 
         const QString &makeCmd = m_makeStep->value(buildConfiguration, "makeCmd").toString();
         m_ui.makeLineEdit->setText(makeCmd);
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 3018da15cce..a95c1284161 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -401,6 +401,11 @@ void Qt4Project::scheduleUpdateCodeModel()
     m_updateCodeModelTimer.start();
 }
 
+QString Qt4Project::makeCommand(const QString &buildConfiguration) const
+{
+    return toolChain(buildConfiguration)->makeCommand();
+}
+
 ProjectExplorer::ToolChain *Qt4Project::toolChain(const QString &buildConfiguration) const
 {
     if (debug)
@@ -416,7 +421,7 @@ ProjectExplorer::ToolChain *Qt4Project::toolChain(const QString &buildConfigurat
         qtVersion(activeBuildConfiguration())->addToEnvironment(env);
         qmake_cxx = env.searchInPath(qmake_cxx);
         m_test = ToolChain::createMinGWToolChain(qmake_cxx, version->mingwDirectory());
-        qDebug()<<"Mingw ToolChain";
+        //qDebug()<<"Mingw ToolChain";
     } else if(t == ToolChain::MSVC) {
         m_test = ToolChain::createMSVCToolChain(version->msvcVersion());
         //qDebug()<<"MSVC ToolChain ("<<version->msvcVersion()<<")";
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index aaf3ef0209c..2b032c73c75 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -181,6 +181,8 @@ public:
     // called by qt4ProjectNode to add ui_*.h files to the codemodel
     void addUiFilesToCodeModel(const QStringList &files);
 
+    QString makeCommand(const QString &buildConfiguration) const;
+
 public slots:
     void update();
     void proFileParseError(const QString &errorMessage);
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 76d189337a4..d974138ff4b 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -1143,21 +1143,6 @@ void QtVersion::updateMkSpec() const
 //    qDebug()<<"mkspec for "<<m_path<<" is "<<mkspec;
 }
 
-QString QtVersion::makeCommand() const
-{
-#ifdef Q_OS_WIN
-    const QString &spec = mkspec();
-    if (spec.contains("win32-msvc") || spec.contains(QLatin1String("win32-icc")))
-        return "nmake.exe";
-    else if (spec.startsWith("wince"))
-        return "nmake.exe";
-    else
-        return "mingw32-make.exe";
-#else
-    return "make";
-#endif
-}
-
 QString QtVersion::qmakeCommand() const
 {
     // We can't use versionInfo QT_INSTALL_BINS here
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index 8d593a4b03b..e56be598eff 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -64,7 +64,6 @@ public:
     QString sourcePath() const;
     QString mkspec() const;
     QString mkspecPath() const;
-    QString makeCommand() const;
     QString qmakeCommand() const;
     QString qtVersionString() const;
     // Returns the PREFIX, BINPREFIX, DOCPREFIX and similar information
-- 
GitLab