summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/clangcodemodel/clangutils.cpp19
-rw-r--r--src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp18
-rw-r--r--src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h1
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp11
4 files changed, 22 insertions, 27 deletions
diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp
index 5ef7b1648d..c18f1900ba 100644
--- a/src/plugins/clangcodemodel/clangutils.cpp
+++ b/src/plugins/clangcodemodel/clangutils.cpp
@@ -38,7 +38,6 @@
#include <QDir>
#include <QFile>
-#include <QRegularExpression>
#include <QStringList>
using namespace ClangCodeModel;
@@ -118,18 +117,12 @@ private:
bool excludeHeaderPath(const QString &path) const override
{
- if (path.contains(QLatin1String("lib/gcc/i686-apple-darwin")))
- return true;
-
- // We already provide a custom clang include path matching the used libclang version,
- // so better ignore the clang include paths from the system as this might lead to an
- // unfavorable order with regard to include_next.
- static QRegularExpression clangIncludeDir(
- QLatin1String("\\A.*/lib/clang/\\d+\\.\\d+(\\.\\d+)?/include\\z"));
- if (clangIncludeDir.match(path).hasMatch())
- return true;
-
- return false;
+ if (m_projectPart.toolchainType == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) {
+ if (path.contains(QLatin1String("lib/gcc/i686-apple-darwin")))
+ return true;
+ }
+
+ return CompilerOptionsBuilder::excludeHeaderPath(path);
}
void addPredefinedMacrosAndHeaderPathsOptions()
diff --git a/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp b/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp
index 6546e9b950..372cf1af15 100644
--- a/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp
+++ b/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp
@@ -56,18 +56,12 @@ RefactoringCompilerOptionsBuilder::RefactoringCompilerOptionsBuilder(CppTools::P
bool RefactoringCompilerOptionsBuilder::excludeHeaderPath(const QString &path) const
{
- if (path.contains(QLatin1String("lib/gcc/i686-apple-darwin")))
- return true;
-
- // We already provide a custom clang include path matching the used libclang version,
- // so better ignore the clang include paths from the system as this might lead to an
- // unfavorable order with regard to include_next.
- static QRegularExpression clangIncludeDir(
- QLatin1String("\\A.*/lib/clang/\\d+\\.\\d+(\\.\\d+)?/include\\z"));
- if (clangIncludeDir.match(path).hasMatch())
- return true;
-
- return false;
+ if (m_projectPart.toolchainType == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) {
+ if (path.contains(QLatin1String("lib/gcc/i686-apple-darwin")))
+ return true;
+ }
+
+ return CompilerOptionsBuilder::excludeHeaderPath(path);
}
void RefactoringCompilerOptionsBuilder::addPredefinedMacrosAndHeaderPathsOptions()
diff --git a/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h b/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h
index f0f0dcc016..9a11573e8d 100644
--- a/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h
+++ b/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h
@@ -34,7 +34,6 @@
#include <coreplugin/icore.h>
#include <QDir>
-#include <QRegularExpression>
namespace ClangRefactoring {
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp
index a5bf1ad0b6..c529e96b45 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.cpp
+++ b/src/plugins/cpptools/compileroptionsbuilder.cpp
@@ -28,6 +28,7 @@
#include <projectexplorer/projectexplorerconstants.h>
#include <QDir>
+#include <QRegularExpression>
namespace CppTools {
@@ -393,7 +394,15 @@ bool CompilerOptionsBuilder::excludeDefineLine(const QByteArray &defineLine) con
bool CompilerOptionsBuilder::excludeHeaderPath(const QString &headerPath) const
{
- Q_UNUSED(headerPath);
+ // A clang tool chain might have another version and passing in the
+ // intrinsics path from that version will lead to errors (unknown
+ // intrinsics, unfavorable order with regard to include_next).
+ if (m_projectPart.toolchainType == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) {
+ static QRegularExpression clangIncludeDir(
+ QLatin1String("\\A.*/lib/clang/\\d+\\.\\d+(\\.\\d+)?/include\\z"));
+ return clangIncludeDir.match(headerPath).hasMatch();
+ }
+
return false;
}