Android: De-noise setup code

Change-Id: I0b0f1102dc144a2223e69b953d14a38bdefd9d98
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2024-09-18 09:34:37 +02:00
parent 0bdfe776ec
commit 0e1489a9f9

View File

@@ -24,7 +24,10 @@ namespace Android::Internal {
static Q_LOGGING_CATEGORY(androidTCLog, "qtc.android.toolchainmanagement", QtWarningMsg); static Q_LOGGING_CATEGORY(androidTCLog, "qtc.android.toolchainmanagement", QtWarningMsg);
using ClangTargetsType = QHash<QString, Abi>; using ClangTargetsType = QHash<QString, Abi>;
Q_GLOBAL_STATIC_WITH_ARGS(ClangTargetsType, ClangTargets, ({
const ClangTargetsType &clangTargets()
{
static const ClangTargetsType targets {
{"arm-linux-androideabi", {"arm-linux-androideabi",
Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 32)}, Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 32)},
{"i686-linux-android", {"i686-linux-android",
@@ -32,8 +35,10 @@ Q_GLOBAL_STATIC_WITH_ARGS(ClangTargetsType, ClangTargets, ({
{"x86_64-linux-android", {"x86_64-linux-android",
Abi(Abi::X86Architecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)}, Abi(Abi::X86Architecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)},
{"aarch64-linux-android", {"aarch64-linux-android",
Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)}} Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)}
)); };
return targets;
}
static Toolchain *findToolchain(FilePath &compilerPath, Id lang, const QString &target, static Toolchain *findToolchain(FilePath &compilerPath, Id lang, const QString &target,
const ToolchainList &alreadyKnown) const ToolchainList &alreadyKnown)
@@ -41,7 +46,7 @@ static Toolchain *findToolchain(FilePath &compilerPath, Id lang, const QString &
Toolchain *tc = Utils::findOrDefault(alreadyKnown, [target, compilerPath, lang](Toolchain *tc) { Toolchain *tc = Utils::findOrDefault(alreadyKnown, [target, compilerPath, lang](Toolchain *tc) {
return tc->typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID return tc->typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID
&& tc->language() == lang && tc->language() == lang
&& tc->targetAbi() == ClangTargets->value(target) && tc->targetAbi() == clangTargets().value(target)
&& tc->compilerCommand() == compilerPath; && tc->compilerCommand() == compilerPath;
}); });
return tc; return tc;
@@ -124,7 +129,7 @@ FilePath AndroidToolchain::makeCommand(const Environment &env) const
GccToolchain::DetectedAbisResult AndroidToolchain::detectSupportedAbis() const GccToolchain::DetectedAbisResult AndroidToolchain::detectSupportedAbis() const
{ {
for (auto itr = ClangTargets->constBegin(); itr != ClangTargets->constEnd(); ++itr) { for (auto itr = clangTargets().constBegin(); itr != clangTargets().constEnd(); ++itr) {
if (itr.value() == targetAbi()) if (itr.value() == targetAbi())
return GccToolchain::DetectedAbisResult({targetAbi()}, itr.key()); return GccToolchain::DetectedAbisResult({targetAbi()}, itr.key());
} }
@@ -186,8 +191,8 @@ ToolchainList autodetectToolchainsFromNdks(
continue; continue;
} }
auto targetItr = ClangTargets->constBegin(); auto targetItr = clangTargets().constBegin();
while (targetItr != ClangTargets->constEnd()) { while (targetItr != clangTargets().constEnd()) {
const Abi &abi = targetItr.value(); const Abi &abi = targetItr.value();
const QString target = targetItr.key(); const QString target = targetItr.key();
Toolchain *tc = findToolchain(compilerCommand, lang, target, alreadyKnown); Toolchain *tc = findToolchain(compilerCommand, lang, target, alreadyKnown);
@@ -208,7 +213,7 @@ ToolchainList autodetectToolchainsFromNdks(
atc->setNdkLocation(ndkLocation); atc->setNdkLocation(ndkLocation);
atc->setOriginalTargetTriple(target); atc->setOriginalTargetTriple(target);
atc->setLanguage(lang); atc->setLanguage(lang);
atc->setTargetAbi(ClangTargets->value(target)); atc->setTargetAbi(clangTargets().value(target));
atc->setPlatformCodeGenFlags({"-target", target}); atc->setPlatformCodeGenFlags({"-target", target});
atc->setPlatformLinkerFlags({"-target", target}); atc->setPlatformLinkerFlags({"-target", target});
atc->setDisplayName(displayName); atc->setDisplayName(displayName);