Forked from
The Tor Project / Applications / Mullvad Browser
80056 commits behind, 859 commits ahead of the upstream repository.
-
Cristian Tuns authored
Backed out changeset 028a7f4e4b32 (bug 1776255) for causing Linux artifact builds bustages on central CLOSED TREE
Cristian Tuns authoredBacked out changeset 028a7f4e4b32 (bug 1776255) for causing Linux artifact builds bustages on central CLOSED TREE
ffi.configure 2.01 KiB
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
@depends(target)
def force_system_ffi(target):
# Pre-emptively move to system ffi for non-tier one platforms.
if target.cpu not in ("x86", "x86_64", "arm", "aarch64"):
return True
imply_option("--with-system-ffi", force_system_ffi, "target")
system_lib_option(
"--with-system-ffi", help="Use system libffi (located with pkgconfig)"
)
use_system_ffi = depends_if("--with-system-ffi")(lambda _: True)
system_ffi = pkg_check_modules("MOZ_FFI", "libffi > 3.0.9", when=use_system_ffi)
building_ffi = depends(system_ffi)(lambda v: v is None)
set_config("MOZ_SYSTEM_FFI", depends_if(system_ffi)(lambda _: True))
# Target selection, based on ffi/configure.ac.
@depends(target, when=building_ffi)
def ffi_target(target):
if target.cpu not in ("x86", "x86_64", "arm", "aarch64"):
die(
"Building libffi from the tree is not supported on this platform. "
"Use --with-system-ffi instead."
)
if target.cpu == "x86_64":
target_dir = "x86"
target_name = {
"WINNT": "X86_WIN64",
}.get(target.kernel, "X86_64")
elif target.cpu == "x86":
target_dir = "x86"
target_name = {
"WINNT": "X86_WIN32",
"Darwin": "X86_DARWIN",
"FreeBSD": "X86_FREEBSD",
"OpenBSD": "X86_FREEBSD",
}.get(target.kernel, "X86")
elif target.cpu == "aarch64":
target_dir = "aarch64"
target_name = {
"WINNT": "ARM_WIN64",
}.get(target.kernel, "AARCH64")
elif target.cpu == "arm":
target_dir = "arm"
target_name = "ARM"
return namespace(name=target_name, dir=target_dir)
set_config("FFI_TARGET", ffi_target.name)
set_config("FFI_TARGET_DIR", ffi_target.dir)