From 6156c59c626ba9b3ba5a14333e6ca246f514e0a5 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 11 Oct 2019 09:29:50 +0200 Subject: [PATCH] Clang: Put clang's resource dir after /usr/local/include ...also on Linux. That's what clang invoked from the command line does. Change-Id: I59c48d11fab3b944bb42ca7bb4cd9093a735df60 Reviewed-by: Cristian Adam Reviewed-by: Nikolai Kosjar --- src/plugins/cpptools/headerpathfilter.cpp | 16 +++++----------- .../unittest/compileroptionsbuilder-test.cpp | 4 ++-- tests/unit/unittest/headerpathfilter-test.cpp | 2 +- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/plugins/cpptools/headerpathfilter.cpp b/src/plugins/cpptools/headerpathfilter.cpp index da200d0321b..2fa71b58b27 100644 --- a/src/plugins/cpptools/headerpathfilter.cpp +++ b/src/plugins/cpptools/headerpathfilter.cpp @@ -120,24 +120,19 @@ QString clangIncludeDirectory(const QString &clangVersion, const QString &clangR #endif } -HeaderPaths::iterator resourceIterator(HeaderPaths &headerPaths, bool isMacOs) +HeaderPaths::iterator resourceIterator(HeaderPaths &headerPaths) { // include/c++, include/g++, libc++\include and libc++abi\include static const QString cppIncludes = R"((.*/include/.*(g\+\+|c\+\+).*))" R"(|(.*libc\+\+/include))" - R"(|(.*libc\+\+abi/include))"; + R"(|(.*libc\+\+abi/include))" + R"(|(/usr/local/include))"; static const QRegularExpression includeRegExp("\\A(" + cppIncludes + ")\\z"); - // The same as includeRegExp but also matches /usr/local/include - static const QRegularExpression includeRegExpMac("\\A(" + cppIncludes - + R"(|(/usr/local/include))" + ")\\z"); - - const QRegularExpression &includePathRegEx = isMacOs ? includeRegExpMac : includeRegExp; - return std::stable_partition(headerPaths.begin(), headerPaths.end(), [&](const HeaderPath &headerPath) { - return includePathRegEx.match(headerPath.path).hasMatch(); + return includeRegExp.match(headerPath.path).hasMatch(); }); } @@ -165,8 +160,7 @@ void HeaderPathFilter::tweakHeaderPaths() removeClangSystemHeaderPaths(builtInHeaderPaths); removeGccInternalIncludePaths(); - auto split = resourceIterator(builtInHeaderPaths, - projectPart.toolChainTargetTriple.contains("darwin")); + auto split = resourceIterator(builtInHeaderPaths); if (!clangVersion.isEmpty()) { const QString clangIncludePath = clangIncludeDirectory(clangVersion, clangResourceDirectory); diff --git a/tests/unit/unittest/compileroptionsbuilder-test.cpp b/tests/unit/unittest/compileroptionsbuilder-test.cpp index 9d026e25008..d5692a91247 100644 --- a/tests/unit/unittest/compileroptionsbuilder-test.cpp +++ b/tests/unit/unittest/compileroptionsbuilder-test.cpp @@ -351,10 +351,10 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderLinux) QDir::toNativeSeparators( "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/x86_64-linux-gnu/c++/4.8"), "-isystem", - QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""), - "-isystem", QDir::toNativeSeparators("/usr/local/include"), "-isystem", + QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""), + "-isystem", QDir::toNativeSeparators("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"), "-isystem", QDir::toNativeSeparators("/usr/include/x86_64-linux-gnu"), diff --git a/tests/unit/unittest/headerpathfilter-test.cpp b/tests/unit/unittest/headerpathfilter-test.cpp index dac2974ecf8..b5399a65fd9 100644 --- a/tests/unit/unittest/headerpathfilter-test.cpp +++ b/tests/unit/unittest/headerpathfilter-test.cpp @@ -241,8 +241,8 @@ TEST_F(HeaderPathFilter, ClangHeadersAndCppIncludesPathsOrderLinux) "c++/4.8/backward"), HasBuiltIn("/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/" "x86_64-linux-gnu/c++/4.8"), - HasBuiltIn(CLANG_RESOURCE_DIR), HasBuiltIn("/usr/local/include"), + HasBuiltIn(CLANG_RESOURCE_DIR), HasBuiltIn("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"), HasBuiltIn("/usr/include/x86_64-linux-gnu"), HasBuiltIn("/usr/include"),