// Copyright (c) Wojciech Figat. All rights reserved.
using Flax.Build.Projects;
namespace Flax.Build.Platforms
{
///
/// The build platform for Web with Emscripten.
///
///
public sealed class WebPlatform : Platform, IProjectCustomizer
{
///
public override TargetPlatform Target => TargetPlatform.Web;
///
public override bool HasRequiredSDKsInstalled { get; }
///
public override bool HasSharedLibrarySupport => false;
///
public override bool HasModularBuildSupport => false;
///
public override bool HasDynamicCodeExecutionSupport => false;
///
public override string ExecutableFileExtension => ".html";
///
public override string SharedLibraryFileExtension => ".so";
///
public override string StaticLibraryFileExtension => ".a";
///
public override string ProgramDatabaseFileExtension => string.Empty;
///
/// Initializes a new instance of the class.
///
public WebPlatform()
{
HasRequiredSDKsInstalled = EmscriptenSdk.Instance.IsValid;
}
///
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);
}
///
void IProjectCustomizer.GetSolutionArchitectureName(TargetArchitecture architecture, ref string name)
{
name = "Web";
}
///
void IProjectCustomizer.GetProjectArchitectureName(Project project, Platform platform, TargetArchitecture architecture, ref string name)
{
name = "Win32";
}
}
}