ProjectExplorer: Fix Clang toolchain setup on Windows

Clang toolchain in gcc mode requires mingw sysroot and target
in order to be used properly on Windows.
Requires Qt >= 5.12 to work properly (it has the required mkspec).

Change-Id: I4e5a734c699ac98740c0d50560aa7b69751ae58c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Ivan Donchevskii
2019-01-07 12:15:40 +01:00
parent d22a6d29e8
commit ce0b671d0a
9 changed files with 358 additions and 21 deletions

View File

@@ -145,8 +145,14 @@ QMakeStepConfig QMakeStep::deducedArguments() const
ProjectExplorer::ToolChain *tc
= ProjectExplorer::ToolChainKitInformation::toolChain(kit, ProjectExplorer::Constants::CXX_LANGUAGE_ID);
ProjectExplorer::Abi targetAbi;
if (tc)
if (tc) {
targetAbi = tc->targetAbi();
if (HostOsInfo::isWindowsHost()
&& tc->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) {
config.sysRoot = ProjectExplorer::SysRootKitInformation::sysRoot(kit).toString();
config.targetTriple = tc->originalTargetTriple();
}
}
BaseQtVersion *version = QtKitInformation::qtVersion(target()->kit());
@@ -902,5 +908,16 @@ QStringList QMakeStepConfig::toArguments() const
if (separateDebugInfo)
arguments << "CONFIG+=force_debug_info" << "CONFIG+=separate_debug_info";
if (!sysRoot.isEmpty()) {
arguments << ("QMAKE_CFLAGS+=--sysroot=\"" + sysRoot + "\"");
arguments << ("QMAKE_CXXFLAGS+=--sysroot=\"" + sysRoot + "\"");
arguments << ("QMAKE_LFLAGS+=--sysroot=\"" + sysRoot + "\"");
if (!targetTriple.isEmpty()) {
arguments << ("QMAKE_CFLAGS+=--target=" + targetTriple);
arguments << ("QMAKE_CXXFLAGS+=--target=" + targetTriple);
arguments << ("QMAKE_LFLAGS+=--target=" + targetTriple);
}
}
return arguments;
}