forked from qt-creator/qt-creator
CppTools: Split CppTools::UseBuiltin in two options
...for clarity. No behavior change. Change-Id: Id0334bc79b97a8ff53b37089e337530c9a01b1d4 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io> Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
@@ -69,7 +69,8 @@ public:
|
||||
LibClangOptionsBuilder(const ProjectPart &projectPart)
|
||||
: CompilerOptionsBuilder(projectPart,
|
||||
UseSystemHeader::No,
|
||||
UseBuiltin::Yes,
|
||||
UseToolchainMacros::Yes,
|
||||
UseTweakedHeaderPaths::Yes,
|
||||
UseLanguageDefines::No,
|
||||
QString(CLANG_VERSION),
|
||||
QString(CLANG_RESOURCE_DIR))
|
||||
@@ -336,7 +337,10 @@ void generateCompilationDB(::Utils::FileName projectDir, CppTools::ProjectInfo p
|
||||
for (ProjectPart::Ptr projectPart : projectInfo.projectParts()) {
|
||||
const ::Utils::FileName buildDir = buildDirectory(*projectPart);
|
||||
|
||||
CompilerOptionsBuilder optionsBuilder(*projectPart, UseSystemHeader::No, UseBuiltin::No);
|
||||
CompilerOptionsBuilder optionsBuilder(*projectPart,
|
||||
UseSystemHeader::No,
|
||||
UseToolchainMacros::No,
|
||||
UseTweakedHeaderPaths::No);
|
||||
optionsBuilder.build(CppTools::ProjectFile::Unclassified,
|
||||
CppTools::UsePrecompiledHeaders::No);
|
||||
|
||||
|
@@ -193,7 +193,8 @@ static AnalyzeUnits toAnalyzeUnits(const FileInfos &fileInfos)
|
||||
for (const FileInfo &fileInfo : fileInfos) {
|
||||
CompilerOptionsBuilder optionsBuilder(*fileInfo.projectPart,
|
||||
UseSystemHeader::No,
|
||||
UseBuiltin::Yes,
|
||||
UseToolchainMacros::Yes,
|
||||
UseTweakedHeaderPaths::Yes,
|
||||
UseLanguageDefines::No,
|
||||
QString(CLANG_VERSION),
|
||||
QString(CLANG_RESOURCE_DIR));
|
||||
|
@@ -73,13 +73,15 @@ static QString defineDirectiveToDefineOption(const ProjectExplorer::Macro ¯o
|
||||
|
||||
CompilerOptionsBuilder::CompilerOptionsBuilder(const ProjectPart &projectPart,
|
||||
UseSystemHeader useSystemHeader,
|
||||
UseBuiltin useBuiltInHeaderPathsAndDefines,
|
||||
UseToolchainMacros useToolchainMacros,
|
||||
UseTweakedHeaderPaths useTweakedHeaderPaths,
|
||||
UseLanguageDefines useLanguageDefines,
|
||||
const QString &clangVersion,
|
||||
const QString &clangResourceDirectory)
|
||||
: m_projectPart(projectPart)
|
||||
, m_useSystemHeader(useSystemHeader)
|
||||
, m_useBuiltInHeaderPathsAndDefines(useBuiltInHeaderPathsAndDefines)
|
||||
, m_useToolchainMacros(useToolchainMacros)
|
||||
, m_useTweakedHeaderPaths(useTweakedHeaderPaths)
|
||||
, m_useLanguageDefines(useLanguageDefines)
|
||||
, m_clangVersion(clangVersion)
|
||||
, m_clangResourceDirectory(clangResourceDirectory)
|
||||
@@ -279,7 +281,7 @@ static int includeIndexForResourceDirectory(const QStringList &options, bool isM
|
||||
|
||||
void CompilerOptionsBuilder::insertWrappedQtHeaders()
|
||||
{
|
||||
if (m_useBuiltInHeaderPathsAndDefines == UseBuiltin::No)
|
||||
if (m_useTweakedHeaderPaths == UseTweakedHeaderPaths::No)
|
||||
return;
|
||||
|
||||
QStringList wrappedQtHeaders;
|
||||
@@ -343,7 +345,7 @@ void CompilerOptionsBuilder::addHeaderPathOptions()
|
||||
m_options.append(includes);
|
||||
m_options.append(systemIncludes);
|
||||
|
||||
if (m_useBuiltInHeaderPathsAndDefines == UseBuiltin::No)
|
||||
if (m_useTweakedHeaderPaths == UseTweakedHeaderPaths::No)
|
||||
return;
|
||||
|
||||
// Exclude all built-in includes except Clang resource directory.
|
||||
@@ -391,7 +393,7 @@ void CompilerOptionsBuilder::addPrecompiledHeaderOptions(UsePrecompiledHeaders u
|
||||
|
||||
void CompilerOptionsBuilder::addToolchainAndProjectMacros()
|
||||
{
|
||||
if (m_useBuiltInHeaderPathsAndDefines == UseBuiltin::Yes)
|
||||
if (m_useToolchainMacros == UseToolchainMacros::Yes)
|
||||
addMacros(m_projectPart.toolChainMacros);
|
||||
addMacros(m_projectPart.projectMacros);
|
||||
}
|
||||
@@ -673,7 +675,7 @@ void CompilerOptionsBuilder::addToolchainFlags()
|
||||
// In case of MSVC we need builtin clang defines to correctly handle clang includes
|
||||
if (m_projectPart.toolchainType != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID
|
||||
&& m_projectPart.toolchainType != ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID) {
|
||||
if (m_useBuiltInHeaderPathsAndDefines == UseBuiltin::Yes)
|
||||
if (m_useToolchainMacros == UseToolchainMacros::Yes)
|
||||
add("-undef");
|
||||
else
|
||||
add("-fPIC");
|
||||
|
@@ -33,7 +33,8 @@ namespace CppTools {
|
||||
|
||||
enum class UsePrecompiledHeaders : char { Yes, No };
|
||||
enum class UseSystemHeader : char { Yes, No };
|
||||
enum class UseBuiltin : char { Yes, No };
|
||||
enum class UseTweakedHeaderPaths : char { Yes, No };
|
||||
enum class UseToolchainMacros : char { Yes, No };
|
||||
enum class UseLanguageDefines : char { Yes, No };
|
||||
|
||||
class CPPTOOLS_EXPORT CompilerOptionsBuilder
|
||||
@@ -41,7 +42,8 @@ class CPPTOOLS_EXPORT CompilerOptionsBuilder
|
||||
public:
|
||||
CompilerOptionsBuilder(const ProjectPart &projectPart,
|
||||
UseSystemHeader useSystemHeader = UseSystemHeader::No,
|
||||
UseBuiltin useBuiltInHeaderPathsAndDefines = UseBuiltin::Yes,
|
||||
UseToolchainMacros useToolchainMacros = UseToolchainMacros::Yes,
|
||||
UseTweakedHeaderPaths useTweakedHeaderPaths = UseTweakedHeaderPaths::Yes,
|
||||
UseLanguageDefines useLanguageDefines = UseLanguageDefines::No,
|
||||
const QString &clangVersion = QString(),
|
||||
const QString &clangResourceDirectory = QString());
|
||||
@@ -85,7 +87,8 @@ private:
|
||||
const ProjectPart &m_projectPart;
|
||||
|
||||
const UseSystemHeader m_useSystemHeader;
|
||||
const UseBuiltin m_useBuiltInHeaderPathsAndDefines;
|
||||
const UseToolchainMacros m_useToolchainMacros;
|
||||
const UseTweakedHeaderPaths m_useTweakedHeaderPaths;
|
||||
const UseLanguageDefines m_useLanguageDefines;
|
||||
|
||||
const QString m_clangVersion;
|
||||
|
@@ -89,7 +89,8 @@ TEST_F(CompilerOptionsBuilder, AddToolchainAndProjectMacrosWithoutSkipingLanguag
|
||||
{
|
||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
||||
CppTools::UseSystemHeader::No,
|
||||
CppTools::UseBuiltin::Yes,
|
||||
CppTools::UseToolchainMacros::Yes,
|
||||
CppTools::UseTweakedHeaderPaths::Yes,
|
||||
CppTools::UseLanguageDefines::Yes};
|
||||
|
||||
compilerOptionsBuilder.addToolchainAndProjectMacros();
|
||||
@@ -147,7 +148,8 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersPath)
|
||||
{
|
||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
|
||||
CppTools::UseSystemHeader::No,
|
||||
CppTools::UseBuiltin::Yes,
|
||||
CppTools::UseToolchainMacros::Yes,
|
||||
CppTools::UseTweakedHeaderPaths::Yes,
|
||||
CppTools::UseLanguageDefines::No,
|
||||
"7.0.0",
|
||||
"");
|
||||
@@ -176,7 +178,8 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderMacOs)
|
||||
projectPart.headerPaths.append(defaultPaths);
|
||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
|
||||
CppTools::UseSystemHeader::No,
|
||||
CppTools::UseBuiltin::Yes,
|
||||
CppTools::UseToolchainMacros::Yes,
|
||||
CppTools::UseTweakedHeaderPaths::Yes,
|
||||
CppTools::UseLanguageDefines::No,
|
||||
"7.0.0",
|
||||
"");
|
||||
@@ -210,7 +213,8 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderLinux)
|
||||
projectPart.toolChainTargetTriple = "x86_64-linux-gnu";
|
||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
|
||||
CppTools::UseSystemHeader::No,
|
||||
CppTools::UseBuiltin::Yes,
|
||||
CppTools::UseToolchainMacros::Yes,
|
||||
CppTools::UseTweakedHeaderPaths::Yes,
|
||||
CppTools::UseLanguageDefines::No,
|
||||
"7.0.0",
|
||||
"");
|
||||
@@ -240,7 +244,8 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderNoVersion)
|
||||
projectPart.toolChainTargetTriple = "x86_64-w64-windows-gnu";
|
||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
|
||||
CppTools::UseSystemHeader::No,
|
||||
CppTools::UseBuiltin::Yes,
|
||||
CppTools::UseToolchainMacros::Yes,
|
||||
CppTools::UseTweakedHeaderPaths::Yes,
|
||||
CppTools::UseLanguageDefines::No,
|
||||
"7.0.0",
|
||||
"");
|
||||
@@ -277,7 +282,8 @@ TEST_F(CompilerOptionsBuilder, ClangHeadersAndCppIncludesPathsOrderAndroidClang)
|
||||
projectPart.toolChainTargetTriple = "i686-linux-android";
|
||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder(projectPart,
|
||||
CppTools::UseSystemHeader::No,
|
||||
CppTools::UseBuiltin::Yes,
|
||||
CppTools::UseToolchainMacros::Yes,
|
||||
CppTools::UseTweakedHeaderPaths::Yes,
|
||||
CppTools::UseLanguageDefines::No,
|
||||
"7.0.0",
|
||||
"");
|
||||
|
Reference in New Issue
Block a user