Skip to content

Commit

Permalink
Add support for PowerPC family
Browse files Browse the repository at this point in the history
  • Loading branch information
q66 committed Nov 1, 2021
1 parent 96ce806 commit 3a84a64
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 4 deletions.
9 changes: 9 additions & 0 deletions core/os/os.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down
8 changes: 7 additions & 1 deletion modules/denoise/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
2 changes: 1 addition & 1 deletion modules/raycast/config.py
Original file line number Diff line number Diff line change
@@ -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":
Expand Down
12 changes: 10 additions & 2 deletions platform/linuxbsd/detect.py
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down

0 comments on commit 3a84a64

Please sign in to comment.