]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/thrift/aclocal/ax_lib_event.m4
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / jaegertracing / thrift / aclocal / ax_lib_event.m4
CommitLineData
f67539c2
TL
1dnl @synopsis AX_LIB_EVENT([MINIMUM-VERSION])
2dnl
3dnl Test for the libevent library of a particular version (or newer).
4dnl
5dnl If no path to the installed libevent is given, the macro will first try
6dnl using no -I or -L flags, then searches under /usr, /usr/local, /opt,
7dnl and /opt/libevent.
8dnl If these all fail, it will try the $LIBEVENT_ROOT environment variable.
9dnl
10dnl This macro requires that #include <sys/types.h> works and defines u_char.
11dnl
12dnl This macro calls:
13dnl AC_SUBST(LIBEVENT_CPPFLAGS)
14dnl AC_SUBST(LIBEVENT_LDFLAGS)
15dnl AC_SUBST(LIBEVENT_LIBS)
16dnl
17dnl And (if libevent is found):
18dnl AC_DEFINE(HAVE_LIBEVENT)
19dnl
20dnl It also leaves the shell variables "success" and "ax_have_libevent"
21dnl set to "yes" or "no".
22dnl
23dnl NOTE: This macro does not currently work for cross-compiling,
24dnl but it can be easily modified to allow it. (grep "cross").
25dnl
26dnl @category InstalledPackages
27dnl @category C
28dnl @version 2007-09-12
29dnl @license AllPermissive
30dnl
31dnl Copyright (C) 2009 David Reiss
32dnl Copying and distribution of this file, with or without modification,
33dnl are permitted in any medium without royalty provided the copyright
34dnl notice and this notice are preserved.
35
36dnl Input: ax_libevent_path, WANT_LIBEVENT_VERSION
37dnl Output: success=yes/no
38AC_DEFUN([AX_LIB_EVENT_DO_CHECK],
39 [
40 # Save our flags.
41 CPPFLAGS_SAVED="$CPPFLAGS"
42 LDFLAGS_SAVED="$LDFLAGS"
43 LIBS_SAVED="$LIBS"
44 LD_LIBRARY_PATH_SAVED="$LD_LIBRARY_PATH"
45
46 # Set our flags if we are checking a specific directory.
47 if test -n "$ax_libevent_path" ; then
48 LIBEVENT_CPPFLAGS="-I$ax_libevent_path/include"
49 LIBEVENT_LDFLAGS="-L$ax_libevent_path/lib"
50 LD_LIBRARY_PATH="$ax_libevent_path/lib:$LD_LIBRARY_PATH"
51 else
52 LIBEVENT_CPPFLAGS=""
53 LIBEVENT_LDFLAGS=""
54 fi
55
56 # Required flag for libevent.
57 LIBEVENT_LIBS="-levent"
58
59 # Prepare the environment for compilation.
60 CPPFLAGS="$CPPFLAGS $LIBEVENT_CPPFLAGS"
61 LDFLAGS="$LDFLAGS $LIBEVENT_LDFLAGS"
62 LIBS="$LIBS $LIBEVENT_LIBS"
63 export CPPFLAGS
64 export LDFLAGS
65 export LIBS
66 export LD_LIBRARY_PATH
67
68 success=no
69
70 # Compile, link, and run the program. This checks:
71 # - event.h is available for including.
72 # - event_get_version() is available for linking.
73 # - The event version string is lexicographically greater
74 # than the required version.
75 AC_LANG_PUSH([C])
76 dnl This can be changed to AC_LINK_IFELSE if you are cross-compiling,
77 dnl but then the version cannot be checked.
78 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
79 #include <sys/types.h>
80 #include <event.h>
81 ]], [[
82 const char* lib_version = event_get_version();
83 const char* wnt_version = "$WANT_LIBEVENT_VERSION";
84 int lib_digits;
85 int wnt_digits;
86 for (;;) {
87 /* If we reached the end of the want version. We have it. */
88 if (*wnt_version == '\0' || *wnt_version == '-') {
89 return 0;
90 }
91 /* If the want version continues but the lib version does not, */
92 /* we are missing a letter. We don't have it. */
93 if (*lib_version == '\0' || *lib_version == '-') {
94 return 1;
95 }
96 /* In the 1.4 version numbering style, if there are more digits */
97 /* in one version than the other, that one is higher. */
98 for (lib_digits = 0;
99 lib_version[lib_digits] >= '0' &&
100 lib_version[lib_digits] <= '9';
101 lib_digits++)
102 ;
103 for (wnt_digits = 0;
104 wnt_version[wnt_digits] >= '0' &&
105 wnt_version[wnt_digits] <= '9';
106 wnt_digits++)
107 ;
108 if (lib_digits > wnt_digits) {
109 return 0;
110 }
111 if (lib_digits < wnt_digits) {
112 return 1;
113 }
114 /* If we have greater than what we want. We have it. */
115 if (*lib_version > *wnt_version) {
116 return 0;
117 }
118 /* If we have less, we don't. */
119 if (*lib_version < *wnt_version) {
120 return 1;
121 }
122 lib_version++;
123 wnt_version++;
124 }
125 return 0;
126 ]])], [
127 success=yes
128 ])
129 AC_LANG_POP([C])
130
131 # Restore flags.
132 CPPFLAGS="$CPPFLAGS_SAVED"
133 LDFLAGS="$LDFLAGS_SAVED"
134 LIBS="$LIBS_SAVED"
135 LD_LIBRARY_PATH="$LD_LIBRARY_PATH_SAVED"
136 ])
137
138
139AC_DEFUN([AX_LIB_EVENT],
140 [
141
142 dnl Allow search path to be overridden on the command line.
143 AC_ARG_WITH([libevent],
144 AS_HELP_STRING([--with-libevent@<:@=DIR@:>@], [use libevent [default=yes]. Optionally specify the root prefix dir where libevent is installed]),
145 [
146 if test "x$withval" = "xno"; then
147 want_libevent="no"
148 elif test "x$withval" = "xyes"; then
149 want_libevent="yes"
150 ax_libevent_path=""
151 else
152 want_libevent="yes"
153 ax_libevent_path="$withval"
154 fi
155 ],
156 [ want_libevent="yes" ; ax_libevent_path="" ])
157
158
159 if test "$want_libevent" = "yes"; then
160 WANT_LIBEVENT_VERSION=ifelse([$1], ,1.2,$1)
161
162 AC_MSG_CHECKING(for libevent >= $WANT_LIBEVENT_VERSION)
163
164 # Run tests.
165 if test -n "$ax_libevent_path"; then
166 AX_LIB_EVENT_DO_CHECK
167 else
168 for ax_libevent_path in "" $lt_sysroot/usr $lt_sysroot/usr/local $lt_sysroot/opt $lt_sysroot/opt/local $lt_sysroot/opt/libevent "$LIBEVENT_ROOT" ; do
169 AX_LIB_EVENT_DO_CHECK
170 if test "$success" = "yes"; then
171 break;
172 fi
173 done
174 fi
175
176 if test "$success" != "yes" ; then
177 AC_MSG_RESULT(no)
178 LIBEVENT_CPPFLAGS=""
179 LIBEVENT_LDFLAGS=""
180 LIBEVENT_LIBS=""
181 else
182 AC_MSG_RESULT(yes)
183 AC_DEFINE(HAVE_LIBEVENT,,[define if libevent is available])
184 ax_have_libevent_[]m4_translit([$1], [.], [_])="yes"
185 fi
186
187 ax_have_libevent="$success"
188
189 AC_SUBST(LIBEVENT_CPPFLAGS)
190 AC_SUBST(LIBEVENT_LDFLAGS)
191 AC_SUBST(LIBEVENT_LIBS)
192 fi
193
194 ])