Clang: Stop forwarding toolchain macros

...for clang code model and clang tools use case.

This means that compiler detection code will see clang now instead of
the toolchain that is configured in the kit. While providing the
toolchain macros worked fine for the general case, it always was
problematic for compiler detection code.

By not providing the toolchain macros we are more close to the real
clang compiler invocation. That is, rely on clang to do the right thing.

Allow to go back to old behavior with QTC_CLANG_USE_TOOLCHAIN_MACROS=1
as this will be useful checking differences for debugging.

Fixes: QTCREATORBUG-19543
Change-Id: I23ffd761d83f35ca1a22269c3ef07a2dc62358bd
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Nikolai Kosjar
2018-12-05 09:23:29 +01:00
committed by Ivan Donchevskii
parent 134bb1b8b6
commit f6b8302efd
4 changed files with 10 additions and 12 deletions

View File

@@ -69,7 +69,7 @@ public:
LibClangOptionsBuilder(const ProjectPart &projectPart)
: CompilerOptionsBuilder(projectPart,
UseSystemHeader::No,
UseToolchainMacros::Yes,
useToolChainMacros(),
UseTweakedHeaderPaths::Yes,
UseLanguageDefines::No,
QString(CLANG_VERSION),

View File

@@ -193,7 +193,7 @@ static AnalyzeUnits toAnalyzeUnits(const FileInfos &fileInfos)
for (const FileInfo &fileInfo : fileInfos) {
CompilerOptionsBuilder optionsBuilder(*fileInfo.projectPart,
UseSystemHeader::No,
UseToolchainMacros::Yes,
CompilerOptionsBuilder::useToolChainMacros(),
UseTweakedHeaderPaths::Yes,
UseLanguageDefines::No,
QString(CLANG_VERSION),

View File

@@ -117,7 +117,6 @@ QStringList CompilerOptionsBuilder::build(ProjectFile::Kind fileKind,
undefineClangVersionMacrosForMsvc();
undefineCppLanguageFeatureMacrosForMsvc2015();
addDefineFunctionMacrosMsvc();
addBoostWorkaroundMacros();
addToolchainFlags();
addPrecompiledHeaderOptions(usePrecompiledHeaders);
@@ -596,14 +595,6 @@ void CompilerOptionsBuilder::addDefineFunctionMacrosMsvc()
}
}
void CompilerOptionsBuilder::addBoostWorkaroundMacros()
{
if (m_projectPart.toolchainType != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID
&& m_projectPart.toolchainType != ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID) {
addMacros({{"BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING", "(39, 1, true, \"T = \")"}});
}
}
QString CompilerOptionsBuilder::includeDirOptionForPath(const QString &path) const
{
if (m_useSystemHeader == UseSystemHeader::No
@@ -707,4 +698,10 @@ void CompilerOptionsBuilder::undefineClangVersionMacrosForMsvc()
}
}
UseToolchainMacros CompilerOptionsBuilder::useToolChainMacros()
{
return qEnvironmentVariableIntValue("QTC_CLANG_USE_TOOLCHAIN_MACROS") ? UseToolchainMacros::Yes
: UseToolchainMacros::No;
}
} // namespace CppTools

View File

@@ -69,7 +69,6 @@ public:
void addMsvcCompatibilityVersion();
void undefineCppLanguageFeatureMacrosForMsvc2015();
void addDefineFunctionMacrosMsvc();
void addBoostWorkaroundMacros();
void addProjectConfigFileInclude();
void undefineClangVersionMacrosForMsvc();
@@ -78,6 +77,8 @@ public:
void add(const QString &option) { m_options.append(option); }
virtual void addExtraOptions() {}
static UseToolchainMacros useToolChainMacros();
private:
bool excludeDefineDirective(const ProjectExplorer::Macro &macro) const;
QString includeDirOptionForPath(const QString &path) const;