CppEditor: Allow filtering of unsupported -mcpu flags

Also hardcode one that we use with Boot2Qt.

Fixes: QTCREATORBUG-29304
Change-Id: I3dd425cae5eb87ad5e14a607431d9f7225efc566
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Christian Kandeler
2023-08-01 13:21:00 +02:00
parent 8d66d8e510
commit 1f7960efe6
2 changed files with 20 additions and 0 deletions

View File

@@ -64,6 +64,13 @@ static QString defineDirectiveToDefineOption(const Macro &macro)
return QString::fromUtf8(option);
}
static QStringList cpuBlacklist()
{
QStringList blacklist = qtcEnvironmentVariable("QTC_CLANGD_CPU_BLACKLIST")
.split(':', Qt::SkipEmptyParts);
return blacklist << "cortex-a72.cortex-a53"; // See QTCREATORBUG-29304
}
QStringList XclangArgs(const QStringList &args)
{
QStringList options;
@@ -270,6 +277,7 @@ void CompilerOptionsBuilder::addPicIfCompilerFlagsContainsIt()
void CompilerOptionsBuilder::addCompilerFlags()
{
add(m_compilerFlags.flags);
removeUnsupportedCpuFlags();
}
void CompilerOptionsBuilder::addMsvcExceptions()
@@ -375,6 +383,17 @@ void CompilerOptionsBuilder::addIncludeFile(const QString &file)
}
}
void CompilerOptionsBuilder::removeUnsupportedCpuFlags()
{
const QStringList blacklist = cpuBlacklist();
for (auto it = m_options.begin(); it != m_options.end();) {
if (it->startsWith("-mcpu=") && blacklist.contains(it->mid(6)))
it = m_options.erase(it);
else
++it;
}
}
void CompilerOptionsBuilder::addIncludedFiles(const QStringList &files)
{
for (const QString &file : files) {

View File

@@ -87,6 +87,7 @@ private:
QStringList wrappedMingwHeadersIncludePath() const;
QByteArray msvcVersion() const;
void addIncludeFile(const QString &file);
void removeUnsupportedCpuFlags();
private:
const ProjectPart &m_projectPart;