Android: Code cosmetics in ToolChain

Avoid a global static that doesn't buy much; some namespace changes.

Change-Id: I80d0f5c0e6c7a77e91930ec198c39080b6c7404a
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2022-09-27 08:32:08 +02:00
parent 6ff6fe3b0e
commit 52e8b83bd5

View File

@@ -11,19 +11,15 @@
#include <utils/environment.h> #include <utils/environment.h>
#include <QFileInfo>
#include <QLoggingCategory> #include <QLoggingCategory>
using namespace ProjectExplorer;
namespace { using namespace Utils;
static Q_LOGGING_CATEGORY(androidTCLog, "qtc.android.toolchainmanagement", QtWarningMsg);
}
namespace Android { namespace Android {
namespace Internal { namespace Internal {
using namespace ProjectExplorer; static Q_LOGGING_CATEGORY(androidTCLog, "qtc.android.toolchainmanagement", QtWarningMsg);
using namespace Utils;
using ClangTargetsType = QHash<QString, Abi>; using ClangTargetsType = QHash<QString, Abi>;
Q_GLOBAL_STATIC_WITH_ARGS(ClangTargetsType, ClangTargets, ({ Q_GLOBAL_STATIC_WITH_ARGS(ClangTargetsType, ClangTargets, ({
@@ -37,11 +33,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(ClangTargetsType, ClangTargets, ({
Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)}} Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)}}
)); ));
Q_GLOBAL_STATIC_WITH_ARGS(QList<Utils::Id>, LanguageIds, ( static ToolChain *findToolChain(FilePath &compilerPath, Id lang, const QString &target,
{ProjectExplorer::Constants::CXX_LANGUAGE_ID,
ProjectExplorer::Constants::C_LANGUAGE_ID}))
static ToolChain *findToolChain(Utils::FilePath &compilerPath, Utils::Id lang, const QString &target,
const ToolChainList &alreadyKnown) const ToolChainList &alreadyKnown)
{ {
ToolChain *tc = Utils::findOrDefault(alreadyKnown, [target, compilerPath, lang](ToolChain *tc) { ToolChain *tc = Utils::findOrDefault(alreadyKnown, [target, compilerPath, lang](ToolChain *tc) {
@@ -59,12 +51,12 @@ AndroidToolChain::AndroidToolChain()
setTypeDisplayName(AndroidToolChain::tr("Android Clang")); setTypeDisplayName(AndroidToolChain::tr("Android Clang"));
} }
Utils::FilePath AndroidToolChain::ndkLocation() const FilePath AndroidToolChain::ndkLocation() const
{ {
return m_ndkLocation; return m_ndkLocation;
} }
void AndroidToolChain::setNdkLocation(const Utils::FilePath &ndkLocation) void AndroidToolChain::setNdkLocation(const FilePath &ndkLocation)
{ {
m_ndkLocation = ndkLocation; m_ndkLocation = ndkLocation;
} }
@@ -96,7 +88,7 @@ void AndroidToolChain::addToEnvironment(Environment &env) const
{ {
const AndroidConfig &config = AndroidConfigurations::currentConfig(); const AndroidConfig &config = AndroidConfigurations::currentConfig();
env.set(QLatin1String("ANDROID_NDK_HOST"), config.toolchainHostFromNdk(m_ndkLocation)); env.set(QLatin1String("ANDROID_NDK_HOST"), config.toolchainHostFromNdk(m_ndkLocation));
const Utils::FilePath javaHome = config.openJDKLocation(); const FilePath javaHome = config.openJDKLocation();
if (javaHome.exists()) { if (javaHome.exists()) {
env.set(Constants::JAVA_HOME_ENV_VAR, javaHome.toUserOutput()); env.set(Constants::JAVA_HOME_ENV_VAR, javaHome.toUserOutput());
const FilePath javaBin = javaHome.pathAppended("bin"); const FilePath javaBin = javaHome.pathAppended("bin");
@@ -175,19 +167,24 @@ static FilePaths uniqueNdksForCurrentQtVersions()
ToolChainList AndroidToolChainFactory::autodetectToolChains(const ToolChainList &alreadyKnown) ToolChainList AndroidToolChainFactory::autodetectToolChains(const ToolChainList &alreadyKnown)
{ {
const QList<Utils::FilePath> uniqueNdks = uniqueNdksForCurrentQtVersions(); const QList<FilePath> uniqueNdks = uniqueNdksForCurrentQtVersions();
return autodetectToolChainsFromNdks(alreadyKnown, uniqueNdks); return autodetectToolChainsFromNdks(alreadyKnown, uniqueNdks);
} }
ToolChainList AndroidToolChainFactory::autodetectToolChainsFromNdks( ToolChainList AndroidToolChainFactory::autodetectToolChainsFromNdks(
const ToolChainList &alreadyKnown, const ToolChainList &alreadyKnown,
const QList<Utils::FilePath> &ndkLocations, const QList<FilePath> &ndkLocations,
const bool isCustom) const bool isCustom)
{ {
QList<ToolChain *> result; QList<ToolChain *> result;
const AndroidConfig config = AndroidConfigurations::currentConfig(); const AndroidConfig config = AndroidConfigurations::currentConfig();
for (const Utils::FilePath &ndkLocation : ndkLocations) { const Id LanguageIds[] {
ProjectExplorer::Constants::CXX_LANGUAGE_ID,
ProjectExplorer::Constants::C_LANGUAGE_ID
};
for (const FilePath &ndkLocation : ndkLocations) {
FilePath clangPath = config.clangPathFromNdk(ndkLocation); FilePath clangPath = config.clangPathFromNdk(ndkLocation);
if (!clangPath.exists()) { if (!clangPath.exists()) {
qCDebug(androidTCLog) << "Clang toolchains detection fails. Can not find Clang" qCDebug(androidTCLog) << "Clang toolchains detection fails. Can not find Clang"
@@ -195,7 +192,7 @@ ToolChainList AndroidToolChainFactory::autodetectToolChainsFromNdks(
continue; continue;
} }
for (const Utils::Id &lang : *LanguageIds) { for (const Id &lang : LanguageIds) {
FilePath compilerCommand = clangPath; FilePath compilerCommand = clangPath;
if (lang == ProjectExplorer::Constants::CXX_LANGUAGE_ID) if (lang == ProjectExplorer::Constants::CXX_LANGUAGE_ID)
compilerCommand = clangPlusPlusPath(clangPath); compilerCommand = clangPlusPlusPath(clangPath);