forked from qt-creator/qt-creator
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 <cristian.adam@qt.io> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
@@ -120,24 +120,19 @@ QString clangIncludeDirectory(const QString &clangVersion, const QString &clangR
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
HeaderPaths::iterator resourceIterator(HeaderPaths &headerPaths, bool isMacOs)
|
HeaderPaths::iterator resourceIterator(HeaderPaths &headerPaths)
|
||||||
{
|
{
|
||||||
// include/c++, include/g++, libc++\include and libc++abi\include
|
// include/c++, include/g++, libc++\include and libc++abi\include
|
||||||
static const QString cppIncludes = R"((.*/include/.*(g\+\+|c\+\+).*))"
|
static const QString cppIncludes = R"((.*/include/.*(g\+\+|c\+\+).*))"
|
||||||
R"(|(.*libc\+\+/include))"
|
R"(|(.*libc\+\+/include))"
|
||||||
R"(|(.*libc\+\+abi/include))";
|
R"(|(.*libc\+\+abi/include))"
|
||||||
|
R"(|(/usr/local/include))";
|
||||||
static const QRegularExpression includeRegExp("\\A(" + cppIncludes + ")\\z");
|
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(),
|
return std::stable_partition(headerPaths.begin(),
|
||||||
headerPaths.end(),
|
headerPaths.end(),
|
||||||
[&](const HeaderPath &headerPath) {
|
[&](const HeaderPath &headerPath) {
|
||||||
return includePathRegEx.match(headerPath.path).hasMatch();
|
return includeRegExp.match(headerPath.path).hasMatch();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,8 +160,7 @@ void HeaderPathFilter::tweakHeaderPaths()
|
|||||||
removeClangSystemHeaderPaths(builtInHeaderPaths);
|
removeClangSystemHeaderPaths(builtInHeaderPaths);
|
||||||
removeGccInternalIncludePaths();
|
removeGccInternalIncludePaths();
|
||||||
|
|
||||||
auto split = resourceIterator(builtInHeaderPaths,
|
auto split = resourceIterator(builtInHeaderPaths);
|
||||||
projectPart.toolChainTargetTriple.contains("darwin"));
|
|
||||||
|
|
||||||
if (!clangVersion.isEmpty()) {
|
if (!clangVersion.isEmpty()) {
|
||||||
const QString clangIncludePath = clangIncludeDirectory(clangVersion, clangResourceDirectory);
|
const QString clangIncludePath = clangIncludeDirectory(clangVersion, clangResourceDirectory);
|
||||||
|
@@ -351,10 +351,10 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderLinux)
|
|||||||
QDir::toNativeSeparators(
|
QDir::toNativeSeparators(
|
||||||
"/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/x86_64-linux-gnu/c++/4.8"),
|
"/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/x86_64-linux-gnu/c++/4.8"),
|
||||||
"-isystem",
|
"-isystem",
|
||||||
QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
|
||||||
"-isystem",
|
|
||||||
QDir::toNativeSeparators("/usr/local/include"),
|
QDir::toNativeSeparators("/usr/local/include"),
|
||||||
"-isystem",
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
||||||
|
"-isystem",
|
||||||
QDir::toNativeSeparators("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"),
|
QDir::toNativeSeparators("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"),
|
||||||
"-isystem",
|
"-isystem",
|
||||||
QDir::toNativeSeparators("/usr/include/x86_64-linux-gnu"),
|
QDir::toNativeSeparators("/usr/include/x86_64-linux-gnu"),
|
||||||
|
@@ -241,8 +241,8 @@ TEST_F(HeaderPathFilter, ClangHeadersAndCppIncludesPathsOrderLinux)
|
|||||||
"c++/4.8/backward"),
|
"c++/4.8/backward"),
|
||||||
HasBuiltIn("/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/"
|
HasBuiltIn("/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/"
|
||||||
"x86_64-linux-gnu/c++/4.8"),
|
"x86_64-linux-gnu/c++/4.8"),
|
||||||
HasBuiltIn(CLANG_RESOURCE_DIR),
|
|
||||||
HasBuiltIn("/usr/local/include"),
|
HasBuiltIn("/usr/local/include"),
|
||||||
|
HasBuiltIn(CLANG_RESOURCE_DIR),
|
||||||
HasBuiltIn("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"),
|
HasBuiltIn("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"),
|
||||||
HasBuiltIn("/usr/include/x86_64-linux-gnu"),
|
HasBuiltIn("/usr/include/x86_64-linux-gnu"),
|
||||||
HasBuiltIn("/usr/include"),
|
HasBuiltIn("/usr/include"),
|
||||||
|
Reference in New Issue
Block a user