Merge lp:~tangent-org/libmemcached/1.0-build Build: jenkins-Libmemcached-1.0-57
[awesomized/libmemcached] / configure.ac
1 # LibmemcacheD
2 # Copyright (C) 2011-2012 Data Differential, http://datadifferential.com/
3 # Copyright (C) 2006-2010 Brian Aker, Monty Taylor, Trond Norbye
4 # All rights reserved.
5 #
6 # Use and distribution licensed under the BSD license. See
7 # the COPYING file in this directory for full text.
8
9 AC_INIT([libmemcached],[1.0.12],[http://libmemcached.org/])
10 AC_CONFIG_AUX_DIR([build-aux])
11 AC_CONFIG_MACRO_DIR([m4])
12
13 AC_CANONICAL_TARGET
14 AC_ARG_PROGRAM
15 AC_USE_SYSTEM_EXTENSIONS
16
17 AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability subdir-objects foreign tar-ustar])
18
19 AC_PREREQ([2.61])
20
21 AC_CONFIG_HEADERS([config.h:config.in])dnl Keep filename to 8.3 for MS-DOS.
22 AC_CONFIG_SRCDIR([libmemcached/memcached.cc])
23
24 #shared library versioning
25 MEMCACHED_UTIL_LIBRARY_VERSION=2:0:0
26 MEMCACHED_PROTOCAL_LIBRARY_VERSION=0:0:0
27 MEMCACHED_LIBRARY_VERSION=11:0:0
28 # | | |
29 # +------+ | +---+
30 # | | |
31 # current:revision:age
32 # | | |
33 # | | +- increment if interfaces have been added
34 # | | set to zero if interfaces have been removed or changed
35 # | +- increment if source code has changed
36 # | set to zero if current is incremented
37 # +- increment if interfaces have been added, removed or changed
38 AC_SUBST(MEMCACHED_UTIL_LIBRARY_VERSION)
39 AC_SUBST(MEMCACHED_PROTOCAL_LIBRARY_VERSION)
40 AC_SUBST(MEMCACHED_LIBRARY_VERSION)
41
42 HASHKIT_LIBRARY_VERSION=2:0:0
43 AC_SUBST(HASHKIT_LIBRARY_VERSION)
44
45 LT_PREREQ([2.2])
46 LT_INIT
47 LT_LANG([C++])
48 gl_VISIBILITY
49 PANDORA_PLATFORM
50 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
51
52 AX_CXX_HEADER_STDCXX_98
53 AS_IF([ test "$ax_cv_cxx_stdcxx_98" = no ],[
54 AC_MSG_ERROR([Your system lacks a new enough C++ compiler])
55 ])
56
57 # Adding support for libtest
58 m4_include([libtest/yatl.m4])
59
60 m4_include([m4/memcached_sasl.m4])
61 m4_include([m4/gearmand.m4])
62 m4_include([m4/libgearman.m4])
63
64 AM_CONDITIONAL([BUILDING_LIBMEMCACHED], [true])
65 AM_CONDITIONAL([HAVE_LIBMEMCACHED], [false])
66 AM_CONDITIONAL([HAVE_LIBDRIZZLE], [false])
67 AC_DEFINE([HAVE_LIBMEMCACHED], [1], [Enables libmemcached Support])
68
69 AM_CONDITIONAL([BUILDING_GEARMAN], [false])
70
71 dnl Specialty checks
72 AX_CXX_CINTTYPES
73 CONFIG_EXTRA
74 DETECT_BYTEORDER
75 SETSOCKOPT_SANITY
76 ENABLE_HSIEH_HASH
77 ENABLE_MURMUR_HASH
78 ENABLE_FNV64_HASH
79 ENABLE_MEMASLAP
80 PROTOCOL_BINARY_TEST
81 ENABLE_DEPRECATED
82
83 # Checks for programs.
84 AC_CHECK_PROGS([LEX], ['flex'], [:])
85 AC_CHECK_PROGS([YACC], ['bison'], [:])
86 AX_PROG_SPHINX_BUILD
87
88 # Checks for libraries.
89 AC_SEARCH_LIBS(getopt_long, gnugetopt)
90 AC_SEARCH_LIBS(gethostbyname, nsl)
91
92 # Checks for header files.
93 AC_CHECK_HEADERS([arpa/inet.h])
94 AC_CHECK_HEADERS([errno.h])
95 AC_CHECK_HEADERS([dlfcn.h])
96 AC_CHECK_HEADERS([execinfo.h])
97 AC_CHECK_HEADERS([fcntl.h])
98 AC_CHECK_HEADERS([inttypes.h])
99 AC_CHECK_HEADERS([libintl.h])
100 AC_CHECK_HEADERS([limits.h])
101 AC_CHECK_HEADERS([malloc.h])
102 AC_CHECK_HEADERS([math.h])
103 AC_CHECK_HEADERS([netdb.h])
104 AC_CHECK_HEADERS([netinet/in.h])
105 AC_CHECK_HEADERS([netinet/tcp.h])
106 AC_CHECK_HEADERS([pthread.h])
107 AC_CHECK_HEADERS([stdarg.h])
108 AC_CHECK_HEADERS([stddef.h])
109 AC_CHECK_HEADERS([stdio.h])
110 AC_CHECK_HEADERS([stdlib.h])
111 AC_CHECK_HEADERS([sys/socket.h])
112 AC_CHECK_HEADERS([sys/sysctl.h])
113 AC_CHECK_HEADERS([sys/time.h])
114 AC_CHECK_HEADERS([time.h])
115 AC_CHECK_HEADERS([unistd.h])
116 AC_HEADER_TIME
117
118 # Checks for typedefs, structures, and compiler characteristics.
119
120 # Checks for library functions.
121
122 AC_CHECK_FUNCS([alarm])
123 AC_CHECK_FUNCS([dup2])
124 AC_CHECK_FUNCS([getline])
125 AC_CHECK_FUNCS([gettimeofday])
126 AC_CHECK_FUNCS([memchr])
127 AC_CHECK_FUNCS([memmove])
128 AC_CHECK_FUNCS([memset])
129 AC_CHECK_FUNCS([pipe2])
130 AC_CHECK_FUNCS([select])
131 AC_CHECK_FUNCS([setenv])
132 AC_CHECK_FUNCS([socket])
133 AC_CHECK_FUNCS([sqrt])
134 AC_CHECK_FUNCS([strcasecmp])
135 AC_CHECK_FUNCS([strchr])
136 AC_CHECK_FUNCS([strdup])
137 AC_CHECK_FUNCS([strerror])
138 AC_CHECK_FUNCS([strtol])
139 AC_CHECK_FUNCS([strtoul])
140 AC_CHECK_FUNCS([strtoull])
141 AC_FUNC_ALLOCA
142 AC_FUNC_ERROR_AT_LINE
143 AC_FUNC_FORK
144 AC_FUNC_MALLOC
145 AC_FUNC_REALLOC
146 AC_FUNC_STRERROR_R
147
148 AC_CHECK_HEADER(umem.h, [
149 AC_DEFINE([HAVE_UMEM_H], 1,
150 [Define this if you have umem.h])
151 build_cache=no
152 ], [build_cache=yes])
153
154 AM_CONDITIONAL([BUILD_CACHE], [test "x$build_cache" = "xyes"])
155
156 AX_COMPILER_VENDOR
157
158 AC_HEADER_STDBOOL
159 AC_TYPE_INT16_T
160 AC_TYPE_INT32_T
161 AC_TYPE_INT64_T
162 AC_TYPE_INT8_T
163 AC_TYPE_OFF_T
164 AC_TYPE_PID_T
165 AC_TYPE_SSIZE_T
166 AC_TYPE_UINT16_T
167 AC_TYPE_UINT32_T
168 AC_TYPE_UINT64_T
169 AC_TYPE_UINT8_T
170
171 AC_C_BIGENDIAN
172 AC_C_CONST
173 AC_C_INLINE
174 AC_C_VOLATILE
175 AC_C_RESTRICT
176
177 AX_CXX_GCC_ABI_DEMANGLE
178
179 AX_SASL_CHECK
180
181 dnl
182 dnl The sasl functions should only be visible if we build with sasl support
183 dnl
184 AS_IF([test "x$ac_enable_sasl" = "xyes"], [
185 [ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 1" ]
186 ],[ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 0" ])
187 AC_SUBST(LIBMEMCACHED_WITH_SASL_SUPPORT)
188
189 AC_CHECK_LIB([rt], [clock_gettime], [
190 RT_LIB="-lrt"
191 AC_SUBST(RT_LIB)
192 AC_DEFINE([HAVE_CLOCK_GETTIME], [ 1 ], [Have clock_gettime])
193 ],[
194 AC_DEFINE([HAVE_CLOCK_GETTIME], [ 0 ], [Have clock_gettime])
195 ])
196
197 # Check for the ability to call dlopen
198 AC_CHECK_LIB([dl], [dlopen],[
199 DL_LIB="-ldl"
200 AC_SUBST(DL_LIB)
201 AC_DEFINE([HAVE_LIBDL], [ 1 ], [Have dlopen])
202 ],[
203 AC_DEFINE([HAVE_LIBDL], [ 0 ], [Have dlopen])
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([DRIZZLED_BINARY], [0], [Support for DrizzleD])
221 AC_DEFINE([GEARMAND_BLOBSLAP_WORKER], [0], [Support for Gearman Blobslap worker])
222 AC_DEFINE([HAVE_LIBPQ], [0], [Support for Postgres])
223 AC_DEFINE([HAVE_LIBCURL], [0], [Support for libcurl])
224
225 AC_DEFINE([HAVE_MEMCACHED_LIGHT_BINARY], [1], [Support for memcached_light])
226 AC_DEFINE([MEMCACHED_LIGHT_BINARY], ["example/memcached_light"], [Support for memcached_light])
227
228 dnl Check for the requirements for running memcached with less privileges
229 dnl than the default privilege set. On Solaris we need setppriv and priv.h
230 dnl If you want to add support for other platforms you should check for
231 dnl your requirements, define HAVE_DROP_PRIVILEGES, and make sure you add
232 dnl the source file containing the implementation into memcached_SOURCE
233 dnl in Makefile.am
234 AC_CHECK_FUNCS(setppriv, [
235 AC_CHECK_HEADER(priv.h, [
236 AC_DEFINE([HAVE_DROP_PRIVILEGES], 1,
237 [Define this if you have an implementation of drop_privileges()])
238 build_solaris_privs=yes
239 ], [])
240 ],[])
241
242 AC_CHECK_HEADERS_ONCE(winsock2.h poll.h sys/wait.h fnmatch.h)
243 AM_CONDITIONAL(BUILD_POLL, test "x$ac_cv_header_poll_h" = "xno")
244 AM_CONDITIONAL(BUILD_WIN32_WRAPPERS, test "x$ac_cv_header_winsock2_h" = "xyes")
245 AS_IF(test "x$ac_cv_header_winsock2_h" = "xyes",
246 [AM_LDFLAGS="$AM_LDFLAGS -lws2_32"
247 AM_CFLAGS="$AM_CFLAGS $NO_WERROR"
248 AM_CXXFLAGS="$AM_CXXFLAGS $NO_WERROR"
249 ])
250 SOCKET_SEND_FLAGS
251
252 AX_CHECK_LIBRARY([LIBEVENT], [event.h], [event],
253 [LIBEVENT_LDFLAGS="-levent"],
254 [AC_MSG_WARN([Unable to find libevent])])
255 AM_CONDITIONAL(HAVE_LIBEVENT, test "x${ax_cv_have_LIBEVENT}" = "xyes")
256
257 AX_UUID_GENERATE_TIME_SAFE
258
259
260 AX_PTHREAD(, [AC_MSG_ERROR([could not find libpthread])])
261 AX_PTHREAD_TIMEDJOIN_NP
262
263 PANDORA_ENABLE_DTRACE
264 AX_ENDIAN
265 AX_HEX_VERSION
266 AX_ASSERT
267 AX_CXX_COMPILER_VERSION
268 AX_HARDEN_COMPILER_FLAGS
269
270 AC_CONFIG_FILES([
271 Makefile
272 docs/conf.py
273 libhashkit-1.0/configure.h
274 libmemcached-1.0/configure.h
275 libmemcached-1.2/configure.h
276 libmemcached-2.0/configure.h
277 support/libmemcached.pc
278 support/libmemcached.spec
279 ])
280 AC_OUTPUT
281
282 echo "---"
283 echo "Configuration summary for $PACKAGE_NAME version $VERSION"
284 echo ""
285 echo " * Installation prefix: $prefix"
286 echo " * System type: $host_vendor-$host_os"
287 echo " * Host CPU: $host_cpu"
288 echo " * C Compiler: $CC_VERSION"
289 echo " * C Flags: $CFLAGS"
290 echo " * C++ Compiler: $CXX_VERSION"
291 echo " * C++ Flags: $CXXFLAGS"
292 echo " * CPP Flags: $CPPFLAGS"
293 echo " * Assertions enabled: $ac_cv_assert"
294 echo " * Debug enabled: $with_debug"
295 echo " * Warnings as failure: $ac_cv_warnings_as_errors"
296 echo " * SASL support: $ac_enable_sasl"
297 echo ""
298 echo "---"
299
300 case "$host_os" in
301 *freebsd*)
302 echo "*****"
303 echo "*"
304 echo "* NOTE: You are on FreeBSD. BSD make will not work."
305 echo "*"
306 echo "* use 'gmake' To build libmemcached"
307 echo "*"
308 echo "*****"
309 ;;
310 esac
311