forked from qt-creator/qt-creator
Clang: Fix how tweaked header paths work
We need to provide built-in includes only when we use tweaked headers. Also let's require Clang resource directory because it has to be placed on the specific position inside the built-in header paths. Change-Id: Id581238660c680725201de759216cf33f69f6cc7 Reviewed-by: Marco Bubke <marco.bubke@qt.io> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
@@ -296,29 +296,24 @@ void CompilerOptionsBuilder::addHeaderPathOptions()
|
|||||||
using ProjectExplorer::HeaderPath;
|
using ProjectExplorer::HeaderPath;
|
||||||
using ProjectExplorer::HeaderPathType;
|
using ProjectExplorer::HeaderPathType;
|
||||||
|
|
||||||
|
for (const HeaderPath &headerPath : filter.userHeaderPaths)
|
||||||
|
addIncludeDirOptionForPath(headerPath);
|
||||||
|
for (const HeaderPath &headerPath : filter.systemHeaderPaths)
|
||||||
|
addIncludeDirOptionForPath(headerPath);
|
||||||
|
|
||||||
if (m_useTweakedHeaderPaths == UseTweakedHeaderPaths::Yes) {
|
if (m_useTweakedHeaderPaths == UseTweakedHeaderPaths::Yes) {
|
||||||
// Exclude all built-in includes except Clang resource directory.
|
QTC_CHECK(!m_clangVersion.isEmpty()
|
||||||
|
&& "Clang resource directory is required with UseTweakedHeaderPaths::Yes.");
|
||||||
|
|
||||||
if (!isClStyle()) // MSVC does not have such include directories - ignore it for cl driver.
|
|
||||||
m_options.prepend("-nostdlibinc");
|
|
||||||
|
|
||||||
if (!m_clangVersion.isEmpty()) {
|
|
||||||
// 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");
|
m_options.prepend("-nostdinc");
|
||||||
|
|
||||||
|
for (const HeaderPath &headerPath : filter.builtInHeaderPaths)
|
||||||
|
addIncludeDirOptionForPath(headerPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (const HeaderPath &headerPath : qAsConst(filter.userHeaderPaths))
|
|
||||||
addIncludeDirOptionForPath(headerPath);
|
|
||||||
|
|
||||||
for (const HeaderPath &headerPath : qAsConst(filter.systemHeaderPaths))
|
|
||||||
addIncludeDirOptionForPath(headerPath);
|
|
||||||
|
|
||||||
for (const HeaderPath &headerPath : qAsConst(filter.builtInHeaderPaths))
|
|
||||||
addIncludeDirOptionForPath(headerPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CompilerOptionsBuilder::addPrecompiledHeaderOptions(UsePrecompiledHeaders usePrecompiledHeaders)
|
void CompilerOptionsBuilder::addPrecompiledHeaderOptions(UsePrecompiledHeaders usePrecompiledHeaders)
|
||||||
{
|
{
|
||||||
if (usePrecompiledHeaders == UsePrecompiledHeaders::No)
|
if (usePrecompiledHeaders == UsePrecompiledHeaders::No)
|
||||||
|
@@ -45,7 +45,7 @@ class CPPTOOLS_EXPORT CompilerOptionsBuilder
|
|||||||
public:
|
public:
|
||||||
CompilerOptionsBuilder(const ProjectPart &projectPart,
|
CompilerOptionsBuilder(const ProjectPart &projectPart,
|
||||||
UseSystemHeader useSystemHeader = UseSystemHeader::No,
|
UseSystemHeader useSystemHeader = UseSystemHeader::No,
|
||||||
UseTweakedHeaderPaths useTweakedHeaderPaths = UseTweakedHeaderPaths::Yes,
|
UseTweakedHeaderPaths useTweakedHeaderPaths = UseTweakedHeaderPaths::No,
|
||||||
UseLanguageDefines useLanguageDefines = UseLanguageDefines::No,
|
UseLanguageDefines useLanguageDefines = UseLanguageDefines::No,
|
||||||
const QString &clangVersion = QString(),
|
const QString &clangVersion = QString(),
|
||||||
const QString &clangResourceDirectory = QString());
|
const QString &clangResourceDirectory = QString());
|
||||||
|
@@ -90,7 +90,7 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_UnknownOptionsAreForwarded
|
|||||||
|
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part,
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part,
|
||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::No,
|
||||||
CppTools::UseLanguageDefines::Yes};
|
CppTools::UseLanguageDefines::Yes};
|
||||||
|
|
||||||
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
||||||
@@ -105,7 +105,7 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_DiagnosticOptionsAreRemove
|
|||||||
|
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part,
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part,
|
||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::No,
|
||||||
CppTools::UseLanguageDefines::Yes};
|
CppTools::UseLanguageDefines::Yes};
|
||||||
|
|
||||||
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
||||||
@@ -124,7 +124,7 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_CLanguageVersionIsRewritte
|
|||||||
|
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part,
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{part,
|
||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::No,
|
||||||
CppTools::UseLanguageDefines::Yes};
|
CppTools::UseLanguageDefines::Yes};
|
||||||
|
|
||||||
compilerOptionsBuilder.build(ProjectFile::CSource, CppTools::UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CSource, CppTools::UsePrecompiledHeaders::No);
|
||||||
@@ -137,7 +137,7 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_LanguageVersionIsExplicitl
|
|||||||
{
|
{
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::No,
|
||||||
CppTools::UseLanguageDefines::Yes};
|
CppTools::UseLanguageDefines::Yes};
|
||||||
|
|
||||||
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
||||||
@@ -150,7 +150,7 @@ TEST_F(CompilerOptionsBuilder, CompilerFlagsFiltering_ClLanguageVersionIsExplici
|
|||||||
projectPart.toolchainType = ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID;
|
projectPart.toolchainType = ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID;
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::No,
|
||||||
CppTools::UseLanguageDefines::Yes};
|
CppTools::UseLanguageDefines::Yes};
|
||||||
|
|
||||||
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
||||||
@@ -167,60 +167,87 @@ TEST_F(CompilerOptionsBuilder, AddWordWidth)
|
|||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, HeaderPathOptionsOrder)
|
TEST_F(CompilerOptionsBuilder, HeaderPathOptionsOrder)
|
||||||
{
|
{
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
||||||
|
|
||||||
ASSERT_THAT(compilerOptionsBuilder.options(),
|
|
||||||
ElementsAre("-nostdlibinc",
|
|
||||||
"-I", QDir::toNativeSeparators("/tmp/path"),
|
|
||||||
"-I", QDir::toNativeSeparators("/tmp/system_path"),
|
|
||||||
"-isystem", QDir::toNativeSeparators("/tmp/builtin_path")));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, HeaderPathOptionsOrderCl)
|
|
||||||
{
|
|
||||||
projectPart.toolchainType = ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID;
|
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart};
|
|
||||||
compilerOptionsBuilder.evaluateCompilerFlags();
|
|
||||||
|
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
|
||||||
|
|
||||||
ASSERT_THAT(compilerOptionsBuilder.options(),
|
|
||||||
ElementsAre("-I", QDir::toNativeSeparators("/tmp/path"),
|
|
||||||
"-I", QDir::toNativeSeparators("/tmp/system_path"),
|
|
||||||
"/clang:-isystem", "/clang:" + QDir::toNativeSeparators("/tmp/builtin_path")));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, UseSystemHeader)
|
|
||||||
{
|
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart, CppTools::UseSystemHeader::Yes);
|
|
||||||
|
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
|
||||||
|
|
||||||
ASSERT_THAT(compilerOptionsBuilder.options(),
|
|
||||||
ElementsAre("-nostdlibinc",
|
|
||||||
"-I", QDir::toNativeSeparators("/tmp/path"),
|
|
||||||
"-isystem", QDir::toNativeSeparators("/tmp/system_path"),
|
|
||||||
"-isystem", QDir::toNativeSeparators("/tmp/builtin_path")));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, ClangHeadersPath)
|
|
||||||
{
|
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
|
|
||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
CppTools::UseLanguageDefines::No,
|
CppTools::UseLanguageDefines::No,
|
||||||
"7.0.0",
|
"dummy_version",
|
||||||
"");
|
""};
|
||||||
|
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
ASSERT_THAT(compilerOptionsBuilder.options(),
|
ASSERT_THAT(compilerOptionsBuilder.options(),
|
||||||
ElementsAre("-nostdinc",
|
ElementsAre("-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-I", QDir::toNativeSeparators("/tmp/path"),
|
"-I",
|
||||||
"-I", QDir::toNativeSeparators("/tmp/system_path"),
|
QDir::toNativeSeparators("/tmp/path"),
|
||||||
"-isystem", QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
"-I",
|
||||||
"-isystem", QDir::toNativeSeparators("/tmp/builtin_path")));
|
QDir::toNativeSeparators("/tmp/system_path"),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators("/tmp/builtin_path")));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(CompilerOptionsBuilder, HeaderPathOptionsOrderCl)
|
||||||
|
{
|
||||||
|
projectPart.toolchainType = ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID;
|
||||||
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
||||||
|
CppTools::UseSystemHeader::No,
|
||||||
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
|
CppTools::UseLanguageDefines::No,
|
||||||
|
"dummy_version",
|
||||||
|
""};
|
||||||
|
compilerOptionsBuilder.evaluateCompilerFlags();
|
||||||
|
|
||||||
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
|
ASSERT_THAT(compilerOptionsBuilder.options(),
|
||||||
|
ElementsAre("-nostdinc",
|
||||||
|
"-nostdinc++",
|
||||||
|
"-I",
|
||||||
|
QDir::toNativeSeparators("/tmp/path"),
|
||||||
|
"-I",
|
||||||
|
QDir::toNativeSeparators("/tmp/system_path"),
|
||||||
|
"/clang:-isystem",
|
||||||
|
"/clang:" + QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
||||||
|
"/clang:-isystem",
|
||||||
|
"/clang:" + QDir::toNativeSeparators("/tmp/builtin_path")));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(CompilerOptionsBuilder, UseSystemHeader)
|
||||||
|
{
|
||||||
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
||||||
|
CppTools::UseSystemHeader::Yes,
|
||||||
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
|
CppTools::UseLanguageDefines::No,
|
||||||
|
"dummy_version",
|
||||||
|
""};
|
||||||
|
|
||||||
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
|
ASSERT_THAT(compilerOptionsBuilder.options(),
|
||||||
|
ElementsAre("-nostdinc",
|
||||||
|
"-nostdinc++",
|
||||||
|
"-I",
|
||||||
|
QDir::toNativeSeparators("/tmp/path"),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators("/tmp/system_path"),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators("/tmp/builtin_path")));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(CompilerOptionsBuilder, NoClangHeadersPath)
|
||||||
|
{
|
||||||
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
|
ASSERT_THAT(compilerOptionsBuilder.options(),
|
||||||
|
ElementsAre("-I",
|
||||||
|
QDir::toNativeSeparators("/tmp/path"),
|
||||||
|
"-I",
|
||||||
|
QDir::toNativeSeparators("/tmp/system_path")));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderMacOs)
|
TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderMacOs)
|
||||||
@@ -238,23 +265,34 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderMacOs)
|
|||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
CppTools::UseLanguageDefines::No,
|
CppTools::UseLanguageDefines::No,
|
||||||
"7.0.0",
|
"dummy_version",
|
||||||
"");
|
"");
|
||||||
|
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
ASSERT_THAT(compilerOptionsBuilder.options(),
|
ASSERT_THAT(compilerOptionsBuilder.options(),
|
||||||
ElementsAre("-nostdinc",
|
ElementsAre("-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-I", QDir::toNativeSeparators("/tmp/path"),
|
"-I",
|
||||||
"-I", QDir::toNativeSeparators("/tmp/system_path"),
|
QDir::toNativeSeparators("/tmp/path"),
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/include/c++/4.2.1"),
|
"-I",
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/include/c++/4.2.1/backward"),
|
QDir::toNativeSeparators("/tmp/system_path"),
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/local/include"),
|
"-isystem",
|
||||||
"-isystem", QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
QDir::toNativeSeparators("/usr/include/c++/4.2.1"),
|
||||||
"-isystem", QDir::toNativeSeparators("/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include"),
|
"-isystem",
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/include"),
|
QDir::toNativeSeparators("/usr/include/c++/4.2.1/backward"),
|
||||||
"-isystem", QDir::toNativeSeparators("/tmp/builtin_path")));
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators("/usr/local/include"),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators(
|
||||||
|
"/Applications/Xcode.app/Contents/Developer/Toolchains/"
|
||||||
|
"XcodeDefault.xctoolchain/usr/include"),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators("/usr/include"),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators("/tmp/builtin_path")));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderLinux)
|
TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderLinux)
|
||||||
@@ -272,22 +310,35 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderLinux)
|
|||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
CppTools::UseLanguageDefines::No,
|
CppTools::UseLanguageDefines::No,
|
||||||
"7.0.0",
|
"dummy_version",
|
||||||
"");
|
"");
|
||||||
|
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
ASSERT_THAT(compilerOptionsBuilder.options(),
|
ASSERT_THAT(
|
||||||
ElementsAre("-nostdinc",
|
compilerOptionsBuilder.options(),
|
||||||
"-nostdlibinc",
|
ElementsAre(
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8"),
|
"-nostdinc",
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/backward"),
|
"-nostdinc++",
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/x86_64-linux-gnu/c++/4.8"),
|
"-isystem",
|
||||||
"-isystem", QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
QDir::toNativeSeparators(
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/local/include"),
|
"/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8"),
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"),
|
"-isystem",
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/include/x86_64-linux-gnu"),
|
QDir::toNativeSeparators(
|
||||||
"-isystem", QDir::toNativeSeparators("/usr/include")));
|
"/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/backward"),
|
||||||
|
"-isystem",
|
||||||
|
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("/usr/lib/gcc/x86_64-linux-gnu/4.8/include"),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators("/usr/include/x86_64-linux-gnu"),
|
||||||
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators("/usr/include")));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderNoVersion)
|
TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderNoVersion)
|
||||||
@@ -305,18 +356,18 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderNoVersion)
|
|||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
CppTools::UseLanguageDefines::No,
|
CppTools::UseLanguageDefines::No,
|
||||||
"7.0.0",
|
"dummy_version",
|
||||||
"");
|
"");
|
||||||
|
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
ASSERT_THAT(
|
ASSERT_THAT(
|
||||||
compilerOptionsBuilder.options(),
|
compilerOptionsBuilder.options(),
|
||||||
ElementsAre(
|
ElementsAre("-nostdinc",
|
||||||
"-nostdinc",
|
"-nostdinc++",
|
||||||
"-nostdlibinc",
|
|
||||||
"-isystem",
|
"-isystem",
|
||||||
QDir::toNativeSeparators("C:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++"),
|
QDir::toNativeSeparators(
|
||||||
|
"C:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++"),
|
||||||
"-isystem",
|
"-isystem",
|
||||||
QDir::toNativeSeparators(
|
QDir::toNativeSeparators(
|
||||||
"C:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/i686-w64-mingw32"),
|
"C:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/i686-w64-mingw32"),
|
||||||
@@ -352,25 +403,26 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderAndroidClang)
|
|||||||
CppTools::UseSystemHeader::No,
|
CppTools::UseSystemHeader::No,
|
||||||
CppTools::UseTweakedHeaderPaths::Yes,
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
CppTools::UseLanguageDefines::No,
|
CppTools::UseLanguageDefines::No,
|
||||||
"7.0.0",
|
"dummy_version",
|
||||||
"");
|
"");
|
||||||
|
|
||||||
compilerOptionsBuilder.addHeaderPathOptions();
|
compilerOptionsBuilder.addHeaderPathOptions();
|
||||||
|
|
||||||
ASSERT_THAT(
|
ASSERT_THAT(compilerOptionsBuilder.options(),
|
||||||
compilerOptionsBuilder.options(),
|
|
||||||
ElementsAre("-nostdinc",
|
ElementsAre("-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-isystem",
|
"-isystem",
|
||||||
QDir::toNativeSeparators("C:/Users/test/AppData/Local/Android/sdk/ndk-"
|
QDir::toNativeSeparators("C:/Users/test/AppData/Local/Android/sdk/ndk-"
|
||||||
"bundle/sources/cxx-stl/llvm-libc++/include"),
|
"bundle/sources/cxx-stl/llvm-libc++/include"),
|
||||||
"-isystem",
|
"-isystem",
|
||||||
QDir::toNativeSeparators("C:/Users/test/AppData/Local/Android/sdk/ndk-"
|
QDir::toNativeSeparators(
|
||||||
|
"C:/Users/test/AppData/Local/Android/sdk/ndk-"
|
||||||
"bundle/sources/cxx-stl/llvm-libc++abi/include"),
|
"bundle/sources/cxx-stl/llvm-libc++abi/include"),
|
||||||
"-isystem",
|
"-isystem",
|
||||||
QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
||||||
"-isystem",
|
"-isystem",
|
||||||
QDir::toNativeSeparators("C:/Users/test/AppData/Local/Android/sdk/ndk-"
|
QDir::toNativeSeparators(
|
||||||
|
"C:/Users/test/AppData/Local/Android/sdk/ndk-"
|
||||||
"bundle/sysroot/usr/include/i686-linux-android"),
|
"bundle/sysroot/usr/include/i686-linux-android"),
|
||||||
"-isystem",
|
"-isystem",
|
||||||
QDir::toNativeSeparators("C:/Users/test/AppData/Local/Android/sdk/ndk-"
|
QDir::toNativeSeparators("C:/Users/test/AppData/Local/Android/sdk/ndk-"
|
||||||
@@ -424,6 +476,13 @@ TEST_F(CompilerOptionsBuilder, AddTargetTriple)
|
|||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, InsertWrappedQtHeaders)
|
TEST_F(CompilerOptionsBuilder, InsertWrappedQtHeaders)
|
||||||
{
|
{
|
||||||
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
||||||
|
CppTools::UseSystemHeader::Yes,
|
||||||
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
|
CppTools::UseLanguageDefines::No,
|
||||||
|
"dummy_version",
|
||||||
|
""};
|
||||||
|
|
||||||
compilerOptionsBuilder.insertWrappedQtHeaders();
|
compilerOptionsBuilder.insertWrappedQtHeaders();
|
||||||
|
|
||||||
ASSERT_THAT(compilerOptionsBuilder.options(), Contains(IsPartOfHeader("wrappedQtHeaders")));
|
ASSERT_THAT(compilerOptionsBuilder.options(), Contains(IsPartOfHeader("wrappedQtHeaders")));
|
||||||
@@ -550,12 +609,18 @@ TEST_F(CompilerOptionsBuilder, UndefineClangVersionMacrosForOldMsvc)
|
|||||||
TEST_F(CompilerOptionsBuilder, BuildAllOptions)
|
TEST_F(CompilerOptionsBuilder, BuildAllOptions)
|
||||||
{
|
{
|
||||||
projectPart.extraCodeModelFlags = QStringList{"-arch", "x86_64"};
|
projectPart.extraCodeModelFlags = QStringList{"-arch", "x86_64"};
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart};
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
|
||||||
|
CppTools::UseSystemHeader::No,
|
||||||
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
|
CppTools::UseLanguageDefines::No,
|
||||||
|
"dummy_version",
|
||||||
|
"");
|
||||||
|
|
||||||
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
||||||
|
|
||||||
ASSERT_THAT(compilerOptionsBuilder.options(),
|
ASSERT_THAT(compilerOptionsBuilder.options(),
|
||||||
ElementsAre("-nostdlibinc",
|
ElementsAre("-nostdinc",
|
||||||
|
"-nostdinc++",
|
||||||
"-fsyntax-only",
|
"-fsyntax-only",
|
||||||
"-m64",
|
"-m64",
|
||||||
"--target=x86_64-apple-darwin10",
|
"--target=x86_64-apple-darwin10",
|
||||||
@@ -575,18 +640,27 @@ TEST_F(CompilerOptionsBuilder, BuildAllOptions)
|
|||||||
"-I",
|
"-I",
|
||||||
QDir::toNativeSeparators("/tmp/system_path"),
|
QDir::toNativeSeparators("/tmp/system_path"),
|
||||||
"-isystem",
|
"-isystem",
|
||||||
|
QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
||||||
|
"-isystem",
|
||||||
QDir::toNativeSeparators("/tmp/builtin_path")));
|
QDir::toNativeSeparators("/tmp/builtin_path")));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, BuildAllOptionsCl)
|
TEST_F(CompilerOptionsBuilder, BuildAllOptionsCl)
|
||||||
{
|
{
|
||||||
projectPart.toolchainType = ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID;
|
projectPart.toolchainType = ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID;
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart};
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
|
||||||
|
CppTools::UseSystemHeader::No,
|
||||||
|
CppTools::UseTweakedHeaderPaths::Yes,
|
||||||
|
CppTools::UseLanguageDefines::No,
|
||||||
|
"dummy_version",
|
||||||
|
"");
|
||||||
|
|
||||||
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
compilerOptionsBuilder.build(ProjectFile::CXXSource, CppTools::UsePrecompiledHeaders::No);
|
||||||
|
|
||||||
ASSERT_THAT(compilerOptionsBuilder.options(),
|
ASSERT_THAT(compilerOptionsBuilder.options(),
|
||||||
ElementsAre("--driver-mode=cl",
|
ElementsAre("-nostdinc",
|
||||||
|
"-nostdinc++",
|
||||||
|
"--driver-mode=cl",
|
||||||
"/Zs",
|
"/Zs",
|
||||||
"-m64",
|
"-m64",
|
||||||
"--target=x86_64-apple-darwin10",
|
"--target=x86_64-apple-darwin10",
|
||||||
@@ -607,6 +681,8 @@ TEST_F(CompilerOptionsBuilder, BuildAllOptionsCl)
|
|||||||
"-I",
|
"-I",
|
||||||
QDir::toNativeSeparators("/tmp/system_path"),
|
QDir::toNativeSeparators("/tmp/system_path"),
|
||||||
"/clang:-isystem",
|
"/clang:-isystem",
|
||||||
|
"/clang:" + QDir::toNativeSeparators(CLANG_RESOURCE_DIR ""),
|
||||||
|
"/clang:-isystem",
|
||||||
"/clang:" + QDir::toNativeSeparators("/tmp/builtin_path")));
|
"/clang:" + QDir::toNativeSeparators("/tmp/builtin_path")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user