Fix cppcheck warnings.
[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 # Adding support for libtest
67 m4_include([libtest/yatl.m4])
68
69 m4_include([m4/memcached.m4])
70 m4_include([m4/memcached_sasl.m4])
71 m4_include([m4/gearmand.m4])
72 m4_include([m4/libgearman.m4])
73 m4_include([memcached/version.m4])
74
75 AM_CONDITIONAL(BUILDING_LIBMEMCACHED, true)
76 AM_CONDITIONAL(HAVE_LIBMEMCACHED, false)
77 AM_CONDITIONAL(HAVE_LIBDRIZZLE, false)
78 AC_DEFINE([HAVE_LIBMEMCACHED], [1], [Enables libmemcached Support])
79
80 AM_CONDITIONAL(BUILDING_GEARMAN, false)
81
82 AC_SEARCH_LIBS(getopt_long, gnugetopt)
83 AC_SEARCH_LIBS(gethostbyname, nsl)
84
85 case "$target_os" in
86 *linux*)
87 AS_IF([test "x$GCC" = "xyes"],
88 [
89 LDFLAGS="$LDFLAGS -z relro -z now"
90 ])
91 ;;
92 esac
93
94 dnl Specialty checks
95 AX_PTHREAD
96 AX_CXX_CINTTYPES
97 CONFIG_EXTRA
98 DETECT_BYTEORDER
99 SETSOCKOPT_SANITY
100 ENABLE_HSIEH_HASH
101 ENABLE_MURMUR_HASH
102 ENABLE_FNV64_HASH
103 ENABLE_MEMASLAP
104 PROTOCOL_BINARY_TEST
105 ENABLE_DEPRECATED
106
107 AC_CHECK_FUNCS([alarm])
108 AC_CHECK_FUNCS([dup2])
109 AC_CHECK_FUNCS([getline])
110 AC_CHECK_FUNCS([gettimeofday])
111 AC_CHECK_FUNCS([memchr])
112 AC_CHECK_FUNCS([memmove])
113 AC_CHECK_FUNCS([memset])
114 AC_CHECK_FUNCS([pipe2])
115 AC_CHECK_FUNCS([select])
116 AC_CHECK_FUNCS([setenv])
117 AC_CHECK_FUNCS([socket])
118 AC_CHECK_FUNCS([sqrt])
119 AC_CHECK_FUNCS([strcasecmp])
120 AC_CHECK_FUNCS([strchr])
121 AC_CHECK_FUNCS([strdup])
122 AC_CHECK_FUNCS([strerror])
123 AC_CHECK_FUNCS([strtol])
124 AC_CHECK_FUNCS([strtoul])
125 AC_CHECK_FUNCS([strtoull])
126
127 AC_CHECK_HEADERS([arpa/inet.h])
128 AC_CHECK_HEADERS([errno.h])
129 AC_CHECK_HEADERS([execinfo.h])
130 AC_CHECK_HEADERS([fcntl.h])
131 AC_CHECK_HEADERS([inttypes.h])
132 AC_CHECK_HEADERS([libintl.h])
133 AC_CHECK_HEADERS([limits.h])
134 AC_CHECK_HEADERS([malloc.h])
135 AC_CHECK_HEADERS([math.h])
136 AC_CHECK_HEADERS([netdb.h])
137 AC_CHECK_HEADERS([netinet/in.h])
138 AC_CHECK_HEADERS([pthread.h])
139 AC_CHECK_HEADERS([stdarg.h])
140 AC_CHECK_HEADERS([stddef.h])
141 AC_CHECK_HEADERS([stdlib.h])
142 AC_CHECK_HEADERS([sys/time.h])
143 AC_CHECK_HEADERS([unistd.h])
144 AC_CHECK_HEADERS([cxxabi.h],
145 AC_DEFINE([HAVE_CXXABI_H], [1], [Have cxxabi.h]),
146 AC_DEFINE([HAVE_CXXABI_H], [0], [Have cxxabi.h]))
147
148 AC_CHECK_HEADERS([sys/sysctl.h])
149
150 AC_CHECK_HEADER(umem.h, [
151 AC_DEFINE([HAVE_UMEM_H], 1,
152 [Define this if you have umem.h])
153 build_cache=no
154 ], [build_cache=yes])
155
156 AM_CONDITIONAL([BUILD_CACHE], [test "x$build_cache" = "xyes"])
157
158 AX_COMPILER_VENDOR
159
160 AC_FUNC_ALLOCA
161 AC_FUNC_ERROR_AT_LINE
162 AC_FUNC_FORK
163 AC_FUNC_MALLOC
164 AC_FUNC_REALLOC
165 AC_FUNC_STRERROR_R
166 AC_HEADER_STDBOOL
167 AC_TYPE_INT16_T
168 AC_TYPE_INT32_T
169 AC_TYPE_INT64_T
170 AC_TYPE_INT8_T
171 AC_TYPE_OFF_T
172 AC_TYPE_PID_T
173 AC_TYPE_SSIZE_T
174 AC_TYPE_UINT16_T
175 AC_TYPE_UINT32_T
176 AC_TYPE_UINT64_T
177 AC_TYPE_UINT8_T
178
179 AC_C_BIGENDIAN
180 AC_C_CONST
181 AC_C_INLINE
182 AC_C_VOLATILE
183 AC_C_RESTRICT
184
185 AX_CXX_GCC_ABI_DEMANGLE
186
187 AX_SASL_CHECK
188
189 dnl
190 dnl The sasl functions should only be visible if we build with sasl support
191 dnl
192 AS_IF([test "x$ac_enable_sasl" = "xyes"], [
193 [ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 1" ]
194 ], [
195 [ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 0" ]
196 ])
197 AC_SUBST(LIBMEMCACHED_WITH_SASL_SUPPORT)
198
199 AX_CHECK_LIBRARY([LIBUUID], [uuid/uuid.h], [uuid],
200 [
201 LIBUUID_LDFLAGS="-luuid"
202 AC_DEFINE([HAVE_LIBUUID], [ 1 ], [Have libuuid])
203 ],
204 [
205 AC_DEFINE([HAVE_LIBUUID], [ 0 ], [Have libuuid])
206 ])
207
208 AC_CHECK_LIB([rt], [clock_gettime],
209 [
210 RT_LIB="-lrt"
211 AC_SUBST(RT_LIB)
212 AC_DEFINE([HAVE_LIBRT], [ 1 ], [Have clock_gettime])
213 ],
214 [
215 AC_DEFINE([HAVE_LIBRT], [ 0 ], [Have clock_gettime])
216 ])
217
218 AC_CHECK_LIB([m], [floor])
219 AC_CHECK_FUNCS([sigignore])
220
221 AC_CHECK_HEADERS([atomic.h])
222 AS_IF([test "x$ac_cv_header_atomic_h" = "xyes"],[
223 AC_CHECK_FUNCS(atomic_add_64)
224 AC_CHECK_FUNCS(atomic_add_32)
225 AS_IF([test "x$ac_cv_func_atomic_add_64" = "xyes" -a "x$ac_cv_func_atomic_add_32" = "xyes"],[
226 AC_DEFINE([USE_ATOMIC_H],
227 [1],
228 [Define to true if you want to use functions from atomic.h])])])
229
230 AC_DEFINE([HAVE_LIBDRIZZLE], [0], [Support for libdrizzle])
231 AC_DEFINE([HAVE_DRIZZLED_BINARY], [0], [Support for DrizzleD])
232 AC_DEFINE([DRIZZLED_BINARY], [0], [Support for DrizzleD])
233 AC_DEFINE([GEARMAND_BLOBSLAP_WORKER], [0], [Support for Gearman Blobslap worker])
234 AC_DEFINE([HAVE_LIBPQ], [0], [Support for Postgres])
235 AC_DEFINE([HAVE_LIBCURL], [0], [Support for libcurl])
236
237 AC_DEFINE([HAVE_MEMCACHED_LIGHT_BINARY], [1], [Support for memcached_light])
238 AC_DEFINE([MEMCACHED_LIGHT_BINARY], ["example/memcached_light"], [Support for memcached_light])
239
240 dnl Check for the requirements for running memcached with less privileges
241 dnl than the default privilege set. On Solaris we need setppriv and priv.h
242 dnl If you want to add support for other platforms you should check for
243 dnl your requirements, define HAVE_DROP_PRIVILEGES, and make sure you add
244 dnl the source file containing the implementation into memcached_SOURCE
245 dnl in Makefile.am
246 AC_CHECK_FUNCS(setppriv, [
247 AC_CHECK_HEADER(priv.h, [
248 AC_DEFINE([HAVE_DROP_PRIVILEGES], 1,
249 [Define this if you have an implementation of drop_privileges()])
250 build_solaris_privs=yes
251 ], [])
252 ],[])
253
254 AC_CHECK_HEADERS_ONCE(winsock2.h poll.h sys/wait.h fnmatch.h)
255 AM_CONDITIONAL(BUILD_POLL, test "x$ac_cv_header_poll_h" = "xno")
256 AM_CONDITIONAL(BUILD_WIN32_WRAPPERS, test "x$ac_cv_header_winsock2_h" = "xyes")
257 AS_IF(test "x$ac_cv_header_winsock2_h" = "xyes",
258 [AM_LDFLAGS="$AM_LDFLAGS -lws2_32"
259 AM_CFLAGS="$AM_CFLAGS $NO_WERROR"
260 AM_CXXFLAGS="$AM_CXXFLAGS $NO_WERROR"
261 ])
262 SOCKET_SEND_FLAGS
263
264 AX_CHECK_LIBRARY([LIBEVENT], [event.h], [event],
265 [
266 LIBEVENT_LDFLAGS="-levent"
267 ],
268 [
269 AC_MSG_WARN([Unable to find libevent])
270 ])
271 AM_CONDITIONAL(HAVE_LIBEVENT, test "x${ax_cv_have_LIBEVENT}" = "xyes")
272
273 dnl Check if we're a little-endian or a big-endian system, needed by hash code
274 AC_DEFUN([AC_C_ENDIAN],
275 [AC_CACHE_CHECK(for endianness, ac_cv_c_endian,
276 [
277 AC_RUN_IFELSE(
278 [AC_LANG_PROGRAM([], [dnl
279 long val = 1;
280 char *c = (char *) &val;
281 exit(*c == 1);
282 ])
283 ],[
284 ac_cv_c_endian=big
285 ],[
286 ac_cv_c_endian=little
287 ])
288 ])
289 if test $ac_cv_c_endian = big; then
290 AC_DEFINE(ENDIAN_BIG, 1, [machine is bigendian])
291 fi
292 if test $ac_cv_c_endian = little; then
293 AC_DEFINE(ENDIAN_LITTLE, 1, [machine is littleendian])
294 fi
295 ])
296
297 AC_C_ENDIAN
298
299 AX_CHECK_SOCK_CLOEXEC([AC_DEFINE([HAVE_SOCK_CLOEXEC], [1], [Check for SOCK_CLOEXEC.])],
300 [AC_DEFINE([HAVE_SOCK_CLOEXEC], [0], [Check for SOCK_CLOEXEC.])])
301
302 AC_CONFIG_FILES([
303 Makefile
304 docs/conf.py
305 libhashkit-1.0/configure.h
306 libmemcached-1.0/configure.h
307 libmemcached-1.2/configure.h
308 libmemcached-2.0/configure.h
309 support/libmemcached.pc
310 support/libmemcached.spec
311 support/libmemcached-fc.spec
312 ])
313 AC_OUTPUT
314
315 echo "---"
316 echo "Configuration summary for $PACKAGE_NAME version $VERSION"
317 echo ""
318 echo " * Installation prefix: $prefix"
319 echo " * System type: $host_vendor-$host_os"
320 echo " * Host CPU: $host_cpu"
321 echo " * C Compiler: $CC_VERSION"
322 echo " * Assertions enabled: $ac_cv_assert"
323 echo " * Debug enabled: $with_debug"
324 echo " * Warnings as failure: $ac_cv_warnings_as_errors"
325 echo " * SASL support: $ac_enable_sasl"
326 echo ""
327 echo "---"
328
329 case "$host_os" in
330 *freebsd*)
331 echo "*****"
332 echo "*"
333 echo "* NOTE: You are on FreeBSD. BSD make will not work."
334 echo "*"
335 echo "* use 'gmake' To build libmemcached"
336 echo "*"
337 echo "*****"
338 ;;
339 esac
340