WebAssembly: Hide WebAssemblyToolchain class definition in .cpp

Change-Id: I7fbff6ff6e48b5b971b490a058b5406d011411b0
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2024-01-18 15:11:31 +01:00
parent a92a4aad9a
commit 6aa6463f75
4 changed files with 54 additions and 60 deletions

View File

@@ -55,7 +55,7 @@ static void askUserAboutEmSdkSetup()
if (!ICore::infoBar()->canInfoBeAdded(setupWebAssemblyEmSdk)
|| !WebAssemblyQtVersion::isQtVersionInstalled()
|| WebAssemblyToolChain::areToolChainsRegistered())
|| areToolChainsRegistered())
return;
InfoBarEntry info(setupWebAssemblyEmSdk,

View File

@@ -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, &registerToolChains);
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("<b>" + text + "</b>"); };

View File

@@ -9,6 +9,7 @@
#include "webassemblytr.h"
#include <projectexplorer/devicesupport/devicemanager.h>
#include <projectexplorer/gcctoolchain.h>
#include <projectexplorer/kitmanager.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectmacro.h>
@@ -22,6 +23,8 @@
#include <utils/hostosinfo.h>
#include <utils/qtcassert.h>
#include <QVersionNumber>
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,15 +63,10 @@ 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() :
public:
WebAssemblyToolChain() :
GccToolchain(Constants::WEBASSEMBLY_TOOLCHAIN_TYPEID)
{
setSupportedAbis({toolChainAbi()});
@@ -70,7 +74,15 @@ WebAssemblyToolChain::WebAssemblyToolChain() :
setTypeDisplayName(Tr::tr("Emscripten Compiler"));
}
FilePath WebAssemblyToolChain::makeCommand(const Environment &environment) const
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
}
FilePath makeCommand(const Environment &environment) const final
{
// Diverged duplicate of ClangToolChain::makeCommand and MingwToolChain::makeCommand
const QStringList makes = environment.osType() == OsTypeWindows
@@ -86,17 +98,12 @@ FilePath WebAssemblyToolChain::makeCommand(const Environment &environment) const
return FilePath::fromString(makes.first());
}
bool WebAssemblyToolChain::isValid() const
bool isValid() const final
{
return GccToolchain::isValid()
&& QVersionNumber::fromString(version()) >= minimumSupportedEmSdkVersion();
}
const QVersionNumber &WebAssemblyToolChain::minimumSupportedEmSdkVersion()
{
static const QVersionNumber number(1, 39);
return number;
}
};
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();
}

View File

@@ -3,26 +3,13 @@
#pragma once
#include <projectexplorer/gcctoolchain.h>
#include <QVersionNumber>
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();