Bug 1294803 - Move MOZ_SYSTEM_FFI to moz.configure in preparation for moving libffi to our build system. r=glandium
This patch introduces a small change in behavior: we now unconditionally
require libffi > 3.0.9 when using system ffi, rather than accepting 3.0.9
when using GCC, as 3.0.10 was released 5 years ago, and should be widely
available.
MozReview-Commit-ID: DtSDPoZSPcx
--- a/build/autoconf/ffi.m4
+++ b/build/autoconf/ffi.m4
@@ -1,32 +1,12 @@
dnl This Source Code Form is subject to the terms of the Mozilla Public
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
-AC_DEFUN([MOZ_CONFIG_FFI], [
-
-MOZ_ARG_ENABLE_BOOL(system-ffi,
-[ --enable-system-ffi Use system libffi (located with pkgconfig)],
- MOZ_SYSTEM_FFI=1 )
-
-if test -n "$MOZ_SYSTEM_FFI"; then
- # Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
- # for non-GCC compilers.
- if test -z "$GNU_CC"; then
- PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
- else
- PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
- fi
-fi
-
-AC_SUBST(MOZ_SYSTEM_FFI)
-
-])
-
AC_DEFUN([MOZ_SUBCONFIGURE_FFI], [
if test "$MOZ_BUILD_APP" != js -o -n "$JS_STANDALONE"; then
if test "$BUILD_CTYPES" -a -z "$MOZ_SYSTEM_FFI"; then
# Run the libffi 'configure' script.
ac_configure_args="--disable-shared --enable-static --disable-raw-api"
if test "$MOZ_DEBUG"; then
ac_configure_args="$ac_configure_args --enable-debug"
new file mode 100644
--- /dev/null
+++ b/build/moz.configure/ffi.configure
@@ -0,0 +1,16 @@
+# -*- 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/.
+
+js_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)
+
+set_config('MOZ_SYSTEM_FFI', system_ffi)
+add_old_configure_assignment('MOZ_SYSTEM_FFI', system_ffi)
--- a/build/moz.configure/old.configure
+++ b/build/moz.configure/old.configure
@@ -227,17 +227,16 @@ def old_configure_options(*options):
'--enable-small-chunk-size',
'--enable-startup-notification',
'--enable-startupcache',
'--enable-stdcxx-compat',
'--enable-strip',
'--enable-synth-pico',
'--enable-system-cairo',
'--enable-system-extension-dirs',
- '--enable-system-ffi',
'--enable-system-pixman',
'--enable-system-sqlite',
'--enable-tasktracer',
'--enable-thread-sanitizer',
'--enable-trace-logging',
'--enable-tree-freetype',
'--enable-ui-locale',
'--enable-universalchardet',
--- a/js/src/old-configure.in
+++ b/js/src/old-configure.in
@@ -1534,21 +1534,16 @@ fi
MOZ_ZLIB_CHECK([1.2.3])
if test -n "$ZLIB_IN_MOZGLUE"; then
AC_DEFINE(ZLIB_IN_MOZGLUE)
fi
AC_SUBST(ZLIB_IN_MOZGLUE)
dnl ========================================================
-dnl system libffi Support
-dnl ========================================================
-MOZ_CONFIG_FFI()
-
-dnl ========================================================
dnl =
dnl = Application
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Application)
dnl ========================================================
--- a/moz.configure
+++ b/moz.configure
@@ -120,16 +120,22 @@ add_old_configure_assignment('BUILD_CTYP
def js_has_ctypes(ctypes, js):
if ctypes and js:
return True
set_config('JS_HAS_CTYPES', js_has_ctypes)
set_define('JS_HAS_CTYPES', js_has_ctypes)
add_old_configure_assignment('JS_HAS_CTYPES', js_has_ctypes)
+@depends('--enable-ctypes', '--enable-compile-environment', '--help')
+def ctypes_and_compile_environment(ctypes, compile_environment, _):
+ return ctypes and compile_environment
+
+include_when('build/moz.configure/ffi.configure',
+ when=ctypes_and_compile_environment)
@dependable
@imports(_from='mozbuild.backend', _import='backends')
def build_backends_choices():
return tuple(backends)
@deprecated_option('--enable-build-backend', nargs='+',
--- a/old-configure.in
+++ b/old-configure.in
@@ -2306,21 +2306,16 @@ if test "$MOZ_SYSTEM_PNG" != 1 -a "$CPU_
esac
fi
fi # SKIP_LIBRARY_CHECKS
AC_SUBST(MOZ_PNG_ARM_NEON)
dnl ========================================================
-dnl system libffi Support
-dnl ========================================================
-MOZ_CONFIG_FFI()
-
-dnl ========================================================
dnl =
dnl = Application
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Application)
ENABLE_SYSTEM_EXTENSION_DIRS=1