dnl #
dnl # Look for a library in a number of places.
dnl #
dnl # FR_SMART_CHECK_LIB(library, function)
dnl #
AC_DEFUN([FR_SMART_CHECK_LIB], [
sm_lib_safe=`echo "$1" | sed 'y%./+-%__p_%'`
sm_func_safe=`echo "$2" | sed 'y%./+-%__p_%'`
dnl #
dnl # We pass all arguments for linker testing in CCPFLAGS as these
dnl # will be passed to the compiler (then linker) first.
dnl #
dnl # The linker will search through -L directories in the order they
dnl # appear on the command line. Unfortunately the same rules appear
dnl # to apply to directories specified with --sysroot, so we must
dnl # pass the user specified directory first.
dnl #
dnl # Really we should be using LDFLAGS (-L
) for this.
dnl #
old_LIBS="$LIBS"
old_CPPFLAGS="$CPPFLAGS"
smart_lib=
smart_ldflags=
smart_lib_dir=
dnl #
dnl # Try first any user-specified directory, otherwise we may pick up
dnl # the wrong version.
dnl #
if test "x$smart_try_dir" != "x"; then
for try in $smart_try_dir; do
AC_MSG_CHECKING([for $2 in -l$1 in $try])
LIBS="-l$1 $old_LIBS"
CPPFLAGS="-L$try -Wl,-rpath,$try $old_CPPFLAGS"
AC_TRY_LINK([extern char $2();],
[$2()],
[
smart_lib="-l$1"
smart_ldflags="-L$try -Wl,-rpath,$try"
AC_MSG_RESULT(yes)
break
],
[AC_MSG_RESULT(no)])
done
LIBS="$old_LIBS"
CPPFLAGS="$old_CPPFLAGS"
fi
dnl #
dnl # Try using the default library path
dnl #
if test "x$smart_lib" = "x"; then
AC_MSG_CHECKING([for $2 in -l$1])
LIBS="-l$1 $old_LIBS"
AC_TRY_LINK([extern char $2();],
[$2()],
[
smart_lib="-l$1"
AC_MSG_RESULT(yes)
],
[AC_MSG_RESULT(no)])
LIBS="$old_LIBS"
fi
dnl #
dnl # Try to guess possible locations.
dnl #
if test "x$smart_lib" = "x"; then
for try in /usr/local/lib /opt/lib; do
AC_MSG_CHECKING([for $2 in -l$1 in $try])
LIBS="-l$1 $old_LIBS"
CPPFLAGS="-L$try -Wl,-rpath,$try $old_CPPFLAGS"
AC_TRY_LINK([extern char $2();],
[$2()],
[
smart_lib="-l$1"
smart_ldflags="-L$try -Wl,-rpath,$try"
AC_MSG_RESULT(yes)
break
],
[AC_MSG_RESULT(no)])
done
LIBS="$old_LIBS"
CPPFLAGS="$old_CPPFLAGS"
fi
dnl #
dnl # Found it, set the appropriate variable.
dnl #
if test "x$smart_lib" != "x"; then
eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes"
LIBS="$smart_ldflags $smart_lib $old_LIBS"
SMART_LIBS="$smart_ldflags $smart_lib $SMART_LIBS"
fi
])