More improvements on libevent hunting: give a good error when no libevent linkable is found at all; also try using -R to link libevent where needed.

svn:r5872
This commit is contained in:
Nick Mathewson 2006-01-27 18:39:40 +00:00
parent 2379bc557c
commit 0e8072a8e7
1 changed files with 30 additions and 21 deletions

View File

@ -106,10 +106,10 @@ fi
dnl ------------------------------------------------------
dnl Where do you live, libevent? And how do we call you?
saved_LIBS="$LIBS"
saved_LDFLAGS="$LDFLAGS"
AC_CACHE_CHECK([for libevent location], ac_cv_libevent_dir, [
saved_LIBS="$LIBS"
saved_LDFLAGS="$LDFLAGS"
le_found=no
for ledir in $trylibeventdir "" $prefix /usr/local ; do
LDFLAGS="$saved_LDFLAGS"
LIBS="$saved_LIBS -levent"
@ -134,9 +134,15 @@ AC_CACHE_CHECK([for libevent location], ac_cv_libevent_dir, [
else
ac_cv_libevent_dir="(system)"
fi
le_found=yes
break
fi
done
LIBS="$saved_LIBS"
LDFLAGS="$saved_LIBS"
if test le_found = no ; then
AC_MSG_ERROR([Could not find a linkable libevent. You can specify an explicit path using --with-libevent-dir])
fi
])
LIBS="$LIBS -levent"
if test $ac_cv_libevent_dir != "(system)"; then
@ -150,37 +156,40 @@ if test $ac_cv_libevent_dir != "(system)"; then
if test -d "$ac_cv_libevent_dir/include" ; then
CPPFLAGS="-I$ac_cv_libevent_dir/include $CPPFLAGS"
else
CPPFLAGS="-I$ac_cv_libevent_dir $CPPFLAGS"
fi
fi
AC_CACHE_CHECK([whether libevent is in LDPATH], ac_cv_libevent_in_ldpath, [
AC_CACHE_CHECK([whether we need extra options to link libevent],
ac_cv_libevent_linker_option, [
saved_LDFLAGS="$LDFLAGS"
AC_TRY_RUN([void *event_init(void);
le_runs=no
for le_extra in "" "-Wl,-R$le_libdir" "-R$le_libdir" ; do
LDFLAGS="$saved_LDFLAGS $le_extra"
AC_TRY_RUN([void *event_init(void);
int main(int c, char **v) {
event_init(); return 0;
}],
libevent_runs=yes, libevent_runs=no)
if test $libevent_runs = yes; then
ac_cv_libevent_in_ldpath=yes
else
LDFLAGS="$LDFLAGS -Wl,-R$le_libdir"
AC_TRY_RUN([void *event_init(void);
int main(int c, char **v) {
event_init(); return 0;
}],
libevent_runs_with_r=yes, libevent_runs_with_r=no)
if test $libevent_runs_with_r = yes; then
ac_cv_libevent_in_ldpath=no
else
AC_MSG_ERROR([Found linkable libevent in $ac_cv_libevent_dir, but it doesn't run, even with -R. Maybe specify another using --with-libevent-dir?])
fi
if test $libevent_runs = yes ; then
if test -z "$le_extra" ; then
ac_cv_libevent_linker_option='(none)'
else
ac_cv_libevent_linker_option=$le_extra
fi
le_runs=yes
break
fi
done
if test le_runs = no ; then
AC_MSG_ERROR([Found linkable libevent in $ac_cv_libevent_dir, but it doesn't run, even with -R. Maybe specify another using --with-libevent-dir?])
fi
LDFLAGS="$saved_LDFLAGS"
])
if test $ac_cv_libevent_in_ldpath = no ; then
LDFLAGS="$LDFLAGS -Wl,-R$le_libdir"
if test $ac_cv_libevent_linker_option != '(none)' ; then
LDFLAGS="$ac_cv_libevent_linker_option $LDFLAGS"
fi
dnl ------------------------------------------------------