Support ARM64 architecture under Windows

This commit is contained in:
2024-05-09 20:05:49 +03:00
parent 6dacf9e1f1
commit d2d2297dc7
11 changed files with 154 additions and 36 deletions

View File

@@ -82,7 +82,7 @@ namespace Flax.Build.Platforms
var outputType = project.OutputType ?? configuration.Target.OutputType;
if (outputType != TargetOutputType.Executable && configuration.Name.StartsWith("Editor."))
{
var editorFolder = configuration.Architecture == TargetArchitecture.x64 ? "Win64" : "Win32";
var editorFolder = configuration.Architecture == TargetArchitecture.x64 ? "Win64" : (configuration.Architecture == TargetArchitecture.ARM64 ? "ARM64" : "Win32");
vcUserFileContent.AppendLine(string.Format(" <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='{0}'\">", configuration.Name));
vcUserFileContent.AppendLine(string.Format(" <LocalDebuggerCommand>{0}\\FlaxEditor.exe</LocalDebuggerCommand>", Path.Combine(Globals.EngineRoot, "Binaries", "Editor", editorFolder, configuration.ConfigurationName)));
vcUserFileContent.AppendLine(" <LocalDebuggerCommandArguments>-project \"$(SolutionDir)\" -skipCompile</LocalDebuggerCommandArguments>");
@@ -108,6 +108,9 @@ namespace Flax.Build.Platforms
case TargetArchitecture.x64:
name = "Win64";
break;
case TargetArchitecture.ARM64:
name = "ARM64";
break;
}
}
}

View File

@@ -74,6 +74,12 @@ namespace Flax.Build.Platforms
options.LinkEnv.InputLibraries.Add("ole32.lib");
options.LinkEnv.InputLibraries.Add("oleaut32.lib");
options.LinkEnv.InputLibraries.Add("delayimp.lib");
if (options.Architecture == TargetArchitecture.ARM64)
{
options.CompileEnv.PreprocessorDefinitions.Add("USE_SOFT_INTRINSICS");
options.LinkEnv.InputLibraries.Add("softintrin.lib");
}
}
/// <inheritdoc />

View File

@@ -405,7 +405,7 @@ namespace Flax.Build.Platforms
options.CompileEnv.PreprocessorDefinitions.Add("_CRT_SECURE_NO_DEPRECATE");
options.CompileEnv.PreprocessorDefinitions.Add("_CRT_SECURE_NO_WARNINGS");
options.CompileEnv.PreprocessorDefinitions.Add("_WINDOWS");
if (Architecture == TargetArchitecture.x64)
if (Architecture == TargetArchitecture.x64 || Architecture == TargetArchitecture.ARM64)
options.CompileEnv.PreprocessorDefinitions.Add("WIN64");
}
@@ -790,9 +790,11 @@ namespace Flax.Build.Platforms
args.Add("/MACHINE:x64");
break;
case TargetArchitecture.ARM:
case TargetArchitecture.ARM64:
args.Add("/MACHINE:ARM");
break;
case TargetArchitecture.ARM64:
args.Add("/MACHINE:ARM64");
break;
default: throw new InvalidArchitectureException(Architecture);
}