diff --git a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp index 274e91471efd1f54d3c0432530f70ba80e64969f..39dfd43a2b58f519cd7608f2d8cdf655a3c496d9 100644 --- a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp @@ -33,6 +33,7 @@ #include <utils/qtcassert.h> #include <QtCore/QDir> +#include <QtCore/QProcess> #include <QtCore/QtDebug> enum { debug = 0 }; @@ -138,6 +139,9 @@ void GCCEToolChain::addToEnvironment(ProjectExplorer::Environment &env) default: break; } + QString version = gcceVersion(); + version = version.remove(QLatin1Char('.')); + env.set(QString::fromLatin1("SBS_GCCE") + version + QLatin1String("BIN"), QDir::toNativeSeparators(m_gcceBinPath)); } QString GCCEToolChain::makeCommand() const @@ -154,3 +158,34 @@ bool GCCEToolChain::equals(ToolChain *otherIn) const && m_gcceBinPath == other->m_gcceBinPath && gcc() == other->gcc(); } + +QString GCCEToolChain::gcceVersion() const +{ + if (m_gcceVersion.isEmpty()) { + QString command = gcceCommand(m_gcceBinPath); + if (command.isEmpty()) + return QString(); + QProcess gxx; + QStringList arguments; + arguments << QLatin1String("--version"); + ProjectExplorer::Environment env = ProjectExplorer::Environment::systemEnvironment(); + env.set(QLatin1String("LC_ALL"), QLatin1String("C")); //override current locale settings + gxx.setEnvironment(env.toStringList()); + gxx.setReadChannelMode(QProcess::MergedChannels); + gxx.start(command, arguments); + gxx.closeWriteChannel(); + gxx.waitForFinished(); + + QString line; + if (gxx.canReadLine()) { + line = gxx.readLine(); + qDebug() << "GCCVersion:" << line; + QRegExp version("\\s((\\d+)\\.(\\d+)\\.(\\d+))\\s"); + if (line.indexOf(version) >= -1) { + qDebug() << " MATCHED!"; + m_gcceVersion = version.cap(1); + } + } + } + return m_gcceVersion; +} diff --git a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.h b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.h index 791e384c51f0ee791a967f547c93ae0f1c5238df..76694383e3491d9dc833cf8b6d3d5aae267c7e40 100644 --- a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.h +++ b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.h @@ -58,9 +58,11 @@ protected: virtual bool equals(ToolChain *other) const; private: + QString gcceVersion() const; const S60ToolChainMixin m_mixin; const ProjectExplorer::ToolChain::ToolChainType m_type; const QString m_gcceBinPath; + mutable QString m_gcceVersion; }; } // namespace Internal