forked from qt-creator/qt-creator
Some predefined macros for rvct.
This commit is contained in:
@@ -36,7 +36,8 @@ using namespace Qt4ProjectManager::Internal;
|
|||||||
|
|
||||||
RVCTToolChain::RVCTToolChain(S60Devices::Device device, ToolChain::ToolChainType type,
|
RVCTToolChain::RVCTToolChain(S60Devices::Device device, ToolChain::ToolChainType type,
|
||||||
const QString &makeTargetBase)
|
const QString &makeTargetBase)
|
||||||
: m_deviceId(device.id),
|
: m_versionUpToDate(false),
|
||||||
|
m_deviceId(device.id),
|
||||||
m_deviceName(device.name),
|
m_deviceName(device.name),
|
||||||
m_deviceRoot(device.epocRoot),
|
m_deviceRoot(device.epocRoot),
|
||||||
m_type(type),
|
m_type(type),
|
||||||
@@ -49,10 +50,57 @@ ToolChain::ToolChainType RVCTToolChain::type() const
|
|||||||
return m_type;
|
return m_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RVCTToolChain::updateVersion()
|
||||||
|
{
|
||||||
|
if (m_versionUpToDate)
|
||||||
|
return;
|
||||||
|
m_versionUpToDate = true;
|
||||||
|
m_major = 0;
|
||||||
|
m_minor = 0;
|
||||||
|
m_build = 0;
|
||||||
|
QProcess armcc;
|
||||||
|
ProjectExplorer::Environment env = ProjectExplorer::Environment::systemEnvironment();
|
||||||
|
addToEnvironment(env);
|
||||||
|
armcc.setEnvironment(env.toStringList());
|
||||||
|
armcc.start("armcc", QStringList());
|
||||||
|
armcc.closeWriteChannel();
|
||||||
|
armcc.waitForFinished();
|
||||||
|
QString versionLine = armcc.readAllStandardOutput();
|
||||||
|
versionLine += armcc.readAllStandardError();
|
||||||
|
QRegExp versionRegExp("RVCT(\\d*)\\.(\\d*).*\\[Build.(\\d*)\\]",
|
||||||
|
Qt::CaseInsensitive);
|
||||||
|
if (versionRegExp.indexIn(versionLine) != -1) {
|
||||||
|
m_major = versionRegExp.cap(1).toInt();
|
||||||
|
m_minor = versionRegExp.cap(2).toInt();
|
||||||
|
m_build = versionRegExp.cap(3).toInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QByteArray RVCTToolChain::predefinedMacros()
|
QByteArray RVCTToolChain::predefinedMacros()
|
||||||
{
|
{
|
||||||
//TODO
|
// see http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205f/Babbacdb.html
|
||||||
return QByteArray();
|
updateVersion();
|
||||||
|
QByteArray ba = QString::fromLocal8Bit(
|
||||||
|
"#define __arm__arm__\n"
|
||||||
|
"#define __ARMCC_VERSION %1%2%3%4\n"
|
||||||
|
"#define __ARRAY_OPERATORS\n"
|
||||||
|
"#define _BOOL\n"
|
||||||
|
"#define c_plusplus\n"
|
||||||
|
"#define __cplusplus\n"
|
||||||
|
"#define __CC_ARM\n"
|
||||||
|
"#define __EDG__\n"
|
||||||
|
"#define __STDC__\n"
|
||||||
|
"#define __STDC_VERSION__\n"
|
||||||
|
"#define __TARGET_FEATURE_DOUBLEWORD\n"
|
||||||
|
"#define __TARGET_FEATURE_DSPMUL\n"
|
||||||
|
"#define __TARGET_FEATURE_HALFWORD\n"
|
||||||
|
"#define __TARGET_FEATURE_THUMB\n"
|
||||||
|
"#define _WCHAR_T\n"
|
||||||
|
).arg(m_major, 1, 10, QLatin1Char('0'))
|
||||||
|
.arg(m_minor, 1, 10, QLatin1Char('0'))
|
||||||
|
.arg("0")
|
||||||
|
.arg(m_build, 3, 10, QLatin1Char('0')).toLocal8Bit();
|
||||||
|
return ba;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<HeaderPath> RVCTToolChain::systemHeaderPaths()
|
QList<HeaderPath> RVCTToolChain::systemHeaderPaths()
|
||||||
|
@@ -55,6 +55,12 @@ protected:
|
|||||||
bool equals(ToolChain *other) const;
|
bool equals(ToolChain *other) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void updateVersion();
|
||||||
|
|
||||||
|
bool m_versionUpToDate;
|
||||||
|
int m_major;
|
||||||
|
int m_minor;
|
||||||
|
int m_build;
|
||||||
QString m_deviceId;
|
QString m_deviceId;
|
||||||
QString m_deviceName;
|
QString m_deviceName;
|
||||||
QString m_deviceRoot;
|
QString m_deviceRoot;
|
||||||
|
Reference in New Issue
Block a user