From 1f7960efe65c284cb954dc8b8e6b72f807b15a3c Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 1 Aug 2023 13:21:00 +0200 Subject: [PATCH] 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 Reviewed-by: Qt CI Bot Reviewed-by: --- .../cppeditor/compileroptionsbuilder.cpp | 19 +++++++++++++++++++ .../cppeditor/compileroptionsbuilder.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/plugins/cppeditor/compileroptionsbuilder.cpp b/src/plugins/cppeditor/compileroptionsbuilder.cpp index 8b7dd11b2d7..317cf7b25dd 100644 --- a/src/plugins/cppeditor/compileroptionsbuilder.cpp +++ b/src/plugins/cppeditor/compileroptionsbuilder.cpp @@ -64,6 +64,13 @@ static QString defineDirectiveToDefineOption(const Macro ¯o) 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) { diff --git a/src/plugins/cppeditor/compileroptionsbuilder.h b/src/plugins/cppeditor/compileroptionsbuilder.h index d47a7e87e3d..55d775120aa 100644 --- a/src/plugins/cppeditor/compileroptionsbuilder.h +++ b/src/plugins/cppeditor/compileroptionsbuilder.h @@ -87,6 +87,7 @@ private: QStringList wrappedMingwHeadersIncludePath() const; QByteArray msvcVersion() const; void addIncludeFile(const QString &file); + void removeUnsupportedCpuFlags(); private: const ProjectPart &m_projectPart;