forked from qt-creator/qt-creator
CppEditor: Make CompilerOptionsBuilder take the actual clang include dir
This is more clear than passing in version and fallback path and calculating the real path from them somewhere down the line. No functional changes for now. Change-Id: Iae2fc8015c778d787ed6e0ce898f41a7a05b2607 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -375,10 +375,11 @@ CompilerOptionsBuilder clangOptionsBuilder(const ProjectPart &projectPart,
|
|||||||
const auto useBuildSystemWarnings = warningsConfig.useBuildSystemWarnings()
|
const auto useBuildSystemWarnings = warningsConfig.useBuildSystemWarnings()
|
||||||
? UseBuildSystemWarnings::Yes
|
? UseBuildSystemWarnings::Yes
|
||||||
: UseBuildSystemWarnings::No;
|
: UseBuildSystemWarnings::No;
|
||||||
|
const FilePath clangIncludeDir = Core::ICore::clangIncludeDirectory(
|
||||||
|
QString(CLANG_VERSION), FilePath(CLANG_INCLUDE_DIR));
|
||||||
CompilerOptionsBuilder optionsBuilder(projectPart, UseSystemHeader::No,
|
CompilerOptionsBuilder optionsBuilder(projectPart, UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No,
|
||||||
useBuildSystemWarnings, QString(CLANG_VERSION),
|
useBuildSystemWarnings, clangIncludeDir);
|
||||||
FilePath(CLANG_INCLUDE_DIR));
|
|
||||||
optionsBuilder.provideAdditionalMacros({ProjectExplorer::Macro("Q_CREATOR_RUN", "1")});
|
optionsBuilder.provideAdditionalMacros({ProjectExplorer::Macro("Q_CREATOR_RUN", "1")});
|
||||||
optionsBuilder.build(ProjectFile::Unclassified, UsePrecompiledHeaders::No);
|
optionsBuilder.build(ProjectFile::Unclassified, UsePrecompiledHeaders::No);
|
||||||
const QString uiIncludePath
|
const QString uiIncludePath
|
||||||
|
@@ -119,13 +119,14 @@ AnalyzeUnit::AnalyzeUnit(const FileInfo &fileInfo,
|
|||||||
const FilePath &clangIncludeDir,
|
const FilePath &clangIncludeDir,
|
||||||
const QString &clangVersion)
|
const QString &clangVersion)
|
||||||
{
|
{
|
||||||
|
const FilePath actualClangIncludeDir = Core::ICore::clangIncludeDirectory(
|
||||||
|
clangVersion, clangIncludeDir);
|
||||||
CompilerOptionsBuilder optionsBuilder(*fileInfo.projectPart,
|
CompilerOptionsBuilder optionsBuilder(*fileInfo.projectPart,
|
||||||
UseSystemHeader::No,
|
UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Tools,
|
UseTweakedHeaderPaths::Tools,
|
||||||
UseLanguageDefines::No,
|
UseLanguageDefines::No,
|
||||||
UseBuildSystemWarnings::No,
|
UseBuildSystemWarnings::No,
|
||||||
clangVersion,
|
actualClangIncludeDir);
|
||||||
clangIncludeDir);
|
|
||||||
file = fileInfo.file.toString();
|
file = fileInfo.file.toString();
|
||||||
arguments = extraClangToolsPrependOptions();
|
arguments = extraClangToolsPrependOptions();
|
||||||
arguments.append(optionsBuilder.build(fileInfo.kind, CppEditor::getPchUsage()));
|
arguments.append(optionsBuilder.build(fileInfo.kind, CppEditor::getPchUsage()));
|
||||||
|
@@ -108,14 +108,12 @@ CompilerOptionsBuilder::CompilerOptionsBuilder(const ProjectPart &projectPart,
|
|||||||
UseTweakedHeaderPaths useTweakedHeaderPaths,
|
UseTweakedHeaderPaths useTweakedHeaderPaths,
|
||||||
UseLanguageDefines useLanguageDefines,
|
UseLanguageDefines useLanguageDefines,
|
||||||
UseBuildSystemWarnings useBuildSystemWarnings,
|
UseBuildSystemWarnings useBuildSystemWarnings,
|
||||||
const QString &clangVersion,
|
|
||||||
const FilePath &clangIncludeDirectory)
|
const FilePath &clangIncludeDirectory)
|
||||||
: m_projectPart(projectPart)
|
: m_projectPart(projectPart)
|
||||||
, m_useSystemHeader(useSystemHeader)
|
, m_useSystemHeader(useSystemHeader)
|
||||||
, m_useTweakedHeaderPaths(useTweakedHeaderPaths)
|
, m_useTweakedHeaderPaths(useTweakedHeaderPaths)
|
||||||
, m_useLanguageDefines(useLanguageDefines)
|
, m_useLanguageDefines(useLanguageDefines)
|
||||||
, m_useBuildSystemWarnings(useBuildSystemWarnings)
|
, m_useBuildSystemWarnings(useBuildSystemWarnings)
|
||||||
, m_clangVersion(clangVersion)
|
|
||||||
, m_clangIncludeDirectory(clangIncludeDirectory)
|
, m_clangIncludeDirectory(clangIncludeDirectory)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -351,7 +349,6 @@ void CompilerOptionsBuilder::addHeaderPathOptions()
|
|||||||
Internal::HeaderPathFilter filter{
|
Internal::HeaderPathFilter filter{
|
||||||
m_projectPart,
|
m_projectPart,
|
||||||
m_useTweakedHeaderPaths,
|
m_useTweakedHeaderPaths,
|
||||||
m_clangVersion,
|
|
||||||
m_clangIncludeDirectory};
|
m_clangIncludeDirectory};
|
||||||
|
|
||||||
filter.process();
|
filter.process();
|
||||||
@@ -362,8 +359,6 @@ void CompilerOptionsBuilder::addHeaderPathOptions()
|
|||||||
addIncludeDirOptionForPath(headerPath);
|
addIncludeDirOptionForPath(headerPath);
|
||||||
|
|
||||||
if (m_useTweakedHeaderPaths != UseTweakedHeaderPaths::No) {
|
if (m_useTweakedHeaderPaths != UseTweakedHeaderPaths::No) {
|
||||||
QTC_CHECK(!m_clangVersion.isEmpty()
|
|
||||||
&& "Clang resource directory is required with UseTweakedHeaderPaths::Yes.");
|
|
||||||
|
|
||||||
// Exclude all built-in includes and Clang resource directory.
|
// Exclude all built-in includes and Clang resource directory.
|
||||||
m_options.prepend("-nostdinc++");
|
m_options.prepend("-nostdinc++");
|
||||||
|
@@ -50,7 +50,6 @@ public:
|
|||||||
UseTweakedHeaderPaths useTweakedHeaderPaths = UseTweakedHeaderPaths::No,
|
UseTweakedHeaderPaths useTweakedHeaderPaths = UseTweakedHeaderPaths::No,
|
||||||
UseLanguageDefines useLanguageDefines = UseLanguageDefines::No,
|
UseLanguageDefines useLanguageDefines = UseLanguageDefines::No,
|
||||||
UseBuildSystemWarnings useBuildSystemWarnings = UseBuildSystemWarnings::No,
|
UseBuildSystemWarnings useBuildSystemWarnings = UseBuildSystemWarnings::No,
|
||||||
const QString &clangVersion = {},
|
|
||||||
const Utils::FilePath &clangIncludeDirectory = {});
|
const Utils::FilePath &clangIncludeDirectory = {});
|
||||||
|
|
||||||
QStringList build(ProjectFile::Kind fileKind, UsePrecompiledHeaders usePrecompiledHeaders);
|
QStringList build(ProjectFile::Kind fileKind, UsePrecompiledHeaders usePrecompiledHeaders);
|
||||||
@@ -116,7 +115,6 @@ private:
|
|||||||
const UseLanguageDefines m_useLanguageDefines;
|
const UseLanguageDefines m_useLanguageDefines;
|
||||||
const UseBuildSystemWarnings m_useBuildSystemWarnings;
|
const UseBuildSystemWarnings m_useBuildSystemWarnings;
|
||||||
|
|
||||||
const QString m_clangVersion;
|
|
||||||
const Utils::FilePath m_clangIncludeDirectory;
|
const Utils::FilePath m_clangIncludeDirectory;
|
||||||
|
|
||||||
ProjectExplorer::Macros m_additionalMacros;
|
ProjectExplorer::Macros m_additionalMacros;
|
||||||
|
@@ -209,13 +209,13 @@ void CompilerOptionsBuilderTest::testHeaderPathOptionsOrder()
|
|||||||
TestHelper t;
|
TestHelper t;
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder{t.finalize(), UseSystemHeader::No,
|
CompilerOptionsBuilder compilerOptionsBuilder{t.finalize(), UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", ""};
|
"/dummy"};
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
QCOMPARE(compilerOptionsBuilder.options(),
|
QCOMPARE(compilerOptionsBuilder.options(),
|
||||||
(QStringList{"-nostdinc", "-nostdinc++", "-I", t.toNative("/tmp/path"),
|
(QStringList{"-nostdinc", "-nostdinc++", "-I", t.toNative("/tmp/path"),
|
||||||
"-I", t.toNative("/tmp/system_path"), "-isystem", "", "-isystem",
|
"-I", t.toNative("/tmp/system_path"), "-isystem", t.toNative("/dummy"),
|
||||||
t.toNative("/tmp/builtin_path")}));
|
"-isystem", t.toNative("/tmp/builtin_path")}));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompilerOptionsBuilderTest::testHeaderPathOptionsOrderMsvc()
|
void CompilerOptionsBuilderTest::testHeaderPathOptionsOrderMsvc()
|
||||||
@@ -224,14 +224,14 @@ void CompilerOptionsBuilderTest::testHeaderPathOptionsOrderMsvc()
|
|||||||
t.toolchainType = Constants::MSVC_TOOLCHAIN_TYPEID;
|
t.toolchainType = Constants::MSVC_TOOLCHAIN_TYPEID;
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder{t.finalize(), UseSystemHeader::No,
|
CompilerOptionsBuilder compilerOptionsBuilder{t.finalize(), UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", ""};
|
"/dummy"};
|
||||||
compilerOptionsBuilder.evaluateCompilerFlags();
|
compilerOptionsBuilder.evaluateCompilerFlags();
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
QCOMPARE(compilerOptionsBuilder.options(),
|
QCOMPARE(compilerOptionsBuilder.options(),
|
||||||
(QStringList{"-nostdinc", "-nostdinc++", "-I", t.toNative("/tmp/path"),
|
(QStringList{"-nostdinc", "-nostdinc++", "-I", t.toNative("/tmp/path"),
|
||||||
"-I", t.toNative("/tmp/system_path"), "/clang:-isystem",
|
"-I", t.toNative("/tmp/system_path"), "/clang:-isystem",
|
||||||
"/clang:", "/clang:-isystem",
|
"/clang:" + t.toNative("/dummy"), "/clang:-isystem",
|
||||||
"/clang:" + t.toNative("/tmp/builtin_path")}));
|
"/clang:" + t.toNative("/tmp/builtin_path")}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,13 +240,14 @@ void CompilerOptionsBuilderTest::testUseSystemHeader()
|
|||||||
TestHelper t;
|
TestHelper t;
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder{t.finalize(), UseSystemHeader::Yes,
|
CompilerOptionsBuilder compilerOptionsBuilder{t.finalize(), UseSystemHeader::Yes,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", ""};
|
"/dummy"};
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
QCOMPARE(compilerOptionsBuilder.options(),
|
QCOMPARE(compilerOptionsBuilder.options(),
|
||||||
(QStringList{"-nostdinc", "-nostdinc++", "-I", t.toNative("/tmp/path"),
|
(QStringList{"-nostdinc", "-nostdinc++", "-I", t.toNative("/tmp/path"),
|
||||||
"-isystem", t.toNative("/tmp/system_path"),
|
"-isystem", t.toNative("/tmp/system_path"),
|
||||||
"-isystem", "", "-isystem", t.toNative("/tmp/builtin_path")}));
|
"-isystem", t.toNative("/dummy"),
|
||||||
|
"-isystem", t.toNative("/tmp/builtin_path")}));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompilerOptionsBuilderTest::testNoClangHeadersPath()
|
void CompilerOptionsBuilderTest::testNoClangHeadersPath()
|
||||||
@@ -272,7 +273,7 @@ void CompilerOptionsBuilderTest::testClangHeadersAndCppIncludePathsOrderMacOs()
|
|||||||
t.headerPaths = additionalHeaderPaths + t.headerPaths;
|
t.headerPaths = additionalHeaderPaths + t.headerPaths;
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", "");
|
"/dummy");
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
QCOMPARE(compilerOptionsBuilder.options(),
|
QCOMPARE(compilerOptionsBuilder.options(),
|
||||||
@@ -281,7 +282,7 @@ void CompilerOptionsBuilderTest::testClangHeadersAndCppIncludePathsOrderMacOs()
|
|||||||
"-isystem", t.toNative("/usr/include/c++/4.2.1"),
|
"-isystem", t.toNative("/usr/include/c++/4.2.1"),
|
||||||
"-isystem", t.toNative("/usr/include/c++/4.2.1/backward"),
|
"-isystem", t.toNative("/usr/include/c++/4.2.1/backward"),
|
||||||
"-isystem", t.toNative("/usr/local/include"),
|
"-isystem", t.toNative("/usr/local/include"),
|
||||||
"-isystem", "",
|
"-isystem", t.toNative("/dummy"),
|
||||||
"-isystem", t.toNative("/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include"),
|
"-isystem", t.toNative("/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include"),
|
||||||
"-isystem", t.toNative("/usr/include"),
|
"-isystem", t.toNative("/usr/include"),
|
||||||
"-isystem", t.toNative("/tmp/builtin_path")}));
|
"-isystem", t.toNative("/tmp/builtin_path")}));
|
||||||
@@ -301,7 +302,7 @@ void CompilerOptionsBuilderTest::testClangHeadersAndCppIncludePathsOrderLinux()
|
|||||||
t.builtIn("/usr/include")};
|
t.builtIn("/usr/include")};
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", "");
|
"/dummy");
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
QCOMPARE(compilerOptionsBuilder.options(),
|
QCOMPARE(compilerOptionsBuilder.options(),
|
||||||
@@ -310,7 +311,7 @@ void CompilerOptionsBuilderTest::testClangHeadersAndCppIncludePathsOrderLinux()
|
|||||||
"-isystem", t.toNative("/usr/include/c++/4.8/backward"),
|
"-isystem", t.toNative("/usr/include/c++/4.8/backward"),
|
||||||
"-isystem", t.toNative("/usr/include/x86_64-linux-gnu/c++/4.8"),
|
"-isystem", t.toNative("/usr/include/x86_64-linux-gnu/c++/4.8"),
|
||||||
"-isystem", t.toNative("/usr/local/include"),
|
"-isystem", t.toNative("/usr/local/include"),
|
||||||
"-isystem", "",
|
"-isystem", t.toNative("/dummy"),
|
||||||
"-isystem", t.toNative("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"),
|
"-isystem", t.toNative("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"),
|
||||||
"-isystem", t.toNative("/usr/include/x86_64-linux-gnu"),
|
"-isystem", t.toNative("/usr/include/x86_64-linux-gnu"),
|
||||||
"-isystem", t.toNative("/usr/include")}));
|
"-isystem", t.toNative("/usr/include")}));
|
||||||
@@ -327,7 +328,7 @@ void CompilerOptionsBuilderTest::testClangHeadersAndCppIncludePathsOrderNoVersio
|
|||||||
t.builtIn("C:/mingw530/i686-w64-mingw32/include/c++/backward")};
|
t.builtIn("C:/mingw530/i686-w64-mingw32/include/c++/backward")};
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", "");
|
"/dummy");
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
QCOMPARE(compilerOptionsBuilder.options(),
|
QCOMPARE(compilerOptionsBuilder.options(),
|
||||||
@@ -335,7 +336,7 @@ void CompilerOptionsBuilderTest::testClangHeadersAndCppIncludePathsOrderNoVersio
|
|||||||
"-isystem", t.toNative("C:/mingw530/i686-w64-mingw32/include/c++"),
|
"-isystem", t.toNative("C:/mingw530/i686-w64-mingw32/include/c++"),
|
||||||
"-isystem", t.toNative("C:/mingw530/i686-w64-mingw32/include/c++/i686-w64-mingw32"),
|
"-isystem", t.toNative("C:/mingw530/i686-w64-mingw32/include/c++/i686-w64-mingw32"),
|
||||||
"-isystem", t.toNative("C:/mingw530/i686-w64-mingw32/include/c++/backward"),
|
"-isystem", t.toNative("C:/mingw530/i686-w64-mingw32/include/c++/backward"),
|
||||||
"-isystem", "",
|
"-isystem", t.toNative("/dummy"),
|
||||||
"-isystem", t.toNative("C:/mingw530/i686-w64-mingw32/include")}));
|
"-isystem", t.toNative("C:/mingw530/i686-w64-mingw32/include")}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,14 +352,14 @@ void CompilerOptionsBuilderTest::testClangHeadersAndCppIncludePathsOrderAndroidC
|
|||||||
t.builtIn("C:/Android/sdk/ndk-bundle/sysroot/usr/include")};
|
t.builtIn("C:/Android/sdk/ndk-bundle/sysroot/usr/include")};
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", "");
|
"/dummy");
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
QCOMPARE(compilerOptionsBuilder.options(),
|
QCOMPARE(compilerOptionsBuilder.options(),
|
||||||
(QStringList{"-nostdinc", "-nostdinc++",
|
(QStringList{"-nostdinc", "-nostdinc++",
|
||||||
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include"),
|
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include"),
|
||||||
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++abi/include"),
|
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++abi/include"),
|
||||||
"-isystem", t.toNative(""),
|
"-isystem", t.toNative("/dummy"),
|
||||||
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sysroot/usr/include/i686-linux-android"),
|
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sysroot/usr/include/i686-linux-android"),
|
||||||
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sources/android/support/include"),
|
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sources/android/support/include"),
|
||||||
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sysroot/usr/include")}));
|
"-isystem", t.toNative("C:/Android/sdk/ndk-bundle/sysroot/usr/include")}));
|
||||||
@@ -434,8 +435,7 @@ void CompilerOptionsBuilderTest::testInsertWrappedQtHeaders()
|
|||||||
{
|
{
|
||||||
TestHelper t;
|
TestHelper t;
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder{t.finalize(), UseSystemHeader::Yes,
|
CompilerOptionsBuilder compilerOptionsBuilder{t.finalize(), UseSystemHeader::Yes,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No};
|
||||||
"dummy_version", ""};
|
|
||||||
compilerOptionsBuilder.insertWrappedQtHeaders();
|
compilerOptionsBuilder.insertWrappedQtHeaders();
|
||||||
|
|
||||||
QVERIFY(Utils::contains(compilerOptionsBuilder.options(),
|
QVERIFY(Utils::contains(compilerOptionsBuilder.options(),
|
||||||
@@ -446,7 +446,7 @@ void CompilerOptionsBuilderTest::testInsertWrappedMingwHeadersWithNonMingwToolch
|
|||||||
{
|
{
|
||||||
TestHelper t;
|
TestHelper t;
|
||||||
CompilerOptionsBuilder builder{t.finalize(), UseSystemHeader::Yes, UseTweakedHeaderPaths::Yes,
|
CompilerOptionsBuilder builder{t.finalize(), UseSystemHeader::Yes, UseTweakedHeaderPaths::Yes,
|
||||||
UseLanguageDefines::No, UseBuildSystemWarnings::No, "dummy_version", ""};
|
UseLanguageDefines::No, UseBuildSystemWarnings::No};
|
||||||
builder.insertWrappedMingwHeaders();
|
builder.insertWrappedMingwHeaders();
|
||||||
|
|
||||||
QVERIFY(!Utils::contains(builder.options(),
|
QVERIFY(!Utils::contains(builder.options(),
|
||||||
@@ -458,7 +458,7 @@ void CompilerOptionsBuilderTest::testInsertWrappedMingwHeadersWithMingwToolchain
|
|||||||
TestHelper t;
|
TestHelper t;
|
||||||
t.toolchainType = Constants::MINGW_TOOLCHAIN_TYPEID;
|
t.toolchainType = Constants::MINGW_TOOLCHAIN_TYPEID;
|
||||||
CompilerOptionsBuilder builder{t.finalize(), UseSystemHeader::Yes, UseTweakedHeaderPaths::Yes,
|
CompilerOptionsBuilder builder{t.finalize(), UseSystemHeader::Yes, UseTweakedHeaderPaths::Yes,
|
||||||
UseLanguageDefines::No, UseBuildSystemWarnings::No, "dummy_version", ""};
|
UseLanguageDefines::No, UseBuildSystemWarnings::No};
|
||||||
builder.insertWrappedMingwHeaders();
|
builder.insertWrappedMingwHeaders();
|
||||||
|
|
||||||
QVERIFY(Utils::contains(builder.options(),
|
QVERIFY(Utils::contains(builder.options(),
|
||||||
@@ -600,7 +600,7 @@ void CompilerOptionsBuilderTest::testBuildAllOptions()
|
|||||||
t.extraFlags = QStringList{"-arch", "x86_64"};
|
t.extraFlags = QStringList{"-arch", "x86_64"};
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", "");
|
"/dummy");
|
||||||
compilerOptionsBuilder.build(ProjectFile::CXXSource, UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CXXSource, UsePrecompiledHeaders::No);
|
||||||
|
|
||||||
const QString wrappedQtHeadersPath = Utils::findOrDefault(compilerOptionsBuilder.options(),
|
const QString wrappedQtHeadersPath = Utils::findOrDefault(compilerOptionsBuilder.options(),
|
||||||
@@ -614,7 +614,7 @@ void CompilerOptionsBuilderTest::testBuildAllOptions()
|
|||||||
"-I", wrappedQtCoreHeadersPath,
|
"-I", wrappedQtCoreHeadersPath,
|
||||||
"-I", t.toNative("/tmp/path"),
|
"-I", t.toNative("/tmp/path"),
|
||||||
"-I", t.toNative("/tmp/system_path"),
|
"-I", t.toNative("/tmp/system_path"),
|
||||||
"-isystem", "",
|
"-isystem", t.toNative("/dummy"),
|
||||||
"-isystem", t.toNative("/tmp/builtin_path")}));
|
"-isystem", t.toNative("/tmp/builtin_path")}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -624,7 +624,7 @@ void CompilerOptionsBuilderTest::testBuildAllOptionsMsvc()
|
|||||||
t.toolchainType = Constants::MSVC_TOOLCHAIN_TYPEID;
|
t.toolchainType = Constants::MSVC_TOOLCHAIN_TYPEID;
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", "");
|
"/dummy");
|
||||||
compilerOptionsBuilder.build(ProjectFile::CXXSource, UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CXXSource, UsePrecompiledHeaders::No);
|
||||||
|
|
||||||
const QString wrappedQtHeadersPath = Utils::findOrDefault(compilerOptionsBuilder.options(),
|
const QString wrappedQtHeadersPath = Utils::findOrDefault(compilerOptionsBuilder.options(),
|
||||||
@@ -642,7 +642,7 @@ void CompilerOptionsBuilderTest::testBuildAllOptionsMsvc()
|
|||||||
"-I", wrappedQtCoreHeadersPath,
|
"-I", wrappedQtCoreHeadersPath,
|
||||||
"-I", t.toNative("/tmp/path"),
|
"-I", t.toNative("/tmp/path"),
|
||||||
"-I", t.toNative("/tmp/system_path"),
|
"-I", t.toNative("/tmp/system_path"),
|
||||||
"/clang:-isystem", "/clang:",
|
"/clang:-isystem", "/clang:" + t.toNative("/dummy"),
|
||||||
"/clang:-isystem", "/clang:" + t.toNative("/tmp/builtin_path")}));
|
"/clang:-isystem", "/clang:" + t.toNative("/tmp/builtin_path")}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -653,7 +653,7 @@ void CompilerOptionsBuilderTest::testBuildAllOptionsMsvcWithExceptions()
|
|||||||
t.toolchainMacros.append(Macro{"_CPPUNWIND", "1"});
|
t.toolchainMacros.append(Macro{"_CPPUNWIND", "1"});
|
||||||
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
CompilerOptionsBuilder compilerOptionsBuilder(t.finalize(), UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
UseTweakedHeaderPaths::Yes, UseLanguageDefines::No, UseBuildSystemWarnings::No,
|
||||||
"dummy_version", "");
|
"/dummy");
|
||||||
compilerOptionsBuilder.build(ProjectFile::CXXSource, UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CXXSource, UsePrecompiledHeaders::No);
|
||||||
|
|
||||||
const QString wrappedQtHeadersPath = Utils::findOrDefault(compilerOptionsBuilder.options(),
|
const QString wrappedQtHeadersPath = Utils::findOrDefault(compilerOptionsBuilder.options(),
|
||||||
@@ -672,7 +672,7 @@ void CompilerOptionsBuilderTest::testBuildAllOptionsMsvcWithExceptions()
|
|||||||
"-I", wrappedQtCoreHeadersPath,
|
"-I", wrappedQtCoreHeadersPath,
|
||||||
"-I", t.toNative("/tmp/path"),
|
"-I", t.toNative("/tmp/path"),
|
||||||
"-I", t.toNative("/tmp/system_path"),
|
"-I", t.toNative("/tmp/system_path"),
|
||||||
"/clang:-isystem", "/clang:",
|
"/clang:-isystem", "/clang:" + t.toNative("/dummy"),
|
||||||
"/clang:-isystem", "/clang:" + t.toNative("/tmp/builtin_path")}));
|
"/clang:-isystem", "/clang:" + t.toNative("/tmp/builtin_path")}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -103,17 +103,6 @@ void HeaderPathFilter::filterHeaderPath(const ProjectExplorer::HeaderPath &heade
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
FilePath clangIncludeDirectory(const QString &clangVersion, const FilePath &clangFallbackIncludeDir)
|
|
||||||
{
|
|
||||||
#ifndef UNIT_TESTS
|
|
||||||
return Core::ICore::clangIncludeDirectory(clangVersion, clangFallbackIncludeDir);
|
|
||||||
#else
|
|
||||||
Q_UNUSED(clangVersion)
|
|
||||||
Q_UNUSED(clangFallbackIncludeDir)
|
|
||||||
return {CLANG_INCLUDE_DIR};
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
HeaderPaths::iterator resourceIterator(HeaderPaths &headerPaths)
|
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
|
||||||
@@ -156,11 +145,8 @@ void HeaderPathFilter::tweakHeaderPaths()
|
|||||||
|
|
||||||
auto split = resourceIterator(builtInHeaderPaths);
|
auto split = resourceIterator(builtInHeaderPaths);
|
||||||
|
|
||||||
if (!clangVersion.isEmpty()) {
|
if (!clangIncludeDirectory.isEmpty())
|
||||||
const FilePath clangIncludePath
|
builtInHeaderPaths.insert(split, HeaderPath::makeBuiltIn(clangIncludeDirectory));
|
||||||
= clangIncludeDirectory(clangVersion, clangFallbackIncludeDirectory);
|
|
||||||
builtInHeaderPaths.insert(split, HeaderPath::makeBuiltIn(clangIncludePath));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HeaderPathFilter::addPreIncludesPath()
|
void HeaderPathFilter::addPreIncludesPath()
|
||||||
|
@@ -37,13 +37,11 @@ class HeaderPathFilter
|
|||||||
public:
|
public:
|
||||||
HeaderPathFilter(const ProjectPart &projectPart,
|
HeaderPathFilter(const ProjectPart &projectPart,
|
||||||
UseTweakedHeaderPaths useTweakedHeaderPaths = UseTweakedHeaderPaths::Yes,
|
UseTweakedHeaderPaths useTweakedHeaderPaths = UseTweakedHeaderPaths::Yes,
|
||||||
const QString &clangVersion = {},
|
|
||||||
const Utils::FilePath &clangIncludeDirectory = {},
|
const Utils::FilePath &clangIncludeDirectory = {},
|
||||||
const QString &projectDirectory = {},
|
const QString &projectDirectory = {},
|
||||||
const QString &buildDirectory = {})
|
const QString &buildDirectory = {})
|
||||||
: projectPart{projectPart}
|
: projectPart{projectPart}
|
||||||
, clangVersion{clangVersion}
|
, clangIncludeDirectory{clangIncludeDirectory}
|
||||||
, clangFallbackIncludeDirectory{clangIncludeDirectory}
|
|
||||||
, projectDirectory(ensurePathWithSlashEnding(projectDirectory))
|
, projectDirectory(ensurePathWithSlashEnding(projectDirectory))
|
||||||
, buildDirectory(ensurePathWithSlashEnding(buildDirectory))
|
, buildDirectory(ensurePathWithSlashEnding(buildDirectory))
|
||||||
, useTweakedHeaderPaths{useTweakedHeaderPaths}
|
, useTweakedHeaderPaths{useTweakedHeaderPaths}
|
||||||
@@ -69,8 +67,7 @@ public:
|
|||||||
ProjectExplorer::HeaderPaths systemHeaderPaths;
|
ProjectExplorer::HeaderPaths systemHeaderPaths;
|
||||||
ProjectExplorer::HeaderPaths userHeaderPaths;
|
ProjectExplorer::HeaderPaths userHeaderPaths;
|
||||||
const ProjectPart &projectPart;
|
const ProjectPart &projectPart;
|
||||||
const QString clangVersion;
|
const Utils::FilePath clangIncludeDirectory;
|
||||||
const Utils::FilePath clangFallbackIncludeDirectory;
|
|
||||||
const QString projectDirectory;
|
const QString projectDirectory;
|
||||||
const QString buildDirectory;
|
const QString buildDirectory;
|
||||||
const UseTweakedHeaderPaths useTweakedHeaderPaths;
|
const UseTweakedHeaderPaths useTweakedHeaderPaths;
|
||||||
|
@@ -511,7 +511,7 @@ public:
|
|||||||
tcInfo.targetTriple = targetTriple;
|
tcInfo.targetTriple = targetTriple;
|
||||||
tcInfo.installDir = toolchainInstallDir;
|
tcInfo.installDir = toolchainInstallDir;
|
||||||
projectPart = ProjectPart::create({}, rpp, {}, {}, {}, {}, {}, tcInfo);
|
projectPart = ProjectPart::create({}, rpp, {}, {}, {}, {}, {}, tcInfo);
|
||||||
filter.emplace(HeaderPathFilter(*projectPart, UseTweakedHeaderPaths::No, {}, {},
|
filter.emplace(HeaderPathFilter(*projectPart, UseTweakedHeaderPaths::No, {},
|
||||||
"/project", "/build"));
|
"/project", "/build"));
|
||||||
return *projectPart;
|
return *projectPart;
|
||||||
}
|
}
|
||||||
@@ -602,7 +602,7 @@ void HeaderPathFilterTest::testDontAddInvalidPath()
|
|||||||
void HeaderPathFilterTest::testClangHeadersPath()
|
void HeaderPathFilterTest::testClangHeadersPath()
|
||||||
{
|
{
|
||||||
HeaderPathFilterTestHelper t;
|
HeaderPathFilterTestHelper t;
|
||||||
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "6.0", "clang_dir");
|
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "clang_dir");
|
||||||
filter.process();
|
filter.process();
|
||||||
|
|
||||||
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{t.builtIn("clang_dir"),
|
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{t.builtIn("clang_dir"),
|
||||||
@@ -631,7 +631,7 @@ void HeaderPathFilterTest::testClangHeadersAndCppIncludesPathsOrderMacOs()
|
|||||||
};
|
};
|
||||||
std::copy(builtIns.begin(), builtIns.end(),
|
std::copy(builtIns.begin(), builtIns.end(),
|
||||||
std::inserter(t.headerPaths, t.headerPaths.begin()));
|
std::inserter(t.headerPaths, t.headerPaths.begin()));
|
||||||
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "6.0", "clang_dir");
|
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "clang_dir");
|
||||||
filter.process();
|
filter.process();
|
||||||
|
|
||||||
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{
|
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{
|
||||||
@@ -653,7 +653,7 @@ void HeaderPathFilterTest::testClangHeadersAndCppIncludesPathsOrderLinux()
|
|||||||
t.builtIn("/usr/include/x86_64-linux-gnu"), t.builtIn("/usr/include")};
|
t.builtIn("/usr/include/x86_64-linux-gnu"), t.builtIn("/usr/include")};
|
||||||
std::copy(builtIns.begin(), builtIns.end(),
|
std::copy(builtIns.begin(), builtIns.end(),
|
||||||
std::inserter(t.headerPaths, t.headerPaths.begin()));
|
std::inserter(t.headerPaths, t.headerPaths.begin()));
|
||||||
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "6.0", "clang_dir");
|
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "clang_dir");
|
||||||
filter.process();
|
filter.process();
|
||||||
|
|
||||||
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{
|
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{
|
||||||
@@ -675,7 +675,7 @@ void HeaderPathFilterTest::testRemoveGccInternalPaths()
|
|||||||
t.builtIn("/usr/lib/gcc/x86_64-linux-gnu/7/include"),
|
t.builtIn("/usr/lib/gcc/x86_64-linux-gnu/7/include"),
|
||||||
t.builtIn("/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed"),
|
t.builtIn("/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed"),
|
||||||
};
|
};
|
||||||
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "6.0", "clang_dir");
|
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "clang_dir");
|
||||||
filter.process();
|
filter.process();
|
||||||
|
|
||||||
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{t.builtIn("clang_dir")}));
|
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{t.builtIn("clang_dir")}));
|
||||||
@@ -697,7 +697,7 @@ void HeaderPathFilterTest::testRemoveGccInternalPathsExceptForStandardPaths()
|
|||||||
|
|
||||||
HeaderPaths expected = t.headerPaths;
|
HeaderPaths expected = t.headerPaths;
|
||||||
expected.append(t.builtIn("clang_dir"));
|
expected.append(t.builtIn("clang_dir"));
|
||||||
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "6.0", "clang_dir");
|
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "clang_dir");
|
||||||
filter.process();
|
filter.process();
|
||||||
|
|
||||||
QCOMPARE(filter.builtInHeaderPaths, expected);
|
QCOMPARE(filter.builtInHeaderPaths, expected);
|
||||||
@@ -713,7 +713,7 @@ void HeaderPathFilterTest::testClangHeadersAndCppIncludesPathsOrderNoVersion()
|
|||||||
t.builtIn("C:/mingw/i686-w64-mingw32/include/c++/backward"),
|
t.builtIn("C:/mingw/i686-w64-mingw32/include/c++/backward"),
|
||||||
};
|
};
|
||||||
t.targetTriple = "x86_64-w64-windows-gnu";
|
t.targetTriple = "x86_64-w64-windows-gnu";
|
||||||
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "6.0", "clang_dir");
|
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "clang_dir");
|
||||||
filter.process();
|
filter.process();
|
||||||
|
|
||||||
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{
|
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{
|
||||||
@@ -735,7 +735,7 @@ void HeaderPathFilterTest::testClangHeadersAndCppIncludesPathsOrderAndroidClang(
|
|||||||
t.builtIn("C:/Android/sdk/ndk-bundle/sysroot/usr/include")
|
t.builtIn("C:/Android/sdk/ndk-bundle/sysroot/usr/include")
|
||||||
};
|
};
|
||||||
t.targetTriple = "i686-linux-android";
|
t.targetTriple = "i686-linux-android";
|
||||||
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "6.0", "clang_dir");
|
HeaderPathFilter filter(t.finalize(), UseTweakedHeaderPaths::Yes, "clang_dir");
|
||||||
filter.process();
|
filter.process();
|
||||||
|
|
||||||
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{
|
QCOMPARE(filter.builtInHeaderPaths, (HeaderPaths{
|
||||||
|
Reference in New Issue
Block a user