summaryrefslogtreecommitdiff
blob: 1978cefe835cebe0d7a9d213b2284e7bef1fe8d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
--- config/ac-macros/libevent.m4	2010-01-31 04:17:56.000000000 -0500
+++ config/ac-macros/libevent.m4	2010-01-31 04:17:56.000000000 -0500
@@ -14,13 +14,6 @@
 
   libevent_libs="\$(top_builddir)/extra/libevent/libevent.a"
   libevent_includes="-I\$(top_srcdir)/extra/libevent"
-  libevent_test_option="--mysqld=--thread-handling=pool-of-threads"
-  AC_SUBST(libevent_libs)
-  AC_SUBST(libevent_includes)
-  AC_SUBST(libevent_test_option)
-
-  AC_DEFINE([HAVE_LIBEVENT], [1], [If we want to use libevent and have connection pooling])
-  AC_MSG_RESULT([using bundled libevent])
 
   dnl Get the upstream file with the original libevent configure macros.
   dnl Use builtin include for this, to work around path problems in old versions of aclocal.
@@ -39,17 +32,64 @@
 
   AC_CONFIG_FILES(extra/libevent/Makefile)
 
-  AC_MSG_CHECKING(for libevent)
+  AC_MSG_NOTICE([checking what libevent library to use])
+
   AC_ARG_WITH([libevent],
-      [  --with-libevent         use libevent and have connection pooling],
-      [with_libevent=$withval],
-      [with_libevent=no]
-  )
-
-  if test "$with_libevent" != "no"; then
-    MYSQL_USE_BUNDLED_LIBEVENT
-  else
-    AC_MSG_RESULT([disabled])
+              AC_HELP_STRING([--with-libevent=yes|no|bundled|DIR],
+                             [Use libevent and have connection pooling.
+                              A location of libevent library can be specified.
+                              Given DIR, libevent library is 
+                              assumed to be in $DIR/lib and header files
+                              in $DIR/include.]),
+              [with_libevent=${withval}],
+              [with_libevent=no])
+
+  case "$with_libevent" in
+    "no")
+      with_libevent=disabled
+      ;;
+    "bundled")
+      MYSQL_USE_BUNDLED_LIBEVENT
+      ;;
+    "" | "yes")
+      libevent_includes=""
+      libevent_libs="-levent"
+      AC_CHECK_LIB(event, evutil_socketpair,[with_libevent=system],
+                   [with_libevent=bundled])
+      AC_CHECK_HEADER(evutil.h,,[with_libevent=bundled])
+      if test "$with_libevent" = "bundled"; then
+        MYSQL_USE_BUNDLED_LIBEVENT
+      fi
+      ;;
+    *)
+      # Test for libevent using all known library file endings
+      if test \( -f "$with_libevent/lib/libevent.a"  -o \
+                 -f "$with_libevent/lib/libevent.so" -o \
+                 -f "$with_libevent/lib/libevent.sl" -o \
+                 -f "$with_libevent/lib/libevent.dylib" \) \
+              -a -f "$with_libevent/include/evutil.h"; then
+        libevent_includes="-I$with_libevent/include"
+        libevent_libs="-L$with_libevent/lib -levent"
+        AC_CHECK_LIB(event, evutil_socketpair,[with_libevent=$with_libevent],
+                     [with_libevent=no], [$libevent_libs])
+      else
+        with_libevent=no
+      fi
+      if test "$with_libevent" = "no"; then 
+        AC_MSG_ERROR([libevent headers or binaries were not found])
+      fi
+      ;;
+  esac
+  AC_MSG_CHECKING(for libevent)
+  AC_MSG_RESULT([$with_libevent])
+
+  if test "$with_libevent" != "disabled"; then
+    libevent_test_option="--mysqld=--thread-handling=pool-of-threads"
+    AC_SUBST(libevent_libs)
+    AC_SUBST(libevent_includes)
+    AC_SUBST(libevent_test_option)
+    AC_DEFINE([HAVE_LIBEVENT], [1], [If we want to use libevent and have connection pooling])
   fi
-  AM_CONDITIONAL([HAVE_LIBEVENT], [ test "$with_libevent" != "no" ])
+  AM_CONDITIONAL([HAVE_LIBEVENT], [ test "$with_libevent" != "disabled" ])
 ])
+