// 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"; } } }