Unify bits, arch, and android_arch into env["arch"]
Fully removes the `bits` option and adapts the code that relied on it. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
This commit is contained in:
committed by
Rémi Verschelde
parent
8916949b50
commit
27b0f18275
@@ -5,14 +5,7 @@ def can_build(env, platform):
|
||||
# as doing lightmap generation and denoising on Android or HTML5
|
||||
# would be a bit far-fetched.
|
||||
desktop_platforms = ["linuxbsd", "macos", "windows"]
|
||||
supported_arch = env["bits"] == "64"
|
||||
if env["arch"] == "arm64":
|
||||
supported_arch = False
|
||||
if env["arch"].startswith("ppc"):
|
||||
supported_arch = False
|
||||
if env["arch"].startswith("rv"):
|
||||
supported_arch = False
|
||||
return env["tools"] and platform in desktop_platforms and supported_arch
|
||||
return env["tools"] and platform in desktop_platforms and env["arch"] == "x86_64"
|
||||
|
||||
|
||||
def configure(env):
|
||||
|
||||
@@ -18,7 +18,7 @@ def configure(env, env_mono):
|
||||
# is_android = env["platform"] == "android"
|
||||
# is_javascript = env["platform"] == "javascript"
|
||||
# is_ios = env["platform"] == "ios"
|
||||
# is_ios_sim = is_ios and env["arch"] in ["x86", "x86_64"]
|
||||
# is_ios_sim = is_ios and env["arch"] in ["x86_32", "x86_64"]
|
||||
|
||||
tools_enabled = env["tools"]
|
||||
|
||||
@@ -128,26 +128,22 @@ def find_dotnet_app_host_dir(env):
|
||||
|
||||
|
||||
def determine_runtime_identifier(env):
|
||||
# The keys are Godot's names, the values are the Microsoft's names.
|
||||
# List: https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
|
||||
names_map = {
|
||||
"windows": "win",
|
||||
"macos": "osx",
|
||||
"linuxbsd": "linux",
|
||||
}
|
||||
|
||||
# .NET RID architectures: x86, x64, arm, or arm64
|
||||
|
||||
arch_map = {
|
||||
"x86_64": "x64",
|
||||
"x86_32": "x86",
|
||||
"arm64": "arm64",
|
||||
"arm32": "arm",
|
||||
}
|
||||
platform = env["platform"]
|
||||
|
||||
if is_desktop(platform):
|
||||
if env["arch"] in ["arm", "arm32"]:
|
||||
rid = "arm"
|
||||
elif env["arch"] == "arm64":
|
||||
rid = "arm64"
|
||||
else:
|
||||
bits = env["bits"]
|
||||
bit_arch_map = {"64": "x64", "32": "x86"}
|
||||
rid = bit_arch_map[bits]
|
||||
return "%s-%s" % (names_map[platform], rid)
|
||||
return "%s-%s" % (names_map[platform], arch_map[env["arch"]])
|
||||
else:
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
@@ -75,8 +75,17 @@ namespace GodotTools.Export
|
||||
}
|
||||
else
|
||||
{
|
||||
string bits = features.Contains("64") ? "64" : features.Contains("32") ? "32" : null;
|
||||
CompileAssembliesForDesktop(exporter, platform, isDebug, bits, aotOpts, aotTempDir, outputDataDir, assembliesPrepared, bclDir);
|
||||
string arch = "";
|
||||
if (features.Contains("x86_64")) {
|
||||
arch = "x86_64";
|
||||
} else if (features.Contains("x86_32")) {
|
||||
arch = "x86_32";
|
||||
} else if (features.Contains("arm64")) {
|
||||
arch = "arm64";
|
||||
} else if (features.Contains("arm32")) {
|
||||
arch = "arm32";
|
||||
}
|
||||
CompileAssembliesForDesktop(exporter, platform, isDebug, arch, aotOpts, aotTempDir, outputDataDir, assembliesPrepared, bclDir);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +121,7 @@ namespace GodotTools.Export
|
||||
}
|
||||
}
|
||||
|
||||
public static void CompileAssembliesForDesktop(ExportPlugin exporter, string platform, bool isDebug, string bits, AotOptions aotOpts, string aotTempDir, string outputDataDir, IDictionary<string, string> assemblies, string bclDir)
|
||||
public static void CompileAssembliesForDesktop(ExportPlugin exporter, string platform, bool isDebug, string arch, AotOptions aotOpts, string aotTempDir, string outputDataDir, IDictionary<string, string> assemblies, string bclDir)
|
||||
{
|
||||
foreach (var assembly in assemblies)
|
||||
{
|
||||
@@ -126,9 +135,9 @@ namespace GodotTools.Export
|
||||
string outputFileName = assemblyName + ".dll" + outputFileExtension;
|
||||
string tempOutputFilePath = Path.Combine(aotTempDir, outputFileName);
|
||||
|
||||
var compilerArgs = GetAotCompilerArgs(platform, isDebug, bits, aotOpts, assemblyPath, tempOutputFilePath);
|
||||
var compilerArgs = GetAotCompilerArgs(platform, isDebug, arch, aotOpts, assemblyPath, tempOutputFilePath);
|
||||
|
||||
string compilerDirPath = GetMonoCrossDesktopDirName(platform, bits);
|
||||
string compilerDirPath = GetMonoCrossDesktopDirName(platform, arch);
|
||||
|
||||
ExecuteCompiler(FindCrossCompiler(compilerDirPath), compilerArgs, bclDir);
|
||||
|
||||
@@ -432,9 +441,9 @@ MONO_AOT_MODE_LAST = 1000,
|
||||
|
||||
var androidToolPrefixes = new Dictionary<string, string>
|
||||
{
|
||||
["armeabi-v7a"] = "arm-linux-androideabi-",
|
||||
["arm64-v8a"] = "aarch64-linux-android-",
|
||||
["x86"] = "i686-linux-android-",
|
||||
["arm32"] = "arm-linux-androideabi-",
|
||||
["arm64"] = "aarch64-linux-android-",
|
||||
["x86_32"] = "i686-linux-android-",
|
||||
["x86_64"] = "x86_64-linux-android-"
|
||||
};
|
||||
|
||||
@@ -547,9 +556,9 @@ MONO_AOT_MODE_LAST = 1000,
|
||||
{
|
||||
var androidAbis = new[]
|
||||
{
|
||||
"armeabi-v7a",
|
||||
"arm64-v8a",
|
||||
"x86",
|
||||
"arm32",
|
||||
"arm64",
|
||||
"x86_32",
|
||||
"x86_64"
|
||||
};
|
||||
|
||||
@@ -560,9 +569,9 @@ MONO_AOT_MODE_LAST = 1000,
|
||||
{
|
||||
var abiArchs = new Dictionary<string, string>
|
||||
{
|
||||
["armeabi-v7a"] = "armv7",
|
||||
["arm64-v8a"] = "aarch64-v8a",
|
||||
["x86"] = "i686",
|
||||
["arm32"] = "armv7",
|
||||
["arm64"] = "aarch64-v8a",
|
||||
["x86_32"] = "i686",
|
||||
["x86_64"] = "x86_64"
|
||||
};
|
||||
|
||||
@@ -571,30 +580,25 @@ MONO_AOT_MODE_LAST = 1000,
|
||||
return $"{arch}-linux-android";
|
||||
}
|
||||
|
||||
private static string GetMonoCrossDesktopDirName(string platform, string bits)
|
||||
private static string GetMonoCrossDesktopDirName(string platform, string arch)
|
||||
{
|
||||
switch (platform)
|
||||
{
|
||||
case OS.Platforms.Windows:
|
||||
case OS.Platforms.UWP:
|
||||
{
|
||||
string arch = bits == "64" ? "x86_64" : "i686";
|
||||
return $"windows-{arch}";
|
||||
}
|
||||
case OS.Platforms.MacOS:
|
||||
{
|
||||
Debug.Assert(bits == null || bits == "64");
|
||||
string arch = "x86_64";
|
||||
return $"{platform}-{arch}";
|
||||
}
|
||||
case OS.Platforms.LinuxBSD:
|
||||
{
|
||||
string arch = bits == "64" ? "x86_64" : "i686";
|
||||
return $"linux-{arch}";
|
||||
}
|
||||
case OS.Platforms.Haiku:
|
||||
{
|
||||
string arch = bits == "64" ? "x86_64" : "i686";
|
||||
return $"{platform}-{arch}";
|
||||
}
|
||||
default:
|
||||
|
||||
@@ -66,7 +66,7 @@ if env["builtin_embree"]:
|
||||
env_raycast.Append(CPPDEFINES=["EMBREE_TARGET_SSE2", "EMBREE_LOWEST_ISA", "TASKING_INTERNAL", "NDEBUG"])
|
||||
|
||||
if not env.msvc:
|
||||
if env["arch"] in ["x86", "x86_64"]:
|
||||
if env["arch"] == "x86_64":
|
||||
env_raycast.Append(CPPFLAGS=["-msse2", "-mxsave"])
|
||||
|
||||
if env["platform"] == "windows":
|
||||
@@ -83,7 +83,7 @@ if env["builtin_embree"]:
|
||||
env_thirdparty.disable_warnings()
|
||||
env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
|
||||
|
||||
if not env["arch"] in ["x86", "x86_64"] or env.msvc:
|
||||
if env["arch"] == "arm64" or env.msvc:
|
||||
# Embree needs those, it will automatically use SSE2NEON in ARM
|
||||
env_thirdparty.Append(CPPDEFINES=["__SSE2__", "__SSE__"])
|
||||
|
||||
|
||||
@@ -1,18 +1,6 @@
|
||||
def can_build(env, platform):
|
||||
# Depends on Embree library, which only supports x86_64 and aarch64.
|
||||
if env["arch"].startswith("rv") or env["arch"].startswith("ppc"):
|
||||
return False
|
||||
|
||||
if platform == "android":
|
||||
return env["android_arch"] in ["arm64v8", "x86_64"]
|
||||
|
||||
if platform == "javascript":
|
||||
return False # No SIMD support yet
|
||||
|
||||
if env["bits"] == "32":
|
||||
return False
|
||||
|
||||
return True
|
||||
# Depends on Embree library, which only supports x86_64 and arm64.
|
||||
return env["arch"] in ["x86_64", "arm64"]
|
||||
|
||||
|
||||
def configure(env):
|
||||
|
||||
Reference in New Issue
Block a user