diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index 6f6be511a0b..3a40ea67ac0 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -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); diff --git a/src/plugins/clangtools/clangtoolruncontrol.cpp b/src/plugins/clangtools/clangtoolruncontrol.cpp index 21895062cb4..1a01f0e3112 100644 --- a/src/plugins/clangtools/clangtoolruncontrol.cpp +++ b/src/plugins/clangtools/clangtoolruncontrol.cpp @@ -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)); diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index d5a3a53043b..349affe69fe 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -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"); diff --git a/src/plugins/cpptools/compileroptionsbuilder.h b/src/plugins/cpptools/compileroptionsbuilder.h index 9ed05be0f72..5228993ffa0 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.h +++ b/src/plugins/cpptools/compileroptionsbuilder.h @@ -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; diff --git a/tests/unit/unittest/compileroptionsbuilder-test.cpp b/tests/unit/unittest/compileroptionsbuilder-test.cpp index 042f7830273..9b8311709c9 100644 --- a/tests/unit/unittest/compileroptionsbuilder-test.cpp +++ b/tests/unit/unittest/compileroptionsbuilder-test.cpp @@ -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", "");