From 6aa6463f7511987acc4c1a10365efccdd7644af1 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 18 Jan 2024 15:11:31 +0100 Subject: [PATCH] WebAssembly: Hide WebAssemblyToolchain class definition in .cpp Change-Id: I7fbff6ff6e48b5b971b490a058b5406d011411b0 Reviewed-by: Jarek Kobus --- src/plugins/webassembly/webassemblydevice.cpp | 2 +- .../webassembly/webassemblysettings.cpp | 4 +- .../webassembly/webassemblytoolchain.cpp | 89 ++++++++++--------- .../webassembly/webassemblytoolchain.h | 19 +--- 4 files changed, 54 insertions(+), 60 deletions(-) diff --git a/src/plugins/webassembly/webassemblydevice.cpp b/src/plugins/webassembly/webassemblydevice.cpp index 37b042124b0..e3f798b207d 100644 --- a/src/plugins/webassembly/webassemblydevice.cpp +++ b/src/plugins/webassembly/webassemblydevice.cpp @@ -55,7 +55,7 @@ static void askUserAboutEmSdkSetup() if (!ICore::infoBar()->canInfoBeAdded(setupWebAssemblyEmSdk) || !WebAssemblyQtVersion::isQtVersionInstalled() - || WebAssemblyToolChain::areToolChainsRegistered()) + || areToolChainsRegistered()) return; InfoBarEntry info(setupWebAssemblyEmSdk, diff --git a/src/plugins/webassembly/webassemblysettings.cpp b/src/plugins/webassembly/webassemblysettings.cpp index 88a7cc22130..d09919a05bb 100644 --- a/src/plugins/webassembly/webassemblysettings.cpp +++ b/src/plugins/webassembly/webassemblysettings.cpp @@ -59,7 +59,7 @@ WebAssemblySettings::WebAssemblySettings() emSdk.setExpectedKind(Utils::PathChooser::ExistingDirectory); emSdk.setDefaultValue(QDir::homePath()); - connect(this, &Utils::AspectContainer::applied, &WebAssemblyToolChain::registerToolChains); + connect(this, &Utils::AspectContainer::applied, ®isterToolChains); setLayouter([this] { auto instruction = new QLabel( @@ -138,7 +138,7 @@ void WebAssemblySettings::updateStatus() if (sdkValid) { const QVersionNumber sdkVersion = WebAssemblyEmSdk::version(newEmSdk); - const QVersionNumber minVersion = WebAssemblyToolChain::minimumSupportedEmSdkVersion(); + const QVersionNumber minVersion = minimumSupportedEmSdkVersion(); const bool versionTooLow = sdkVersion < minVersion; m_emSdkVersionDisplay->setType(versionTooLow ? InfoLabel::NotOk : InfoLabel::Ok); auto bold = [](const QString &text) { return QString("" + text + ""); }; diff --git a/src/plugins/webassembly/webassemblytoolchain.cpp b/src/plugins/webassembly/webassemblytoolchain.cpp index 212876e92e3..b7f62be7a42 100644 --- a/src/plugins/webassembly/webassemblytoolchain.cpp +++ b/src/plugins/webassembly/webassemblytoolchain.cpp @@ -9,6 +9,7 @@ #include "webassemblytr.h" #include +#include #include #include #include @@ -22,6 +23,8 @@ #include #include +#include + using namespace ProjectExplorer; using namespace QtSupport; using namespace Utils; @@ -39,6 +42,12 @@ static const Abi &toolChainAbi() return abi; } +const QVersionNumber &minimumSupportedEmSdkVersion() +{ + static const QVersionNumber number(1, 39); + return number; +} + static void addRegisteredMinGWToEnvironment(Environment &env) { if (!ToolchainManager::isLoaded()) { @@ -54,49 +63,47 @@ static void addRegisteredMinGWToEnvironment(Environment &env) env.appendOrSetPath(toolChain->compilerCommand().parentDir()); } -void WebAssemblyToolChain::addToEnvironment(Environment &env) const +class WebAssemblyToolChain final : public GccToolchain { - const FilePath emSdk = settings().emSdk(); - WebAssemblyEmSdk::addToEnvironment(emSdk, env); - if (env.osType() == OsTypeWindows) - addRegisteredMinGWToEnvironment(env); // qmake based builds require [mingw32-]make.exe -} - -WebAssemblyToolChain::WebAssemblyToolChain() : - GccToolchain(Constants::WEBASSEMBLY_TOOLCHAIN_TYPEID) -{ - setSupportedAbis({toolChainAbi()}); - setTargetAbi(toolChainAbi()); - setTypeDisplayName(Tr::tr("Emscripten Compiler")); -} - -FilePath WebAssemblyToolChain::makeCommand(const Environment &environment) const -{ - // Diverged duplicate of ClangToolChain::makeCommand and MingwToolChain::makeCommand - const QStringList makes = environment.osType() == OsTypeWindows - ? QStringList({"mingw32-make.exe", "make.exe"}) - : QStringList({"make"}); - - FilePath tmp; - for (const QString &make : makes) { - tmp = environment.searchInPath(make); - if (!tmp.isEmpty()) - return tmp; +public: + WebAssemblyToolChain() : + GccToolchain(Constants::WEBASSEMBLY_TOOLCHAIN_TYPEID) + { + setSupportedAbis({toolChainAbi()}); + setTargetAbi(toolChainAbi()); + setTypeDisplayName(Tr::tr("Emscripten Compiler")); } - return FilePath::fromString(makes.first()); -} -bool WebAssemblyToolChain::isValid() const -{ - return GccToolchain::isValid() - && QVersionNumber::fromString(version()) >= minimumSupportedEmSdkVersion(); -} + void addToEnvironment(Environment &env) const final + { + const FilePath emSdk = settings().emSdk(); + WebAssemblyEmSdk::addToEnvironment(emSdk, env); + if (env.osType() == OsTypeWindows) + addRegisteredMinGWToEnvironment(env); // qmake based builds require [mingw32-]make.exe + } -const QVersionNumber &WebAssemblyToolChain::minimumSupportedEmSdkVersion() -{ - static const QVersionNumber number(1, 39); - return number; -} + FilePath makeCommand(const Environment &environment) const final + { + // Diverged duplicate of ClangToolChain::makeCommand and MingwToolChain::makeCommand + const QStringList makes = environment.osType() == OsTypeWindows + ? QStringList({"mingw32-make.exe", "make.exe"}) + : QStringList({"make"}); + + FilePath tmp; + for (const QString &make : makes) { + tmp = environment.searchInPath(make); + if (!tmp.isEmpty()) + return tmp; + } + return FilePath::fromString(makes.first()); + } + + bool isValid() const final + { + return GccToolchain::isValid() + && QVersionNumber::fromString(version()) >= minimumSupportedEmSdkVersion(); + } +}; static Toolchains doAutoDetect(const ToolchainDetector &detector) { @@ -136,7 +143,7 @@ static Toolchains doAutoDetect(const ToolchainDetector &detector) return result; } -void WebAssemblyToolChain::registerToolChains() +void registerToolChains() { // Remove old toolchains for (Toolchain *tc : ToolchainManager::findToolchains(toolChainAbi())) { @@ -162,7 +169,7 @@ void WebAssemblyToolChain::registerToolChains() } } -bool WebAssemblyToolChain::areToolChainsRegistered() +bool areToolChainsRegistered() { return !ToolchainManager::findToolchains(toolChainAbi()).isEmpty(); } diff --git a/src/plugins/webassembly/webassemblytoolchain.h b/src/plugins/webassembly/webassemblytoolchain.h index fca0249c1d4..14dd2209002 100644 --- a/src/plugins/webassembly/webassemblytoolchain.h +++ b/src/plugins/webassembly/webassemblytoolchain.h @@ -3,26 +3,13 @@ #pragma once -#include - #include namespace WebAssembly::Internal { -class WebAssemblyToolChain final : public ProjectExplorer::GccToolchain -{ -public: - WebAssemblyToolChain(); - - void addToEnvironment(Utils::Environment &env) const override; - - Utils::FilePath makeCommand(const Utils::Environment &environment) const override; - bool isValid() const override; - - static const QVersionNumber &minimumSupportedEmSdkVersion(); - static void registerToolChains(); - static bool areToolChainsRegistered(); -}; +const QVersionNumber &minimumSupportedEmSdkVersion(); +void registerToolChains(); +bool areToolChainsRegistered(); void setupWebAssemblyToolchain();