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();