From c91c20997448a4bb6462d259a6ead413e942c1e6 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 13 Mar 2026 09:55:49 +0100 Subject: [PATCH] Build `msdfgen` for Web and Consoles --- .../Binaries/ThirdParty/x86/libmsdfgen-core.a | 3 +++ Source/ThirdParty/msdfgen/msdfgen.Build.cs | 11 +++++++---- .../Flax.Build/Deps/Dependencies/msdfgen.cs | 16 ++++++++++++++-- Source/Tools/Flax.Build/Deps/Dependency.cs | 10 ++++++++-- 4 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 Source/Platforms/Web/Binaries/ThirdParty/x86/libmsdfgen-core.a diff --git a/Source/Platforms/Web/Binaries/ThirdParty/x86/libmsdfgen-core.a b/Source/Platforms/Web/Binaries/ThirdParty/x86/libmsdfgen-core.a new file mode 100644 index 000000000..68dce2ab6 --- /dev/null +++ b/Source/Platforms/Web/Binaries/ThirdParty/x86/libmsdfgen-core.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9e42e6c78f2f5ec2deaa9bb4aed66e2017f6e0a94d21cdebad88602ed8c8501 +size 306234 diff --git a/Source/ThirdParty/msdfgen/msdfgen.Build.cs b/Source/ThirdParty/msdfgen/msdfgen.Build.cs index c5f008ac9..cf9a4813d 100644 --- a/Source/ThirdParty/msdfgen/msdfgen.Build.cs +++ b/Source/ThirdParty/msdfgen/msdfgen.Build.cs @@ -7,7 +7,7 @@ using Flax.Build.NativeCpp; /// /// https://github.com/Chlumsky/msdfgen /// -public class msdfgen : DepsModule +public class msdfgen : EngineDepsModule { /// public override void Init() @@ -16,9 +16,6 @@ public class msdfgen : DepsModule LicenseType = LicenseTypes.MIT; LicenseFilePath = "LICENSE.txt"; - - // Merge third-party modules into engine binary - BinaryModuleName = "FlaxEngine"; } /// @@ -30,12 +27,18 @@ public class msdfgen : DepsModule switch (options.Platform.Target) { case TargetPlatform.Windows: + case TargetPlatform.XboxOne: + case TargetPlatform.XboxScarlett: options.OutputFiles.Add(Path.Combine(depsRoot, "msdfgen-core.lib")); break; case TargetPlatform.Linux: case TargetPlatform.Mac: case TargetPlatform.iOS: case TargetPlatform.Android: + case TargetPlatform.Switch: + case TargetPlatform.PS4: + case TargetPlatform.PS5: + case TargetPlatform.Web: options.OutputFiles.Add(Path.Combine(depsRoot, "libmsdfgen-core.a")); break; default: throw new InvalidPlatformException(options.Platform.Target); diff --git a/Source/Tools/Flax.Build/Deps/Dependencies/msdfgen.cs b/Source/Tools/Flax.Build/Deps/Dependencies/msdfgen.cs index 45322f815..026293eb4 100644 --- a/Source/Tools/Flax.Build/Deps/Dependencies/msdfgen.cs +++ b/Source/Tools/Flax.Build/Deps/Dependencies/msdfgen.cs @@ -24,6 +24,12 @@ namespace Flax.Deps.Dependencies { TargetPlatform.Windows, TargetPlatform.Android, + TargetPlatform.XboxOne, + TargetPlatform.XboxScarlett, + TargetPlatform.Switch, + TargetPlatform.PS4, + TargetPlatform.PS5, + TargetPlatform.Web, }; case TargetPlatform.Linux: return new[] @@ -51,6 +57,7 @@ namespace Flax.Deps.Dependencies case TargetPlatform.Windows: return new[] { + TargetArchitecture.x86, TargetArchitecture.x64, TargetArchitecture.ARM64, }; @@ -83,12 +90,17 @@ namespace Flax.Deps.Dependencies }; var args = new string[] { + "-DMSDFGEN_BUILD_STANDALONE=OFF", "-DMSDFGEN_USE_VCPKG=OFF", "-DMSDFGEN_CORE_ONLY=ON", "-DMSDFGEN_DYNAMIC_RUNTIME=ON", "-DMSDFGEN_USE_SKIA=OFF", + "-DMSDFGEN_INSTALL=ON", + "-DMSDFGEN_USE_SKIA=OFF", + "-DMSDFGEN_DISABLE_SVG=ON", + "-DMSDFGEN_DISABLE_PNG=ON", + "-DMSDFGEN_DYNAMIC_RUNTIME=ON", "-DBUILD_SHARED_LIBS=OFF", - "-DMSDFGEN_INSTALL=ON" }; // Get the source @@ -130,7 +142,7 @@ namespace Flax.Deps.Dependencies break; } - RunCmake(root, platform, architecture, $"-B\"{buildDir}\" " + cmakeArgs, envVars); + RunCmake(root, platform, architecture, $"-B\"{buildDir}\" -Wno-dev " + cmakeArgs, envVars); BuildCmake(buildDir); Utilities.Run("cmake", $"--install {buildDir} --prefix {installDir} --config {configuration}", null, root, Utilities.RunOptions.DefaultTool); Utilities.FileCopy(Path.Combine(installDir, "lib", libName), Path.Combine(depsFolder, libName)); diff --git a/Source/Tools/Flax.Build/Deps/Dependency.cs b/Source/Tools/Flax.Build/Deps/Dependency.cs index dc799702d..11e719ea1 100644 --- a/Source/Tools/Flax.Build/Deps/Dependency.cs +++ b/Source/Tools/Flax.Build/Deps/Dependency.cs @@ -519,10 +519,16 @@ namespace Flax.Deps break; } case TargetPlatform.PS4: - cmdLine = "CMakeLists.txt -DCMAKE_GENERATOR_PLATFORM=ORBIS -G \"Visual Studio 15 2017\""; + if (VisualStudioInstance.HasIDE(VisualStudioVersion.VisualStudio2017)) + cmdLine = "CMakeLists.txt -DCMAKE_GENERATOR_PLATFORM=ORBIS -G \"Visual Studio 15 2017\""; + else + cmdLine = string.Format("CMakeLists.txt -G \"Ninja\" -DCMAKE_TOOLCHAIN_FILE=\"{0}/Source/Platforms/PS4/Binaries/Data/nethost/src/ps4/PS4Toolchain.txt\"", Globals.EngineRoot); break; case TargetPlatform.PS5: - cmdLine = "CMakeLists.txt -DCMAKE_GENERATOR_PLATFORM=PROSPERO -G \"Visual Studio 16 2019\""; + if (VisualStudioInstance.HasIDE(VisualStudioVersion.VisualStudio2019)) + cmdLine = "CMakeLists.txt -DCMAKE_GENERATOR_PLATFORM=PROSPERO -G \"Visual Studio 16 2019\""; + else + cmdLine = string.Format("CMakeLists.txt -G \"Ninja\" -DCMAKE_TOOLCHAIN_FILE=\"{0}/Source/Platforms/PS5/Binaries/Data/nethost/src/ps5/PS5Toolchain.txt\"", Globals.EngineRoot); break; case TargetPlatform.Linux: cmdLine = "CMakeLists.txt";