diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 943bae30c11..b365cf6c66a 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -119,9 +119,17 @@ def configure(env): ## Architecture - is64 = sys.maxsize > 2**32 + # Cross-compilation + # TODO: Support cross-compilation on architectures other than x86. + host_is_64_bit = sys.maxsize > 2**32 if env["bits"] == "default": - env["bits"] = "64" if is64 else "32" + env["bits"] = "64" if host_is_64_bit else "32" + if host_is_64_bit and (env["bits"] == "32" or env["arch"] == "x86"): + env.Append(CCFLAGS=["-m32"]) + env.Append(LINKFLAGS=["-m32"]) + elif not host_is_64_bit and (env["bits"] == "64" or env["arch"] == "x86_64"): + env.Append(CCFLAGS=["-m64"]) + env.Append(LINKFLAGS=["-m64"]) machines = { "riscv64": "rv64", @@ -432,21 +440,11 @@ def configure(env): else: env.Append(LINKFLAGS=["-T", "platform/x11/pck_embed.legacy.ld"]) - ## Cross-compilation - - if is64 and env["bits"] == "32": - env.Append(CCFLAGS=["-m32"]) - env.Append(LINKFLAGS=["-m32", "-L/usr/lib/i386-linux-gnu"]) - elif not is64 and env["bits"] == "64": - env.Append(CCFLAGS=["-m64"]) - env.Append(LINKFLAGS=["-m64", "-L/usr/lib/i686-linux-gnu"]) - # Link those statically for portability if env["use_static_cpp"]: env.Append(LINKFLAGS=["-static-libgcc", "-static-libstdc++"]) if env["use_llvm"] and platform.system() != "FreeBSD": env["LINKCOM"] = env["LINKCOM"] + " -l:libatomic.a" - else: if env["use_llvm"] and platform.system() != "FreeBSD": env.Append(LIBS=["atomic"])