From f6d185ababe384adf8be035a0e55a6ebe92e005e Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 13 Apr 2011 10:56:40 -0600 Subject: [PATCH] configure: use `pkg-config' for libffi --- src/configure | 32 +++++++++++++++++++++++++++++++- src/racket/configure.ac | 32 +++++++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/src/configure b/src/configure index 3e29d24472..a4f2044878 100755 --- a/src/configure +++ b/src/configure @@ -5120,8 +5120,34 @@ if test "${enable_libffi}" = "yes" ; then if test "${enable_foreign}" = "yes" ; then { echo "$as_me:$LINENO: checking for libffi" >&5 echo $ECHO_N "checking for libffi... $ECHO_C" >&6; } + + # Try to get flags form pkg-config: + libffi_config_prog="pkg-config libffi" + libffi_config_preflags=`$libffi_config_prog --cflags-only-I 2> /dev/null` + if test "$?" = 0 ; then + libffi_config_cflags=`$libffi_config_prog --cflags-only-other 2> /dev/null` + if test "$?" = 0 ; then + libffi_config_ldflags=`$libffi_config_prog --libs 2> /dev/null` + if test "$?" != 0 ; then + libffi_config_preflags="" + libffi_config_cflags="" + libffi_config_ldflags="-lffi" + fi + else + libffi_config_preflags="" + libffi_config_cflags="" + libffi_config_ldflags="-lffi" + fi + else + libffi_config_preflags="" + libffi_config_cflags="" + libffi_config_ldflags="-lffi" + fi + + OLD_CFLAGS="${CFLAGS}" OLD_LDFLAGS="${LDFLAGS}" - LDFLAGS="${LDFLAGS} -lffi" + CFLAGS="${CFLAGS} ${libffi_config_preflags} ${libffi_config_cflags}" + LDFLAGS="${LDFLAGS} ${libffi_config_ldflags}" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5169,9 +5195,13 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ { echo "$as_me:$LINENO: result: $have_libffi" >&5 echo "${ECHO_T}$have_libffi" >&6; } if test "${have_libffi}" = "no" ; then + CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" echo "Building own libffi" else + CFLAGS="${OLD_CFLAGS}" + PREFLAGS="${PREFLAGS} ${libffi_config_preflags}" + CFLAGS="${COMPFLAGS} ${libffi_config_cflags}" echo "Using installed libffi" OWN_LIBFFI="OFF" fi diff --git a/src/racket/configure.ac b/src/racket/configure.ac index e94881fbe6..51d6d4675f 100644 --- a/src/racket/configure.ac +++ b/src/racket/configure.ac @@ -855,8 +855,34 @@ AC_MSG_RESULT($mbsrtowcs) if test "${enable_libffi}" = "yes" ; then if test "${enable_foreign}" = "yes" ; then AC_MSG_CHECKING([for libffi]) + + # Try to get flags form pkg-config: + libffi_config_prog="pkg-config libffi" + libffi_config_preflags=`$libffi_config_prog --cflags-only-I 2> /dev/null` + if test "$?" = 0 ; then + libffi_config_cflags=`$libffi_config_prog --cflags-only-other 2> /dev/null` + if test "$?" = 0 ; then + libffi_config_ldflags=`$libffi_config_prog --libs 2> /dev/null` + if test "$?" != 0 ; then + libffi_config_preflags="" + libffi_config_cflags="" + libffi_config_ldflags="-lffi" + fi + else + libffi_config_preflags="" + libffi_config_cflags="" + libffi_config_ldflags="-lffi" + fi + else + libffi_config_preflags="" + libffi_config_cflags="" + libffi_config_ldflags="-lffi" + fi + + OLD_CFLAGS="${CFLAGS}" OLD_LDFLAGS="${LDFLAGS}" - LDFLAGS="${LDFLAGS} -lffi" + CFLAGS="${CFLAGS} ${libffi_config_preflags} ${libffi_config_cflags}" + LDFLAGS="${LDFLAGS} ${libffi_config_ldflags}" AC_TRY_LINK([#include ], [ffi_cif cif; ] [ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_void, NULL);], @@ -864,9 +890,13 @@ if test "${enable_libffi}" = "yes" ; then have_libffi=no) AC_MSG_RESULT($have_libffi) if test "${have_libffi}" = "no" ; then + CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" echo "Building own libffi" else + CFLAGS="${OLD_CFLAGS}" + PREFLAGS="${PREFLAGS} ${libffi_config_preflags}" + CFLAGS="${COMPFLAGS} ${libffi_config_cflags}" echo "Using installed libffi" OWN_LIBFFI="OFF" fi