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