1
0
Fork 0

Add support for PowerPC family

(cherry picked from commit 3a84a64d2f)
This commit is contained in:
Daniel Kolesa 2021-11-01 21:23:18 +01:00 committed by Rémi Verschelde
parent 7f91cbc397
commit 5fe78a3a25
No known key found for this signature in database
GPG Key ID: C3336907360768E1
4 changed files with 28 additions and 6 deletions

View File

@ -673,6 +673,15 @@ bool OS::has_feature(const String &p_feature) {
if (p_feature == "riscv") { if (p_feature == "riscv") {
return true; return true;
} }
#elif defined(__powerpc__)
#if defined(__powerpc64__)
if (p_feature == "ppc64") {
return true;
}
#endif
if (p_feature == "ppc") {
return true;
}
#endif #endif
if (_check_internal_feature_support(p_feature)) { if (_check_internal_feature_support(p_feature)) {

View File

@ -6,8 +6,13 @@ def can_build(env, platform):
# would be a bit far-fetched. # would be a bit far-fetched.
# Note: oneDNN doesn't support ARM64, OIDN needs updating to the latest version # Note: oneDNN doesn't support ARM64, OIDN needs updating to the latest version
supported_platform = platform in ["x11", "osx", "windows", "server"] supported_platform = platform in ["x11", "osx", "windows", "server"]
supported_bits = env["bits"] == "64" supported_arch = env["bits"] == "64"
supported_arch = env["arch"] != "arm64" and not env["arch"].startswith("rv") if env["arch"] == "arm64":
supported_arch = False
if env["arch"].startswith("ppc"):
supported_arch = False
if env["arch"].startswith("rv"):
supported_arch = False
# Hack to disable on Linux arm64. This won't work well for cross-compilation (checks # Hack to disable on Linux arm64. This won't work well for cross-compilation (checks
# host, not target) and would need a more thorough fix by refactoring our arch and # host, not target) and would need a more thorough fix by refactoring our arch and
@ -17,7 +22,7 @@ def can_build(env, platform):
if platform == "x11" and machine() != "x86_64": if platform == "x11" and machine() != "x86_64":
supported_arch = False supported_arch = False
return env["tools"] and supported_platform and supported_bits and supported_arch return env["tools"] and supported_platform and supported_arch
def configure(env): def configure(env):

View File

@ -3,7 +3,7 @@ def can_build(env, platform):
return False return False
# Depends on Embree library, which only supports x86_64 and aarch64. # Depends on Embree library, which only supports x86_64 and aarch64.
if env["arch"].startswith("rv"): if env["arch"].startswith("rv") or env["arch"].startswith("ppc"):
return False return False
if platform == "android": if platform == "android":

View File

@ -118,8 +118,16 @@ def configure(env):
if env["bits"] == "default": if env["bits"] == "default":
env["bits"] = "64" if is64 else "32" env["bits"] = "64" if is64 else "32"
if env["arch"] == "" and platform.machine() == "riscv64": machines = {
env["arch"] = "rv64" "riscv64": "rv64",
"ppc64le": "ppc64",
"ppc64": "ppc64",
"ppcle": "ppc",
"ppc": "ppc",
}
if env["arch"] == "" and platform.machine() in machines:
env["arch"] = machines[platform.machine()]
if env["arch"] == "rv64": if env["arch"] == "rv64":
# G = General-purpose extensions, C = Compression extension (very common). # G = General-purpose extensions, C = Compression extension (very common).