summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <daniel@octaforge.org>2021-11-01 21:23:18 +0100
committerDaniel Kolesa <daniel@octaforge.org>2021-11-01 22:25:53 +0100
commit3a84a64d2fd600e68ee3e54a5fbc12347e9b2f9f (patch)
tree9cf1ede05fcc8089e49743c59fcc8b4d4f7b06b8
parent96ce806b2f2797fd27a0d40738ee5be6bc30b0aa (diff)
Add support for PowerPC family
-rw-r--r--core/os/os.cpp9
-rw-r--r--modules/denoise/config.py8
-rw-r--r--modules/raycast/config.py2
-rw-r--r--platform/linuxbsd/detect.py12
4 files changed, 27 insertions, 4 deletions
diff --git a/core/os/os.cpp b/core/os/os.cpp
index 5892f91ff3..03e251880f 100644
--- a/core/os/os.cpp
+++ b/core/os/os.cpp
@@ -440,6 +440,15 @@ bool OS::has_feature(const String &p_feature) {
if (p_feature == "riscv") {
return true;
}
+#elif defined(__powerpc__)
+#if defined(__powerpc64__)
+ if (p_feature == "ppc64") {
+ return true;
+ }
+#endif
+ if (p_feature == "ppc") {
+ return true;
+ }
#endif
if (_check_internal_feature_support(p_feature)) {
diff --git a/modules/denoise/config.py b/modules/denoise/config.py
index 6f650354cb..3aa840acb0 100644
--- a/modules/denoise/config.py
+++ b/modules/denoise/config.py
@@ -5,7 +5,13 @@ def can_build(env, platform):
# as doing lightmap generation and denoising on Android or HTML5
# would be a bit far-fetched.
desktop_platforms = ["linuxbsd", "osx", "windows"]
- supported_arch = env["bits"] == "64" and env["arch"] != "arm64" and not env["arch"].startswith("rv")
+ 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
diff --git a/modules/raycast/config.py b/modules/raycast/config.py
index 2f8bacd4ae..7e8b3e9840 100644
--- a/modules/raycast/config.py
+++ b/modules/raycast/config.py
@@ -1,6 +1,6 @@
def can_build(env, platform):
# 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
if platform == "android":
diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py
index a9e8fb64c3..07e16a982b 100644
--- a/platform/linuxbsd/detect.py
+++ b/platform/linuxbsd/detect.py
@@ -119,8 +119,16 @@ def configure(env):
if env["bits"] == "default":
env["bits"] = "64" if is64 else "32"
- if env["arch"] == "" and platform.machine() == "riscv64":
- env["arch"] = "rv64"
+ machines = {
+ "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":
# G = General-purpose extensions, C = Compression extension (very common).