diff --git a/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt b/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt index 5dc2e55543f4064ec4723f0d8320578bd2e0636f..d62aacace2dfe49da62c05681bdd699e635366c0 100644 --- a/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt +++ b/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt @@ -20,6 +20,7 @@ tool chain? * seems that the make for building for device doesn't return useful exit code, so a run is started even if the build has errors + * gcce error parser (gcc seems not to be enough sometimes, and the make tool does not return valid exit codes * Run Configurations * handling of active run config getting disabled not optimal yet @@ -32,8 +33,8 @@ * time stamp of copied sisx is ridiculous * don't copy the sisx all the time * don't hardcode copy destination - -* Add compile output parser winscw at least + * be able to cancel the copy & install process + * isRunning is wrong * WINSCW tool chain: * predefined macros diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index 2396789d8242c1affa3e99a2996f7d83cc7994df..9dc82b3163df326eff6491c9f6b966db1600a02f 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -495,10 +495,8 @@ void S60DeviceRunControl::start() emit addToOutputWindow(this, tr("Creating %1.sisx ...").arg(QDir::toNativeSeparators(m_baseFileName))); Q_ASSERT(project); - m_toolsDirectory = S60Manager::instance()->devices()->deviceForId( - S60Manager::instance()->deviceIdFromDetectionSource( - project->qtVersion(project->activeBuildConfiguration()) - ->autodetectionSource())).epocRoot + m_toolsDirectory = S60Manager::instance()->deviceForQtVersion( + project->qtVersion(project->activeBuildConfiguration())).toolsRoot + "/epoc32/tools"; QString makesisTool = m_toolsDirectory + "/makesis.exe"; QString packageFile = QFileInfo(m_baseFileName + ".pkg").fileName(); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp index ac618ef190c9bc581a496ea796d518184dd7319d..28f803e562ff43598cfebb985d6827798a8193a6 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp @@ -143,8 +143,7 @@ void S60EmulatorRunConfiguration::updateTarget() return; } - QString baseDir = S60Manager::instance()->devices()->deviceForId( - S60Manager::instance()->deviceIdFromDetectionSource(qtVersion->autodetectionSource())).epocRoot; + QString baseDir = S60Manager::instance()->deviceForQtVersion(qtVersion).epocRoot; QString qmakeBuildConfig = "urel"; if (projectBuildConfiguration & QtVersion::DebugBuild) qmakeBuildConfig = "udeb"; diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp index 18cc1a4a0dcd7717f6b576b10056b09ccd689988..614a86c4215a3d02753c95a3e797f4f282517012 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp @@ -148,12 +148,32 @@ void S60Manager::updateQtVersions() ProjectExplorer::ToolChain *S60Manager::createWINSCWToolChain(const Qt4ProjectManager::QtVersion *version) const { - QString id = version->autodetectionSource().mid(QString(S60_AUTODETECTION_SOURCE).length()+1); - return new WINSCWToolChain(m_devices->deviceForId(id), version->mwcDirectory()); + return new WINSCWToolChain(deviceForQtVersion(version), version->mwcDirectory()); } ProjectExplorer::ToolChain *S60Manager::createGCCEToolChain(const Qt4ProjectManager::QtVersion *version) const { - QString id = version->autodetectionSource().mid(QString(S60_AUTODETECTION_SOURCE).length()+1); - return new GCCEToolChain(m_devices->deviceForId(id)); + return new GCCEToolChain(deviceForQtVersion(version)); +} + +S60Devices::Device S60Manager::deviceForQtVersion(const Qt4ProjectManager::QtVersion *version) const +{ + S60Devices::Device device; + QString deviceId; + if (version->isAutodetected()) + deviceId = deviceIdFromDetectionSource(version->autodetectionSource()); + if (deviceId.isEmpty()) { // it's not an s60 autodetected version + // have a look if we find the device root anyhow + if (QFile::exists(QString::fromLatin1("%1/epoc32").arg(version->path()))) { + device.epocRoot = version->path(); + device.toolsRoot = device.epocRoot; + device.qt = device.epocRoot; + device.isDefault = false; + device.name = QString::fromLatin1("SDK"); + device.id = QString::fromLatin1("SDK"); + } + } else { + device = m_devices->deviceForId(deviceId); + } + return device; } diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.h b/src/plugins/qt4projectmanager/qt-s60/s60manager.h index 23ce072c07d45be5354a81a3899b5524814fe985..3704771bcd9a3ea1e421c76bb81105f8d8fcc77c 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60manager.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.h @@ -32,6 +32,7 @@ #include "qtversionmanager.h" #include "serialdevicelister.h" +#include "s60devices.h" #include <extensionsystem/iplugin.h> #include <projectexplorer/toolchain.h> @@ -41,7 +42,6 @@ namespace Qt4ProjectManager { namespace Internal { -class S60Devices; class S60DevicesPreferencePane; class S60EmulatorRunConfigurationFactory; class S60EmulatorRunConfigurationRunner; @@ -60,6 +60,7 @@ public: ProjectExplorer::ToolChain *createGCCEToolChain(const Qt4ProjectManager::QtVersion *version) const; S60Devices *devices() const { return m_devices; } + S60Devices::Device deviceForQtVersion(const Qt4ProjectManager::QtVersion *version) const; QString deviceIdFromDetectionSource(const QString &autoDetectionSource) const; SerialDeviceLister *serialDeviceLister() const { return m_serialDeviceLister; }