Add shared libraries support for Web to load game module (C++)

This commit is contained in:
Wojtek Figat
2026-02-17 15:07:11 +01:00
parent 34bddc7db1
commit 9772227146
5 changed files with 49 additions and 7 deletions

View File

@@ -70,7 +70,7 @@ bool WebPlatformTools::OnPostProcess(CookingData& data)
{
Array<String> files;
FileSystem::DirectoryGetFiles(files, data.OriginalOutputPath, TEXT("*"), DirectorySearchOption::TopDirectoryOnly);
for (String& file : files)
for (const String& file : files)
{
if (file.EndsWith(TEXT(".js")))
{
@@ -89,6 +89,19 @@ bool WebPlatformTools::OnPostProcess(CookingData& data)
return true;
}
// Move .wasm assemblies into the data files in order for dlopen to work (blocking)
{
Array<String> files;
FileSystem::DirectoryGetFiles(files, data.OriginalOutputPath, TEXT("*.wasm"), DirectorySearchOption::AllDirectories);
StringView gameWasm = StringUtils::GetFileNameWithoutExtension(gameJs);
for (const String& file : files)
{
if (StringUtils::GetFileNameWithoutExtension(file) == gameWasm)
continue; // Skip the main game module
FileSystem::MoveFile(data.DataOutputPath / StringUtils::GetFileName(file), file, true);
}
}
// Pack data files into a single file using Emscripten's file_packager tool
{
CreateProcessSettings procSettings;