Files
FlaxEngine/Source/Tools/Flax.Build/Platforms/Web/WebPlatform.cs
2026-02-16 16:11:00 +01:00

69 lines
2.2 KiB
C#

// Copyright (c) Wojciech Figat. All rights reserved.
using Flax.Build.Projects;
namespace Flax.Build.Platforms
{
/// <summary>
/// The build platform for Web with Emscripten.
/// </summary>
/// <seealso cref="Platform" />
public sealed class WebPlatform : Platform, IProjectCustomizer
{
/// <inheritdoc />
public override TargetPlatform Target => TargetPlatform.Web;
/// <inheritdoc />
public override bool HasRequiredSDKsInstalled { get; }
/// <inheritdoc />
public override bool HasSharedLibrarySupport => false;
/// <inheritdoc />
public override bool HasModularBuildSupport => false;
/// <inheritdoc />
public override bool HasDynamicCodeExecutionSupport => false;
/// <inheritdoc />
public override string ExecutableFileExtension => ".html";
/// <inheritdoc />
public override string SharedLibraryFileExtension => ".wasm";
/// <inheritdoc />
public override string StaticLibraryFileExtension => ".a";
/// <inheritdoc />
public override string ProgramDatabaseFileExtension => string.Empty;
/// <summary>
/// Initializes a new instance of the <see cref="Flax.Build.Platforms.WebPlatform"/> class.
/// </summary>
public WebPlatform()
{
HasRequiredSDKsInstalled = EmscriptenSdk.Instance.IsValid;
}
/// <inheritdoc />
protected override Toolchain CreateToolchain(TargetArchitecture architecture)
{
if (architecture != TargetArchitecture.x86)
throw new InvalidArchitectureException(architecture, "Web is compiled into WebAssembly and doesn't have specific architecture but is mocked as x86.");
return new WebToolchain(this, architecture);
}
/// <inheritdoc />
void IProjectCustomizer.GetSolutionArchitectureName(TargetArchitecture architecture, ref string name)
{
name = "Web";
}
/// <inheritdoc />
void IProjectCustomizer.GetProjectArchitectureName(Project project, Platform platform, TargetArchitecture architecture, ref string name)
{
name = "Win32";
}
}
}