diff options
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; } |