Bug 1294803 - Move MOZ_SYSTEM_FFI to moz.configure in preparation for moving libffi to our build system. r=glandium
authorChris Manchester <cmanchester@mozilla.com>
Mon, 22 Aug 2016 15:07:07 -0700
changeset 310948 474dce563e74bd18669f57f27bd497b7715b887a
parent 310947 2938c8a38f2b1a6b24ad81a4e2b18588b81b7a85
child 310949 738ae6308649c436b66719423d61c19ea3a3fec7
push id30599
push userryanvm@gmail.com
push dateThu, 25 Aug 2016 12:11:16 +0000
treeherdermozilla-central@e56ac7b94f39 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs1294803
milestone51.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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
build/autoconf/ffi.m4
build/moz.configure/ffi.configure
build/moz.configure/old.configure
js/src/old-configure.in
moz.configure
old-configure.in
--- 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
@@ -226,17 +226,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