Mac impl progress
This commit is contained in:
@@ -544,7 +544,7 @@ String MacPlatform::GetExecutableFilePath()
|
|||||||
uint32 size = PATH_MAX;
|
uint32 size = PATH_MAX;
|
||||||
String result;
|
String result;
|
||||||
if (_NSGetExecutablePath(buf, &size) == 0)
|
if (_NSGetExecutablePath(buf, &size) == 0)
|
||||||
result.SetUTF8(buf, size);
|
result.SetUTF8(buf, StringUtils::Length(buf));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
Source/ThirdParty/mono-2.0/mono.Build.cs
vendored
4
Source/ThirdParty/mono-2.0/mono.Build.cs
vendored
@@ -92,8 +92,8 @@ public class mono : DepsModule
|
|||||||
break;
|
break;
|
||||||
case TargetPlatform.Mac:
|
case TargetPlatform.Mac:
|
||||||
options.PublicDefinitions.Add("USE_MONO_DYNAMIC_LIB");
|
options.PublicDefinitions.Add("USE_MONO_DYNAMIC_LIB");
|
||||||
options.DependencyFiles.Add(Path.Combine(depsRoot, "libmonosgen-2.0.dylib"));
|
options.DependencyFiles.Add(Path.Combine(depsRoot, "libmonosgen-2.0.1.dylib"));
|
||||||
options.Libraries.Add(Path.Combine(depsRoot, "libmonosgen-2.0.dylib"));
|
options.Libraries.Add(Path.Combine(depsRoot, "libmonosgen-2.0.1.dylib"));
|
||||||
break;
|
break;
|
||||||
default: throw new InvalidPlatformException(options.Platform.Target);
|
default: throw new InvalidPlatformException(options.Platform.Target);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ namespace Flax.Deploy
|
|||||||
switch (Platform.BuildPlatform.Target)
|
switch (Platform.BuildPlatform.Target)
|
||||||
{
|
{
|
||||||
case TargetPlatform.Linux:
|
case TargetPlatform.Linux:
|
||||||
|
case TargetPlatform.Mac:
|
||||||
{
|
{
|
||||||
// Use msbuild from Mono
|
// Use msbuild from Mono
|
||||||
toolPath = UnixPlatform.Which("msbuild");
|
toolPath = UnixPlatform.Which("msbuild");
|
||||||
@@ -111,6 +112,7 @@ namespace Flax.Deploy
|
|||||||
switch (Platform.BuildPlatform.Target)
|
switch (Platform.BuildPlatform.Target)
|
||||||
{
|
{
|
||||||
case TargetPlatform.Linux:
|
case TargetPlatform.Linux:
|
||||||
|
case TargetPlatform.Mac:
|
||||||
{
|
{
|
||||||
// Use csc from Mono
|
// Use csc from Mono
|
||||||
toolPath = UnixPlatform.Which("csc");
|
toolPath = UnixPlatform.Which("csc");
|
||||||
|
|||||||
@@ -461,6 +461,13 @@ namespace Flax.Deps.Dependencies
|
|||||||
Utilities.WriteFileIfChanged(mCorePath, contents);
|
Utilities.WriteFileIfChanged(mCorePath, contents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DeployDylib(string srcPath, string dstFolder)
|
||||||
|
{
|
||||||
|
var dstPath = Path.Combine(dstFolder, Path.GetFileName(srcPath));
|
||||||
|
Utilities.FileCopy(srcPath, dstPath);
|
||||||
|
MacPlatform.FixInstallNameId(dstPath);
|
||||||
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override void Build(BuildOptions options)
|
public override void Build(BuildOptions options)
|
||||||
{
|
{
|
||||||
@@ -568,6 +575,8 @@ namespace Flax.Deps.Dependencies
|
|||||||
var dstMonoEditorLibs = Path.Combine(options.PlatformsFolder, "Editor", platform.ToString(), "Mono", "lib", "mono");
|
var dstMonoEditorLibs = Path.Combine(options.PlatformsFolder, "Editor", platform.ToString(), "Mono", "lib", "mono");
|
||||||
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5"), Path.Combine(dstMonoLibs, "4.5"), false, true, "*.dll");
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5"), Path.Combine(dstMonoLibs, "4.5"), false, true, "*.dll");
|
||||||
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5"), Path.Combine(dstMonoEditorLibs, "4.5"), false, true, "*.dll");
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5"), Path.Combine(dstMonoEditorLibs, "4.5"), false, true, "*.dll");
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "gac"), Path.Combine(dstMonoLibs, "gac"), true, true, "*.dll");
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "gac"), Path.Combine(dstMonoEditorLibs, "gac"), true, true, "*.dll");
|
||||||
Utilities.FileCopy(Path.Combine(srcMonoLibs, "4.5", "csc.exe"), Path.Combine(dstMonoEditorLibs, "4.5", "csc.exe"), true);
|
Utilities.FileCopy(Path.Combine(srcMonoLibs, "4.5", "csc.exe"), Path.Combine(dstMonoEditorLibs, "4.5", "csc.exe"), true);
|
||||||
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5", "Facades"), Path.Combine(dstMonoEditorLibs, "4.5", "Facades"), false, true, "*.dll");
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5", "Facades"), Path.Combine(dstMonoEditorLibs, "4.5", "Facades"), false, true, "*.dll");
|
||||||
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5-api"), Path.Combine(dstMonoEditorLibs, "4.5-api"), false, true, "*.dll");
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5-api"), Path.Combine(dstMonoEditorLibs, "4.5-api"), false, true, "*.dll");
|
||||||
@@ -730,6 +739,44 @@ namespace Flax.Deps.Dependencies
|
|||||||
var buildDir = Path.Combine(root, "build-mac");
|
var buildDir = Path.Combine(root, "build-mac");
|
||||||
|
|
||||||
// Build mono
|
// Build mono
|
||||||
|
//SetupDirectory(buildDir, true);
|
||||||
|
var archName = "x86_64-apple-darwin18";
|
||||||
|
Utilities.Run(Path.Combine(root, "autogen.sh"), string.Format("--host={0} --prefix={1} {2}", archName, buildDir, string.Join(" ", monoOptions)), null, root);
|
||||||
|
Utilities.Run("make", null, null, root, Utilities.RunOptions.None);
|
||||||
|
Utilities.Run("make", "install", null, root, Utilities.RunOptions.None);
|
||||||
|
|
||||||
|
// Deploy binaries
|
||||||
|
var depsFolder = GetThirdPartyFolder(options, platform, TargetArchitecture.x64);
|
||||||
|
Directory.CreateDirectory(depsFolder);
|
||||||
|
DeployDylib(Path.Combine(buildDir, "lib", "libmonosgen-2.0.1.dylib"), depsFolder);
|
||||||
|
var gameLibOutput = Path.Combine(options.PlatformsFolder, "Mac", "Binaries", "Mono", "lib");
|
||||||
|
Directory.CreateDirectory(gameLibOutput);
|
||||||
|
DeployDylib(Path.Combine(buildDir, "lib", "libMonoPosixHelper.dylib"), gameLibOutput);
|
||||||
|
DeployDylib(Path.Combine(buildDir, "lib", "libmono-btls-shared.dylib"), gameLibOutput);
|
||||||
|
DeployDylib(Path.Combine(buildDir, "lib", "libmono-native.dylib"), gameLibOutput);
|
||||||
|
var editorLibOutput = Path.Combine(options.PlatformsFolder, "Editor", "Mac", "Mono", "lib");
|
||||||
|
Directory.CreateDirectory(editorLibOutput);
|
||||||
|
DeployDylib(Path.Combine(buildDir, "lib", "libMonoPosixHelper.dylib"), editorLibOutput);
|
||||||
|
DeployDylib(Path.Combine(buildDir, "lib", "libmono-btls-shared.dylib"), editorLibOutput);
|
||||||
|
DeployDylib(Path.Combine(buildDir, "lib", "libmono-native.dylib"), editorLibOutput);
|
||||||
|
var editoBinOutput = Path.Combine(options.PlatformsFolder, "Editor", "Mac", "Mono", "bin");
|
||||||
|
Directory.CreateDirectory(editoBinOutput);
|
||||||
|
Utilities.FileCopy(Path.Combine(buildDir, "bin", "mono-sgen"), Path.Combine(editoBinOutput, "mono"));
|
||||||
|
Utilities.Run("strip", "mono", null, editoBinOutput, Utilities.RunOptions.None);
|
||||||
|
var srcMonoLibs = Path.Combine(buildDir, "lib", "mono");
|
||||||
|
var dstMonoLibs = Path.Combine(options.PlatformsFolder, platform.ToString(), "Binaries", "Mono", "lib", "mono");
|
||||||
|
var dstMonoEditorLibs = Path.Combine(options.PlatformsFolder, "Editor", platform.ToString(), "Mono", "lib", "mono");
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5"), Path.Combine(dstMonoLibs, "4.5"), false, true, "*.dll");
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5"), Path.Combine(dstMonoEditorLibs, "4.5"), false, true, "*.dll");
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "gac"), Path.Combine(dstMonoLibs, "gac"), true, true, "*.dll");
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "gac"), Path.Combine(dstMonoEditorLibs, "gac"), true, true, "*.dll");
|
||||||
|
Utilities.FileCopy(Path.Combine(srcMonoLibs, "4.5", "csc.exe"), Path.Combine(dstMonoEditorLibs, "4.5", "csc.exe"), true);
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5", "Facades"), Path.Combine(dstMonoEditorLibs, "4.5", "Facades"), false, true, "*.dll");
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "4.5-api"), Path.Combine(dstMonoEditorLibs, "4.5-api"), false, true, "*.dll");
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "xbuild", "14.0"), Path.Combine(dstMonoEditorLibs, "xbuild", "14.0"), true, true);
|
||||||
|
Utilities.DirectoryCopy(Path.Combine(srcMonoLibs, "xbuild-frameworks", ".NETFramework", "v4.5"), Path.Combine(dstMonoEditorLibs, "xbuild-frameworks", ".NETFramework", "v4.5"), true, true);
|
||||||
|
Utilities.FilesDelete(dstMonoLibs, "*.pdb", true);
|
||||||
|
Utilities.FilesDelete(dstMonoEditorLibs, "*.pdb", true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user