Skip to content

Commit

Permalink
Merge pull request godotengine#48102 from akien-mga/3.x-no-lightmappe…
Browse files Browse the repository at this point in the history
…r-if-no-embree

lightmapper: Disable build if raycast module can't build
  • Loading branch information
akien-mga authored Apr 22, 2021
2 parents b1898c7 + a2c68d9 commit 3768a37
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
25 changes: 24 additions & 1 deletion modules/lightmapper_cpu/config.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
def can_build(env, platform):
return env["tools"] and env["module_raycast_enabled"]
if not env["tools"] or not env["module_raycast_enabled"]:
return False

# Depends on raycast module (embree), but we can't have access to the result of
# `can_build()` for that module, so we need to duplicate that code as a short-term
# solution.

# Embree requires at least SSE2 to be available, so 32-bit and ARM64 builds are
# not supported.
# It's also only relevant for tools build and desktop platforms,
# as doing lightmap generation on Android or HTML5 would be a bit far-fetched.
supported_platform = platform in ["x11", "osx", "windows", "server"]
supported_bits = env["bits"] == "64"
supported_arch = env["arch"] != "arm64"

# 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
# bits-handling code.
from platform import machine

if platform == "x11" and machine() != "x86_64":
supported_arch = False

return supported_platform and supported_bits and supported_arch


def configure(env):
Expand Down
5 changes: 4 additions & 1 deletion platform/x11/detect.py
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,10 @@ def configure(env):
if not env["builtin_pcre2"]:
env.ParseConfig("pkg-config libpcre2-32 --cflags --libs")

if not env["builtin_embree"]:
# Embree is only compatible with x86_64. Yet another unreliable hack that will break
# cross-compilation, this will really need to be handle better. Thankfully only affects
# people who disable builtin_embree (likely distro packagers).
if not env["builtin_embree"] and (is64 and platform.machine() == "x86_64"):
# No pkgconfig file so far, hardcode expected lib name.
env.Append(LIBS=["embree3"])

Expand Down

0 comments on commit 3768a37

Please sign in to comment.