From https://github.com/chef/omnibus-software/blob/master/config/patches/libffi/libffi-3.2.1-disable-multi-os-directory.patch , this change will be included in the next libffi release. --- libffi-3.2.1-orig/configure.ac 2014-11-12 05:56:51.000000000 -0600 +++ libffi-3.2.1/configure.ac 2015-10-29 15:53:41.695055040 -0500 @@ -590,6 +590,10 @@ AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.]) fi) +AC_ARG_ENABLE(multi-os-directory, +[ --disable-multi-os-directory + disable use of gcc --print-multi-os-directory to change the library installation directory]) + # These variables are only ever used when we cross-build to X86_WIN32. # And we only support this with GCC, so... if test "x$GCC" = "xyes"; then @@ -601,11 +605,13 @@ toolexecdir="${libdir}"/gcc-lib/'$(target_alias)' toolexeclibdir="${libdir}" fi - multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac + if test x"$enable_multi_os_directory" != x"no"; then + multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` + case $multi_os_directory in + .) ;; # Avoid trailing /. + ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; + esac + fi AC_SUBST(toolexecdir) else toolexeclibdir="${libdir}" --- libffi-3.2.1-orig/configure 2014-11-12 11:59:57.000000000 +0000 +++ libffi-3.2.1/configure 2015-10-30 19:50:51.082221000 +0000 @@ -886,6 +886,7 @@ enable_structs enable_raw_api enable_purify_safety +enable_multi_os_directory ' ac_precious_vars='build_alias host_alias @@ -1538,6 +1539,8 @@ --disable-structs omit code for struct support --disable-raw-api make the raw api unavailable --enable-purify-safety purify-safe mode + --disable-multi-os-directory + disable use of gcc --print-multi-os-directory to change the library installation directory Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -18714,6 +18717,12 @@ fi +# Check whether --enable-multi-os-directory was given. +if test "${enable_multi_os_directory+set}" = set; then : + enableval=$enable_multi_os_directory; +fi + + # These variables are only ever used when we cross-build to X86_WIN32. # And we only support this with GCC, so... if test "x$GCC" = "xyes"; then @@ -18725,11 +18734,13 @@ toolexecdir="${libdir}"/gcc-lib/'$(target_alias)' toolexeclibdir="${libdir}" fi - multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac + if test x"$enable_multi_os_directory" != x"no"; then + multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` + case $multi_os_directory in + .) ;; # Avoid trailing /. + ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; + esac + fi else toolexeclibdir="${libdir}"