michael@0: dnl This Source Code Form is subject to the terms of the Mozilla Public michael@0: dnl License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: michael@0: AC_DEFUN([MOZ_CONFIG_FFI], [ michael@0: michael@0: MOZ_ARG_ENABLE_BOOL(system-ffi, michael@0: [ --enable-system-ffi Use system libffi (located with pkgconfig)], michael@0: MOZ_NATIVE_FFI=1 ) michael@0: michael@0: if test -n "$MOZ_NATIVE_FFI"; then michael@0: # Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10 michael@0: # for non-GCC compilers. michael@0: if test -z "$GNU_CC"; then michael@0: PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9) michael@0: else michael@0: PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9) michael@0: fi michael@0: fi michael@0: michael@0: AC_SUBST(MOZ_NATIVE_FFI) michael@0: michael@0: ]) michael@0: michael@0: AC_DEFUN([MOZ_SUBCONFIGURE_FFI], [ michael@0: if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then michael@0: michael@0: if test "$BUILD_CTYPES" -a -z "$MOZ_NATIVE_FFI"; then michael@0: # Run the libffi 'configure' script. michael@0: ac_configure_args="--disable-shared --enable-static --disable-raw-api" michael@0: if test "$MOZ_DEBUG"; then michael@0: ac_configure_args="$ac_configure_args --enable-debug" michael@0: fi michael@0: if test "$DSO_PIC_CFLAGS"; then michael@0: ac_configure_args="$ac_configure_args --with-pic" michael@0: fi michael@0: for var in AS CC CXX CPP LD AR RANLIB STRIP; do michael@0: ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'" michael@0: done michael@0: if test "$CROSS_COMPILE"; then michael@0: export CPPFLAGS CFLAGS LDFLAGS michael@0: fi michael@0: ac_configure_args="$ac_configure_args --build=$build --host=$target" michael@0: if test "$_MSC_VER"; then michael@0: # Use a wrapper script for cl and ml that looks more like gcc. michael@0: # autotools can't quite handle an MSVC build environment yet. michael@0: LDFLAGS= michael@0: CFLAGS= michael@0: ac_configure_args="$ac_configure_args LD=link CPP=\"cl -nologo -EP\" SHELL=sh.exe" michael@0: case "${target_cpu}" in michael@0: x86_64) michael@0: # Need target since MSYS tools into mozilla-build may be 32bit michael@0: ac_configure_args="$ac_configure_args CC=\"$_topsrcdir/js/src/ctypes/libffi/msvcc.sh -m64\"" michael@0: ;; michael@0: *) michael@0: ac_configure_args="$ac_configure_args CC=$_topsrcdir/js/src/ctypes/libffi/msvcc.sh" michael@0: ;; michael@0: esac michael@0: fi michael@0: if test "$SOLARIS_SUNPRO_CC"; then michael@0: # Always use gcc for libffi on Solaris michael@0: if test ! "$HAVE_64BIT_OS"; then michael@0: ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-m32 LD= LDFLAGS=" michael@0: else michael@0: ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-m64 LD= LDFLAGS=" michael@0: fi michael@0: fi michael@0: if test "$AIX_IBM_XLC"; then michael@0: # Always use gcc for libffi on IBM AIX5/AIX6 michael@0: if test ! "$HAVE_64BIT_OS"; then michael@0: ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-maix32" michael@0: else michael@0: ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-maix64" michael@0: fi michael@0: fi michael@0: michael@0: # Use a separate cache file for libffi, since it does things differently michael@0: # from our configure. michael@0: mkdir -p $_objdir/js/src/ctypes/libffi michael@0: old_cache_file=$cache_file michael@0: cache_file=$_objdir/js/src/ctypes/libffi/config.cache michael@0: old_config_files=$CONFIG_FILES michael@0: unset CONFIG_FILES michael@0: AC_OUTPUT_SUBDIRS(js/src/ctypes/libffi) michael@0: cache_file=$old_cache_file michael@0: ac_configure_args="$_SUBDIR_CONFIG_ARGS" michael@0: CONFIG_FILES=$old_config_files michael@0: fi michael@0: michael@0: fi michael@0: ]) michael@0: