Commit 94b86955 authored by David Kaspar's avatar David Kaspar

Qnx: Fixing debugging on simulator to use correct debug symbols

BlackBerryConfiguration class has been rewritten to generate kit,
qtversion, toolchain and debugger for each available
<QtVersion,Architecture> pair.

This allows to use proper debug symbols i.e. target/qnx6/x86 for Simulator.

All kits, qtversions, toolchains and debuggers are claimed to be
autodetected.

Note it still requires to have matching version of the BB NDK Target and
simulator/device OS Image for proper debugging.

Task-number: QTCREATORBUG-10271

Change-Id: I522b761e7ad5c24736a8d19e0a1c8ea8c9fe9664
Reviewed-by: Nicolas Arnaud-Cormos's avatarNicolas Arnaud-Cormos <nicolas@kdab.com>
Reviewed-by: default avatarDavid Kaspar <dkaspar@blackberry.com>
parent 2b532c73
This diff is collapsed.
/**************************************************************************
**
** Copyright (C) 2011 - 2013 Research In Motion
** Copyright (C) 2011,2012,2013 BlackBerry Limited. All rights reserved.
**
** Contact: Research In Motion (blackberry-qt@qnx.com)
** Contact: BlackBerry Limited (qt@blackberry.com)
** Contact: KDAB (info@kdab.com)
**
** This file is part of Qt Creator.
......@@ -37,17 +37,21 @@
#include <utils/environment.h>
#include <utils/fileutils.h>
#include <qtsupport/baseqtversion.h>
#include <projectexplorer/kit.h>
#include <projectexplorer/gcctoolchain.h>
#include <QObject>
#include <QCoreApplication>
namespace QtSupport {
class BaseQtVersion;
}
namespace Qnx {
namespace Internal {
class QnxAbstractQtVersion;
class BlackBerryConfiguration
{
Q_DECLARE_TR_FUNCTIONS(Qnx::Internal::BlackBerryConfiguration)
......@@ -78,17 +82,19 @@ private:
Utils::FileName m_qmake4BinaryFile;
Utils::FileName m_qmake5BinaryFile;
Utils::FileName m_gccCompiler;
Utils::FileName m_deviceDebuger;
Utils::FileName m_simulatorDebuger;
Utils::FileName m_deviceDebugger;
Utils::FileName m_simulatorDebugger;
Utils::FileName m_sysRoot;
QMultiMap<QString, QString> m_qnxEnv;
void setupConfigurationPerQtVersion(const Utils::FileName &qmakePath, ProjectExplorer::GccToolChain* tc);
QtSupport::BaseQtVersion* createQtVersion(const Utils::FileName &qmakePath);
ProjectExplorer::GccToolChain* createGccToolChain();
ProjectExplorer::Kit* createKit(QnxArchitecture arch, QtSupport::BaseQtVersion* qtVersion, ProjectExplorer::GccToolChain* tc);
void setSticky(ProjectExplorer::Kit* kit);
void createConfigurationPerQtVersion(
const Utils::FileName &qmakePath, Qnx::QnxArchitecture arch);
QnxAbstractQtVersion* createQtVersion(
const Utils::FileName &qmakePath, Qnx::QnxArchitecture arch);
ProjectExplorer::GccToolChain* createGccToolChain(QnxAbstractQtVersion *version);
ProjectExplorer::Kit* createKit(
QnxAbstractQtVersion* version, ProjectExplorer::ToolChain* toolChain);
QList<QtSupport::BaseQtVersion *> findRegisteredQtVersions() const;
};
} // namespace Internal
......
......@@ -257,11 +257,9 @@ void BlackBerryNDKSettingsWidget::updateUi(QTreeWidgetItem *item, BlackBerryConf
item->setFont(0, font);
item->setFont(1, font);
m_ui->activateNdkTargetButton->setEnabled((!m_activatedTargets.contains(config))
&& config->isAutoDetected());
m_ui->deactivateNdkTargetButton->setEnabled((m_activatedTargets.contains(config))
&& m_activatedTargets.size() > 1
&& config->isAutoDetected());
m_ui->activateNdkTargetButton->setEnabled(!m_activatedTargets.contains(config));
m_ui->deactivateNdkTargetButton->setEnabled(m_activatedTargets.contains(config)
&& m_activatedTargets.size() > 1);
m_ui->removeNdkButton->setEnabled(true);
}
......
......@@ -110,7 +110,18 @@ QMultiMap<QString, QString> BlackBerryQtVersion::environment() const
return QMultiMap<QString, QString>();
QString envFile = m_ndkEnvFile.isEmpty() ? QnxUtils::envFilePath(sdkPath()) : m_ndkEnvFile;
return QnxUtils::parseEnvironmentFile(envFile);
QMultiMap<QString,QString> result = QnxUtils::parseEnvironmentFile(envFile);
// BB NDK Host is having qmake executable which is using qt.conf file to specify
// base information. The qt.conf file is using 'CPUVARDIR' environment variable
// to provide correct information for both x86 and armle-v7 architectures.
// BlackBerryQtVersion represents as specific environment for each Qt4/Qt5
// and x86/armle-v7 combination. Therefore we need to explicitly specify
// CPUVARDIR to match expected architecture() otherwise qmake environment is
// always resolved to be for armle-v7 architecture only as it is specified
// BB NDK environment file.
result.replace(QLatin1String("CPUVARDIR"),
architecture() == X86 ? QLatin1String("x86") : QLatin1String("armle-v7"));
return result;
}
void BlackBerryQtVersion::setDefaultSdkPath()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment