C++ support: Consider project-specific target triple

... before creating project parts.
Otherwise we can get wrong includes and defines from the compiler.
Amends 9c86e6746f.
Also do not add -m32 or -m64 for non-x86 targets.

Task-number: QTCREATORBUG-25615
Change-Id: I02da9251c77d45fc8827990a2d59c3ae2c262591
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Christian Kandeler
2022-10-07 18:00:36 +02:00
parent 183dfb48a7
commit 679a726330
11 changed files with 43 additions and 23 deletions

View File

@@ -137,6 +137,27 @@ ProjectPart::ConstPtr ProjectInfoGenerator::createProjectPart(
tcInfo = m_projectUpdateInfo.cxxToolChainInfo;
}
QString explicitTarget;
if (!tcInfo.targetTripleIsAuthoritative) {
for (int i = 0; i < flags.commandLineFlags.size(); ++i) {
const QString &flag = flags.commandLineFlags.at(i);
if (flag == "-target") {
if (i + 1 < flags.commandLineFlags.size())
explicitTarget = flags.commandLineFlags.at(i + 1);
break;
} else if (flag.startsWith("--target=")) {
explicitTarget = flag.mid(9);
break;
}
}
}
if (!explicitTarget.isEmpty()) {
tcInfo.targetTriple = explicitTarget;
tcInfo.targetTripleIsAuthoritative = true;
if (const Abi abi = Abi::fromString(tcInfo.targetTriple); abi.isValid())
tcInfo.abi = abi;
}
return ProjectPart::create(projectFilePath, rawProjectPart, partName, projectFiles,
language, languageExtensions, flags, tcInfo);
}