Fixes for macOS game building

This commit is contained in:
Wojtek Figat
2023-03-30 18:38:58 +02:00
parent aeb0bf700f
commit 4528cce71c
6 changed files with 34 additions and 11 deletions

View File

@@ -95,8 +95,8 @@ bool CompileScriptsStep::DeployBinaries(CookingData& data, const String& path, c
Scripting::ProcessBuildInfoPath(e.NativePath, projectFolderPath);
Scripting::ProcessBuildInfoPath(e.ManagedPath, projectFolderPath);
e.NativePath = StringUtils::GetFileName(e.NativePath);
e.ManagedPath = StringUtils::GetFileName(e.ManagedPath);
e.NativePath = String(StringUtils::GetFileName(e.NativePath));
e.ManagedPath = String(StringUtils::GetFileName(e.ManagedPath));
LOG(Info, "Collecting binary module {0}", e.Name);
}

View File

@@ -124,7 +124,7 @@ bool DeployDataStep::Perform(CookingData& data)
}
for (String& version : versions)
{
version = StringUtils::GetFileName(version);
version = String(StringUtils::GetFileName(version));
if (!version.StartsWith(TEXT("7.")))
version.Clear();
}

View File

@@ -109,6 +109,8 @@ namespace FlaxEditor.Windows
switch (BuildPlatform)
{
case BuildPlatform.MacOSx64:
case BuildPlatform.MacOSARM64:
case BuildPlatform.iOSARM64:
IsSupported = false;
break;
default:
@@ -130,6 +132,7 @@ namespace FlaxEditor.Windows
switch (BuildPlatform)
{
case BuildPlatform.MacOSx64:
case BuildPlatform.MacOSARM64:
case BuildPlatform.AndroidARM64:
IsSupported = true;
break;
@@ -228,7 +231,17 @@ namespace FlaxEditor.Windows
class Mac : Platform
{
protected override BuildPlatform BuildPlatform => BuildPlatform.MacOSx64;
public enum Archs
{
[EditorDisplay(null, "arm64")]
ARM64,
[EditorDisplay(null, "x64")]
x64,
}
public Archs CPU = Archs.ARM64;
protected override BuildPlatform BuildPlatform => CPU == Archs.ARM64 ? BuildPlatform.MacOSARM64 : BuildPlatform.MacOSx64;
}
class Editor : CustomEditor

View File

@@ -360,7 +360,7 @@ String MacPlatform::GetMainDirectory()
if (path.EndsWith(TEXT("/Contents/MacOS")))
{
// If running from executable in a package, go up to the Contents
path = StringUtils::GetDirectoryName(path);
path = path.Left(path.Length() - 6);
}
return path;
}

View File

@@ -278,11 +278,18 @@ bool MCore::LoadEngine()
CallStaticMethodByName<void>(TEXT("Init"));
#ifdef MCORE_MAIN_MODULE_NAME
// MCORE_MAIN_MODULE_NAME define is injected by Scripting.Build.cs on platforms that use separate shared library for engine symbols
const StringAnsi flaxLibraryPath(Platform::GetMainDirectory() / TEXT(MACRO_TO_STR(MCORE_MAIN_MODULE_NAME)));
::String flaxLibraryPath(Platform::GetMainDirectory() / TEXT(MACRO_TO_STR(MCORE_MAIN_MODULE_NAME)));
#else
const StringAnsi flaxLibraryPath(Platform::GetExecutableFilePath());
::String flaxLibraryPath(Platform::GetExecutableFilePath());
#endif
RegisterNativeLibrary("FlaxEngine", flaxLibraryPath.Get());
#if PLATFORM_MAC
// On some platforms all native binaries are side-by-side with the app in a different folder
if (!FileSystem::FileExists(flaxLibraryPath))
{
flaxLibraryPath = ::String(StringUtils::GetDirectoryName(Platform::GetExecutableFilePath())) / StringUtils::GetFileName(flaxLibraryPath);
}
#endif
RegisterNativeLibrary("FlaxEngine", StringAnsi(flaxLibraryPath).Get());
MRootDomain = New<MDomain>("Root");
MDomains.Add(MRootDomain);

View File

@@ -345,9 +345,12 @@ bool Scripting::LoadBinaryModules(const String& path, const String& projectFolde
{
// Load library
const auto startTime = DateTime::NowUTC();
#if PLATFORM_ANDROID
// On Android all native binaries are side-by-side with the app
nativePath = String(StringUtils::GetDirectoryName(Platform::GetExecutableFilePath())) / StringUtils::GetFileName(nativePath);
#if PLATFORM_ANDROID || PLATFORM_MAC
// On some platforms all native binaries are side-by-side with the app in a different folder
if (!FileSystem::FileExists(nativePath))
{
nativePath = String(StringUtils::GetDirectoryName(Platform::GetExecutableFilePath())) / StringUtils::GetFileName(nativePath);
}
#endif
auto library = Platform::LoadLibrary(nativePath.Get());
if (!library)