[memcached] bradfitz, r359: improve autoconf detection for libevent....

commits at code.sixapart.com commits at code.sixapart.com
Tue Sep 5 00:03:10 UTC 2006


improve autoconf detection for libevent.  from the Tor project.



U   trunk/server/ChangeLog
U   trunk/server/configure.ac


Modified: trunk/server/ChangeLog
===================================================================
--- trunk/server/ChangeLog	2006-09-04 23:52:08 UTC (rev 358)
+++ trunk/server/ChangeLog	2006-09-05 00:03:09 UTC (rev 359)
@@ -1,3 +1,10 @@
+2006-09-04
+	* improved autoconf libevent detection, from the Tor project.
+
+2006-09-03
+	* test suite and lot of expiration, delete, flush_all, etc corner
+	  case bugs fixed (Brad Fitzpatrick)
+
 2006-09-02
 	* Nathan Neulinger <nneul at umr.edu>: fix breakage in expiration code
 	  causing expiration times to not be processed correctly.

Modified: trunk/server/configure.ac
===================================================================
--- trunk/server/configure.ac	2006-09-04 23:52:08 UTC (rev 358)
+++ trunk/server/configure.ac	2006-09-05 00:03:09 UTC (rev 359)
@@ -8,17 +8,89 @@
 AC_PROG_CC
 AC_PROG_INSTALL
 
+trylibeventdir=""
 AC_ARG_WITH(libevent,
-	AC_HELP_STRING([--with-libevent=DIRECTORY],[base directory for libevent]))
-if test "$with_libevent" != "no"; then
-	CFLAGS="$CFLAGS -I$with_libevent/include"
-	LDFLAGS="$LDFLAGS -L$with_libevent/lib"
-fi
+       [  --with-libevent=PATH     Specify path to libevent installation ],
+       [
+                if test "x$withval" != "xno" ; then
+                        trylibeventdir=$withval
+                fi
+       ]
+)
 
+dnl ------------------------------------------------------
+dnl libevent detection.  swiped from Tor.  modified a bit.
+
 LIBEVENT_URL=http://www.monkey.org/~provos/libevent/
-AC_CHECK_LIB(event, event_set, ,
-	[AC_MSG_ERROR(libevent is required.  You can get it from $LIBEVENT_URL)])
 
+AC_CACHE_CHECK([for libevent directory], ac_cv_libevent_dir, [
+  saved_LIBS="$LIBS"
+  saved_LDFLAGS="$LDFLAGS"
+  saved_CPPFLAGS="$CPPFLAGS"
+  le_found=no
+  for ledir in $trylibeventdir "" $prefix /usr/local ; do
+    LDFLAGS="$saved_LDFLAGS"
+    LIBS="$saved_LIBS -levent"
+
+    # Skip the directory if it isn't there.
+    if test ! -z "$ledir" -a ! -d "$ledir" ; then
+       continue;
+    fi
+    if test ! -z "$ledir" ; then
+      if test -d "$ledir/lib" ; then
+        LDFLAGS="-L$ledir/lib $LDFLAGS"
+      else
+        LDFLAGS="-L$ledir $LDFLAGS"
+      fi
+      if test -d "$ledir/include" ; then
+        CPPFLAGS="-I$ledir/include $CPPFLAGS"
+      else
+        CPPFLAGS="-I$ledir $CPPFLAGS"
+      fi
+    fi
+    # Can I compile and link it?
+    AC_TRY_LINK([#include <sys/time.h>
+#include <sys/types.h>
+#include <event.h>], [ event_init(); ],
+       [ libevent_linked=yes ], [ libevent_linked=no ])
+    if test $libevent_linked = yes; then
+       if test ! -z "$ledir" ; then
+         ac_cv_libevent_dir=$ledir
+       else
+         ac_cv_libevent_dir="(system)"
+       fi
+       le_found=yes
+       break
+    fi
+  done
+  LIBS="$saved_LIBS"
+  LDFLAGS="$saved_LDFLAGS"
+  CPPFLAGS="$saved_CPPFLAGS"
+  if test $le_found = no ; then
+    AC_MSG_ERROR([libevent is required.  You can get it from $LIBEVENT_URL
+
+      If it's already installed, specify its path using --with-libevent=/dir/
+])
+  fi
+])
+LIBS="$LIBS -levent"
+if test $ac_cv_libevent_dir != "(system)"; then
+  if test -d "$ac_cv_libevent_dir/lib" ; then
+    LDFLAGS="-L$ac_cv_libevent_dir/lib $LDFLAGS"
+    le_libdir="$ac_cv_libevent_dir/lib"
+  else
+    LDFLAGS="-L$ac_cv_libevent_dir $LDFLAGS"
+    le_libdir="$ac_cv_libevent_dir"
+  fi
+  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
+
+dnl ----------------------------------------------------------------------------
+
 AC_SEARCH_LIBS(socket, socket)
 AC_SEARCH_LIBS(gethostbyname, nsl)
 AC_SEARCH_LIBS(mallinfo, malloc)




More information about the memcached-commits mailing list