Update for version release.
[m6w6/libmemcached] / configure.ac
1 #!/usr/bin/env bash
2 # LibmemcacheD
3 # Copyright (C) 2011-2012 Data Differential, http://datadifferential.com/
4 # Copyright (C) 2006-2010 Brian Aker, Monty Taylor, Trond Norbye
5 # All rights reserved.
6 #
7 # Use and distribution licensed under the BSD license. See
8 # the COPYING file in this directory for full text.
9
10 AC_INIT([libmemcached],[1.0.8],[http://libmemcached.org/])
11
12 AC_CONFIG_AUX_DIR(config)
13
14 AC_CANONICAL_TARGET
15
16 AM_INIT_AUTOMAKE
17
18 AC_CANONICAL_HOST
19 AC_CANONICAL_BUILD
20
21 AC_PREREQ([2.61])
22
23 AC_CONFIG_MACRO_DIR(m4)
24
25 AC_CONFIG_HEADERS([config.h:config.in])dnl Keep filename to 8.3 for MS-DOS.
26
27 AC_CONFIG_SRCDIR([libmemcached/memcached.cc])
28
29 PANDORA_CANONICAL_TARGET(no-vc-changelog)
30 AC_CHECK_PROGS([YACC], ['bison'], [:])
31 AC_CHECK_PROGS([LEX], ['flex'], [:])
32
33 #shared library versioning
34 MEMCACHED_UTIL_LIBRARY_VERSION=2:0:0
35 MEMCACHED_PROTOCAL_LIBRARY_VERSION=0:0:0
36 MEMCACHED_LIBRARY_VERSION=10:0:0
37 # | | |
38 # +------+ | +---+
39 # | | |
40 # current:revision:age
41 # | | |
42 # | | +- increment if interfaces have been added
43 # | | set to zero if interfaces have been removed or changed
44 # | +- increment if source code has changed
45 # | set to zero if current is incremented
46 # +- increment if interfaces have been added, removed or changed
47 AC_SUBST(MEMCACHED_UTIL_LIBRARY_VERSION)
48 AC_SUBST(MEMCACHED_PROTOCAL_LIBRARY_VERSION)
49 AC_SUBST(MEMCACHED_LIBRARY_VERSION)
50
51
52 HASHKIT_LIBRARY_VERSION=2:0:0
53 AC_SUBST(HASHKIT_LIBRARY_VERSION)
54
55 LT_PREREQ([2.2])
56 LT_INIT()
57 LT_LANG([C++])
58 LT_LANG([C])
59 gl_VISIBILITY
60
61 AX_CXX_HEADER_STDCXX_98
62 if test "$ax_cv_cxx_stdcxx_98" = no; then
63 AC_MSG_ERROR([Your system lacks a new enough C++ compiler])
64 fi
65
66 m4_include([m4/memcached.m4])
67 m4_include([m4/memcached_sasl.m4])
68 m4_include([m4/gearmand.m4])
69 m4_include([m4/libgearman.m4])
70 m4_include([memcached/version.m4])
71
72 AM_CONDITIONAL(BUILDING_LIBMEMCACHED, true)
73 AM_CONDITIONAL(HAVE_LIBMEMCACHED, false)
74 AM_CONDITIONAL(HAVE_LIBDRIZZLE, false)
75 AC_DEFINE([HAVE_LIBMEMCACHED], [1], [Enables libmemcached Support])
76
77 AM_CONDITIONAL(BUILDING_GEARMAN, false)
78
79 AC_SEARCH_LIBS(getopt_long, gnugetopt)
80 AC_SEARCH_LIBS(gethostbyname, nsl)
81
82 case "$target_os" in
83 *linux*)
84 AS_IF([test "x$GCC" = "xyes"],
85 [
86 LDFLAGS="$LDFLAGS -z relro -z now"
87 ])
88 ;;
89 esac
90
91 dnl Specialty checks
92 AX_PTHREAD
93 AX_CXX_CINTTYPES
94 CONFIG_EXTRA
95 DETECT_BYTEORDER
96 SETSOCKOPT_SANITY
97 ENABLE_HSIEH_HASH
98 ENABLE_MURMUR_HASH
99 ENABLE_FNV64_HASH
100 ENABLE_MEMASLAP
101 PROTOCOL_BINARY_TEST
102 ENABLE_DEPRECATED
103
104 AC_CHECK_FUNCS([alarm])
105 AC_CHECK_FUNCS([dup2])
106 AC_CHECK_FUNCS([getline])
107 AC_CHECK_FUNCS([gettimeofday])
108 AC_CHECK_FUNCS([memchr])
109 AC_CHECK_FUNCS([memmove])
110 AC_CHECK_FUNCS([memset])
111 AC_CHECK_FUNCS([pipe2])
112 AC_CHECK_FUNCS([select])
113 AC_CHECK_FUNCS([setenv])
114 AC_CHECK_FUNCS([socket])
115 AC_CHECK_FUNCS([sqrt])
116 AC_CHECK_FUNCS([strcasecmp])
117 AC_CHECK_FUNCS([strchr])
118 AC_CHECK_FUNCS([strdup])
119 AC_CHECK_FUNCS([strerror])
120 AC_CHECK_FUNCS([strtol])
121 AC_CHECK_FUNCS([strtoul])
122 AC_CHECK_FUNCS([strtoull])
123
124 AC_CHECK_HEADERS([arpa/inet.h])
125 AC_CHECK_HEADERS([errno.h])
126 AC_CHECK_HEADERS([execinfo.h])
127 AC_CHECK_HEADERS([fcntl.h])
128 AC_CHECK_HEADERS([inttypes.h])
129 AC_CHECK_HEADERS([libintl.h])
130 AC_CHECK_HEADERS([limits.h])
131 AC_CHECK_HEADERS([malloc.h])
132 AC_CHECK_HEADERS([math.h])
133 AC_CHECK_HEADERS([netdb.h])
134 AC_CHECK_HEADERS([netinet/in.h])
135 AC_CHECK_HEADERS([pthread.h])
136 AC_CHECK_HEADERS([stdarg.h])
137 AC_CHECK_HEADERS([stddef.h])
138 AC_CHECK_HEADERS([stdlib.h])
139 AC_CHECK_HEADERS([sys/time.h])
140 AC_CHECK_HEADERS([unistd.h])
141 AC_CHECK_HEADERS([cxxabi.h],
142 AC_DEFINE([HAVE_CXXABI_H], [1], [Have cxxabi.h]),
143 AC_DEFINE([HAVE_CXXABI_H], [0], [Have cxxabi.h]))
144
145 AC_CHECK_HEADERS([sys/sysctl.h])
146
147 AC_CHECK_HEADER(umem.h, [
148 AC_DEFINE([HAVE_UMEM_H], 1,
149 [Define this if you have umem.h])
150 build_cache=no
151 ], [build_cache=yes])
152
153 AM_CONDITIONAL([BUILD_CACHE], [test "x$build_cache" = "xyes"])
154
155 AX_COMPILER_VENDOR
156
157 AC_FUNC_ALLOCA
158 AC_FUNC_ERROR_AT_LINE
159 AC_FUNC_FORK
160 AC_FUNC_MALLOC
161 AC_FUNC_REALLOC
162 AC_FUNC_STRERROR_R
163 AC_HEADER_STDBOOL
164 AC_TYPE_INT16_T
165 AC_TYPE_INT32_T
166 AC_TYPE_INT64_T
167 AC_TYPE_INT8_T
168 AC_TYPE_OFF_T
169 AC_TYPE_PID_T
170 AC_TYPE_SSIZE_T
171 AC_TYPE_UINT16_T
172 AC_TYPE_UINT32_T
173 AC_TYPE_UINT64_T
174 AC_TYPE_UINT8_T
175
176 AC_C_BIGENDIAN
177 AC_C_CONST
178 AC_C_INLINE
179 AC_C_VOLATILE
180 AC_C_RESTRICT
181
182 AX_CXX_GCC_ABI_DEMANGLE
183
184 AX_SASL_CHECK
185
186 dnl
187 dnl The sasl functions should only be visible if we build with sasl support
188 dnl
189 AS_IF([test "x$ac_enable_sasl" = "xyes"], [
190 [ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 1" ]
191 ], [
192 [ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 0" ]
193 ])
194 AC_SUBST(LIBMEMCACHED_WITH_SASL_SUPPORT)
195
196 AX_CHECK_LIBRARY([LIBUUID], [uuid/uuid.h], [uuid],
197 [
198 LIBUUID_LDFLAGS="-luuid"
199 AC_DEFINE([HAVE_LIBUUID], [ 1 ], [Have libuuid])
200 ],
201 [
202 AC_DEFINE([HAVE_LIBUUID], [ 0 ], [Have libuuid])
203 ])
204
205 AC_CHECK_LIB([rt], [clock_gettime],
206 [
207 RT_LIB="-lrt"
208 AC_SUBST(RT_LIB)
209 AC_DEFINE([HAVE_LIBRT], [ 1 ], [Have clock_gettime])
210 ],
211 [
212 AC_DEFINE([HAVE_LIBRT], [ 0 ], [Have clock_gettime])
213 ])
214
215 AC_CHECK_LIB([m], [floor])
216 AC_CHECK_FUNCS([sigignore])
217
218 AC_CHECK_HEADERS([atomic.h])
219 AS_IF([test "x$ac_cv_header_atomic_h" = "xyes"],[
220 AC_CHECK_FUNCS(atomic_add_64)
221 AC_CHECK_FUNCS(atomic_add_32)
222 AS_IF([test "x$ac_cv_func_atomic_add_64" = "xyes" -a "x$ac_cv_func_atomic_add_32" = "xyes"],[
223 AC_DEFINE([USE_ATOMIC_H],
224 [1],
225 [Define to true if you want to use functions from atomic.h])])])
226
227 AC_DEFINE([HAVE_LIBDRIZZLE], [0], [Support for libdrizzle])
228 AC_DEFINE([HAVE_DRIZZLED_BINARY], [0], [Support for DrizzleD])
229 AC_DEFINE([DRIZZLED_BINARY], [0], [Support for DrizzleD])
230 AC_DEFINE([GEARMAND_BLOBSLAP_WORKER], [0], [Support for Gearman Blobslap worker])
231 AC_DEFINE([HAVE_LIBPQ], [0], [Support for Postgres])
232 AC_DEFINE([HAVE_LIBCURL], [0], [Support for libcurl])
233
234 AC_DEFINE([HAVE_MEMCACHED_LIGHT_BINARY], [1], [Support for memcached_light])
235 AC_DEFINE([MEMCACHED_LIGHT_BINARY], ["example/memcached_light"], [Support for memcached_light])
236
237 dnl Check for the requirements for running memcached with less privileges
238 dnl than the default privilege set. On Solaris we need setppriv and priv.h
239 dnl If you want to add support for other platforms you should check for
240 dnl your requirements, define HAVE_DROP_PRIVILEGES, and make sure you add
241 dnl the source file containing the implementation into memcached_SOURCE
242 dnl in Makefile.am
243 AC_CHECK_FUNCS(setppriv, [
244 AC_CHECK_HEADER(priv.h, [
245 AC_DEFINE([HAVE_DROP_PRIVILEGES], 1,
246 [Define this if you have an implementation of drop_privileges()])
247 build_solaris_privs=yes
248 ], [])
249 ],[])
250
251 AC_CHECK_HEADERS_ONCE(winsock2.h poll.h sys/wait.h fnmatch.h)
252 AM_CONDITIONAL(BUILD_POLL, test "x$ac_cv_header_poll_h" = "xno")
253 AM_CONDITIONAL(BUILD_WIN32_WRAPPERS, test "x$ac_cv_header_winsock2_h" = "xyes")
254 AS_IF(test "x$ac_cv_header_winsock2_h" = "xyes",
255 [AM_LDFLAGS="$AM_LDFLAGS -lws2_32"
256 AM_CFLAGS="$AM_CFLAGS $NO_WERROR"
257 AM_CXXFLAGS="$AM_CXXFLAGS $NO_WERROR"
258 ])
259 SOCKET_SEND_FLAGS
260
261 AX_CHECK_LIBRARY([LIBEVENT], [event.h], [event],
262 [
263 LIBEVENT_LDFLAGS="-levent"
264 ],
265 [
266 AC_MSG_WARN([Unable to find libevent])
267 ])
268 AM_CONDITIONAL(HAVE_LIBEVENT, test "x${ax_cv_have_LIBEVENT}" = "xyes")
269
270 dnl Check if we're a little-endian or a big-endian system, needed by hash code
271 AC_DEFUN([AC_C_ENDIAN],
272 [AC_CACHE_CHECK(for endianness, ac_cv_c_endian,
273 [
274 AC_RUN_IFELSE(
275 [AC_LANG_PROGRAM([], [dnl
276 long val = 1;
277 char *c = (char *) &val;
278 exit(*c == 1);
279 ])
280 ],[
281 ac_cv_c_endian=big
282 ],[
283 ac_cv_c_endian=little
284 ])
285 ])
286 if test $ac_cv_c_endian = big; then
287 AC_DEFINE(ENDIAN_BIG, 1, [machine is bigendian])
288 fi
289 if test $ac_cv_c_endian = little; then
290 AC_DEFINE(ENDIAN_LITTLE, 1, [machine is littleendian])
291 fi
292 ])
293
294 AC_C_ENDIAN
295
296 AC_CONFIG_FILES([
297 Makefile
298 docs/conf.py
299 libhashkit-1.0/configure.h
300 libmemcached-1.0/configure.h
301 libmemcached-1.2/configure.h
302 libmemcached-2.0/configure.h
303 support/libmemcached.pc
304 support/libmemcached.spec
305 support/libmemcached-fc.spec
306 libtest/version.h
307 ])
308 AC_OUTPUT
309
310 echo "---"
311 echo "Configuration summary for $PACKAGE_NAME version $VERSION"
312 echo ""
313 echo " * Installation prefix: $prefix"
314 echo " * System type: $host_vendor-$host_os"
315 echo " * Host CPU: $host_cpu"
316 echo " * C Compiler: $CC_VERSION"
317 echo " * Assertions enabled: $ac_cv_assert"
318 echo " * Debug enabled: $with_debug"
319 echo " * Warnings as failure: $ac_cv_warnings_as_errors"
320 echo " * SASL support: $ac_enable_sasl"
321 echo ""
322 echo "---"
323
324 case "$host_os" in
325 *freebsd*)
326 echo "*****"
327 echo "*"
328 echo "* NOTE: You are on FreeBSD. BSD make will not work."
329 echo "*"
330 echo "* use 'gmake' To build libmemcached"
331 echo "*"
332 echo "*****"
333 ;;
334 esac
335