Selaa lähdekoodia

Add support for PowerPC family

(cherry picked from commit 3a84a64d2fd600e68ee3e54a5fbc12347e9b2f9f)
Daniel Kolesa 4 vuotta sitten
vanhempi
commit
5fe78a3a25
4 muutettua tiedostoa jossa 28 lisäystä ja 6 poistoa
  1. 9 0
      core/os/os.cpp
  2. 8 3
      modules/denoise/config.py
  3. 1 1
      modules/raycast/config.py
  4. 10 2
      platform/x11/detect.py

+ 9 - 0
core/os/os.cpp

@@ -673,6 +673,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)) {

+ 8 - 3
modules/denoise/config.py

@@ -6,8 +6,13 @@ def can_build(env, platform):
     # would be a bit far-fetched.
     # Note: oneDNN doesn't support ARM64, OIDN needs updating to the latest version
     supported_platform = platform in ["x11", "osx", "windows", "server"]
-    supported_bits = env["bits"] == "64"
-    supported_arch = 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
 
     # 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
@@ -17,7 +22,7 @@ def can_build(env, platform):
     if platform == "x11" and machine() != "x86_64":
         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):

+ 1 - 1
modules/raycast/config.py

@@ -3,7 +3,7 @@ def can_build(env, platform):
         return False
 
     # 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":

+ 10 - 2
platform/x11/detect.py

@@ -118,8 +118,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).