Merge lp:~tangent-org/libmemcached/1.0-build Build: jenkins-Libmemcached-1.0-89
[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.14],[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([1.11 color-tests -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 AX_HEX_VERSION([LIBMEMCACHED],[$VERSION])
43 AX_HEX_VERSION([LIBHASHKIT],[1.0.0])
44
45 m4_include([libhashkit/include.m4])
46
47 LT_PREREQ([2.2])
48 LT_INIT
49 LT_LANG([C++])
50
51 AX_ASSERT
52
53 AX_PLATFORM
54
55 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
56
57 AX_CXX_HEADER_STDCXX_98
58 AS_IF([ test "$ax_cv_cxx_stdcxx_98" = no ],[
59 AC_MSG_ERROR([Your system lacks a new enough C++ compiler])
60 ])
61
62 AC_DEFUN([LIBMEMCACHED_PROTOCOL],
63 [AC_ARG_ENABLE([libmemcachedprotocol],
64 [AS_HELP_STRING([--enable-libmemcachedprotocol],
65 [Enable libmemcachedprotocol])],
66 [ax_enable_libmemcachedprotocol=yes],
67 [ax_enable_libmemcachedprotocol=no])
68
69 AM_CONDITIONAL([BUILD_LIBMEMCACHED_PROTOCOL],[test "$ax_enable_libmemcachedprotocol" = "yes"])
70
71 AC_MSG_CHECKING([for libmemcachedprotocol])
72 AC_MSG_RESULT([$ax_enable_libmemcachedprotocol])
73 ])
74 LIBMEMCACHED_PROTOCOL
75
76 # Adding support for libtest
77 m4_include([libtest/yatl.m4])
78
79 m4_include([m4/memcached_sasl.m4])
80 m4_include([m4/gearmand.m4])
81 m4_include([m4/libgearman.m4])
82
83 AM_CONDITIONAL([BUILDING_LIBMEMCACHED], [true])
84 AM_CONDITIONAL([HAVE_LIBMEMCACHED], [false])
85 AM_CONDITIONAL([HAVE_LIBDRIZZLE], [false])
86 AC_DEFINE([HAVE_LIBMEMCACHED], [1], [Enables libmemcached Support])
87
88 AM_CONDITIONAL([BUILDING_GEARMAN], [false])
89
90 dnl Specialty checks
91 AX_CXX_CINTTYPES
92 CONFIG_EXTRA
93 DETECT_BYTEORDER
94 SETSOCKOPT_SANITY
95 ENABLE_HSIEH_HASH
96 ENABLE_MURMUR_HASH
97 ENABLE_FNV64_HASH
98 ENABLE_MEMASLAP
99 PROTOCOL_BINARY_TEST
100 ENABLE_DEPRECATED
101
102 # Checks for programs.
103 AC_CHECK_PROGS([LEX], ['flex'], [:])
104 AC_CHECK_PROGS([YACC], ['bison'], [:])
105 AX_PROG_SPHINX_BUILD
106
107 # Checks for libraries.
108 AC_SEARCH_LIBS(getopt_long, gnugetopt)
109 AC_SEARCH_LIBS(gethostbyname, nsl)
110
111 # Checks for header files.
112 AC_CHECK_HEADERS([arpa/inet.h])
113 AC_CHECK_HEADERS([errno.h])
114 AC_CHECK_HEADERS([dlfcn.h])
115 AC_CHECK_HEADERS([execinfo.h])
116 AC_CHECK_HEADERS([fcntl.h])
117 AC_CHECK_HEADERS([inttypes.h])
118 AC_CHECK_HEADERS([libintl.h])
119 AC_CHECK_HEADERS([limits.h])
120 AC_CHECK_HEADERS([math.h])
121 AC_CHECK_HEADERS([netdb.h])
122 AC_CHECK_HEADERS([netinet/in.h])
123 AC_CHECK_HEADERS([netinet/tcp.h])
124 AC_CHECK_HEADERS([pthread.h])
125 AC_CHECK_HEADERS([spawn.h])
126 AC_CHECK_HEADERS([stdarg.h])
127 AC_CHECK_HEADERS([stddef.h])
128 AC_CHECK_HEADERS([stdio.h])
129 AC_CHECK_HEADERS([stdlib.h])
130 AC_CHECK_HEADERS([sys/socket.h])
131 AC_CHECK_HEADERS([sys/sysctl.h])
132 AC_CHECK_HEADERS([sys/time.h])
133 AC_CHECK_HEADERS([sys/un.h])
134 AC_CHECK_HEADERS([time.h])
135 AC_CHECK_HEADERS([unistd.h])
136
137 # Windows only
138 AC_CHECK_HEADERS([winsock2.h])
139 AC_CHECK_HEADERS([ws2tcpip.h])
140
141 # Checks for typedefs, structures, and compiler characteristics.
142
143 # Checks for library functions.
144
145 AC_CHECK_FUNCS([alarm])
146 AC_CHECK_FUNCS([dup2])
147 AC_CHECK_FUNCS([getline])
148 AC_CHECK_FUNCS([gettimeofday])
149 AC_CHECK_FUNCS([memchr])
150 AC_CHECK_FUNCS([memmove])
151 AC_CHECK_FUNCS([memset])
152 AC_CHECK_FUNCS([pipe2])
153 AC_CHECK_FUNCS([select])
154 AC_CHECK_FUNCS([setenv])
155 AC_CHECK_FUNCS([socket])
156 AC_CHECK_FUNCS([sqrt])
157 AC_CHECK_FUNCS([strcasecmp])
158 AC_CHECK_FUNCS([strchr])
159 AC_CHECK_FUNCS([strdup])
160 AC_CHECK_FUNCS([strerror])
161 AC_CHECK_FUNCS([strtol])
162 AC_CHECK_FUNCS([strtoul])
163 AC_CHECK_FUNCS([strtoull])
164 AC_FUNC_ALLOCA
165 AC_FUNC_ERROR_AT_LINE
166 AC_FUNC_FORK
167 AC_FUNC_STRERROR_R
168
169 AC_CHECK_HEADER([umem.h], [
170 AC_DEFINE([HAVE_UMEM_H], 1,
171 [Define this if you have umem.h])
172 build_cache=no
173 ], [build_cache=yes])
174
175 AM_CONDITIONAL([BUILD_CACHE], [test "x$build_cache" = "xyes"])
176
177 AX_COMPILER_VENDOR
178
179 AC_HEADER_STDBOOL
180 AC_TYPE_INT16_T
181 AC_TYPE_INT32_T
182 AC_TYPE_INT64_T
183 AC_TYPE_INT8_T
184 AC_TYPE_OFF_T
185 AC_TYPE_PID_T
186 AC_TYPE_SSIZE_T
187 AC_TYPE_UINT16_T
188 AC_TYPE_UINT32_T
189 AC_TYPE_UINT64_T
190 AC_TYPE_UINT8_T
191
192 AC_C_BIGENDIAN
193 AC_C_CONST
194 AC_C_INLINE
195 AC_C_VOLATILE
196 AC_C_RESTRICT
197
198 AX_CXX_GCC_ABI_DEMANGLE
199
200 AX_SASL_CHECK
201 AX_LIBEVENT
202
203 dnl
204 dnl The sasl functions should only be visible if we build with sasl support
205 dnl
206 AS_IF([test "x$ac_enable_sasl" = "xyes"], [
207 [ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 1" ]
208 ],[ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 0" ])
209 AC_SUBST(LIBMEMCACHED_WITH_SASL_SUPPORT)
210
211 AC_CHECK_LIB([rt],[clock_gettime], [
212 RT_LIB="-lrt"
213 AC_SUBST(RT_LIB)
214 AC_DEFINE([HAVE_CLOCK_GETTIME], [ 1 ], [Have clock_gettime])
215 ],[
216 AC_DEFINE([HAVE_CLOCK_GETTIME], [ 0 ], [Have clock_gettime])
217 ])
218
219 # Check for the ability to call dlopen
220 AC_CHECK_LIB([dl],[dlopen], [
221 DL_LIB="-ldl"
222 AC_SUBST([DL_LIB])
223 AC_DEFINE([HAVE_LIBDL],[1],[Have dlopen])
224 ],[
225 AC_DEFINE([HAVE_LIBDL], [0], [Have dlopen])
226 ])
227
228 AC_CHECK_LIB([m],[floor])
229 AC_CHECK_FUNCS([sigignore])
230
231 AC_CHECK_HEADERS([atomic.h])
232 AS_IF([test "x$ac_cv_header_atomic_h" = "xyes"],[
233 AC_CHECK_FUNCS([atomic_add_64])
234 AC_CHECK_FUNCS([atomic_add_32])
235 AS_IF([test "x$ac_cv_func_atomic_add_64" = "xyes" -a "x$ac_cv_func_atomic_add_32" = "xyes"],[
236 AC_DEFINE([USE_ATOMIC_H],
237 [1],
238 [Define to true if you want to use functions from atomic.h])])])
239
240 AC_DEFINE([HAVE_LIBDRIZZLE], [0], [Support for libdrizzle])
241 AC_DEFINE([HAVE_DRIZZLED_BINARY], [0], [Support for DrizzleD])
242 AC_DEFINE([DRIZZLED_BINARY], [0], [Support for DrizzleD])
243 AC_DEFINE([GEARMAND_BLOBSLAP_WORKER], [0], [Support for Gearman Blobslap worker])
244 AC_DEFINE([HAVE_LIBPQ], [0], [Support for Postgres])
245 AC_DEFINE([HAVE_LIBCURL], [0], [Support for libcurl])
246
247 AC_DEFINE([HAVE_MEMCACHED_LIGHT_BINARY], [1], [Support for memcached_light])
248 AC_DEFINE([MEMCACHED_LIGHT_BINARY], ["example/memcached_light"], [Support for memcached_light])
249
250 dnl Check for the requirements for running memcached with less privileges
251 dnl than the default privilege set. On Solaris we need setppriv and priv.h
252 dnl If you want to add support for other platforms you should check for
253 dnl your requirements, define HAVE_DROP_PRIVILEGES, and make sure you add
254 dnl the source file containing the implementation into memcached_SOURCE
255 dnl in Makefile.am
256 AC_CHECK_FUNCS([setppriv], [
257 AC_CHECK_HEADER([priv.h], [
258 AC_DEFINE([HAVE_DROP_PRIVILEGES], 1,
259 [Define this if you have an implementation of drop_privileges()])
260 build_solaris_privs=yes
261 ], [])
262 ],[])
263
264 AC_CHECK_HEADERS_ONCE(winsock2.h poll.h sys/wait.h fnmatch.h)
265 AM_CONDITIONAL(BUILD_POLL, test "x$ac_cv_header_poll_h" = "xno")
266 AM_CONDITIONAL(BUILD_WIN32_WRAPPERS, test "x$ac_cv_header_winsock2_h" = "xyes")
267 AS_IF(test "x$ac_cv_header_winsock2_h" = "xyes",
268 [AM_LDFLAGS="$AM_LDFLAGS -lws2_32"
269 AM_CFLAGS="$AM_CFLAGS $NO_WERROR"
270 AM_CXXFLAGS="$AM_CXXFLAGS $NO_WERROR"
271 ])
272 SOCKET_SEND_FLAGS
273
274 AX_UUID_GENERATE_TIME_SAFE
275
276
277 AX_PTHREAD(, [AC_MSG_ERROR([could not find libpthread])])
278 AX_PTHREAD_TIMEDJOIN_NP
279
280 PANDORA_ENABLE_DTRACE
281 AX_ENDIAN
282 AX_ASSERT
283 AX_CXX_COMPILER_VERSION
284 AX_HARDEN_COMPILER_FLAGS
285
286 AX_AM_JOBSERVER([yes])
287
288 AC_CONFIG_FILES([
289 Makefile
290 docs/conf.py
291 libmemcached-1.0/configure.h
292 support/libmemcached.pc
293 support/libmemcached.spec
294 ])
295 AC_OUTPUT
296
297 echo "---"
298 echo "Configuration summary for $PACKAGE_NAME version $VERSION"
299 echo ""
300 echo " * Installation prefix: $prefix"
301 echo " * System type: $host_vendor-$host_os"
302 echo " * Host CPU: $host_cpu"
303 echo " * C Compiler: $CC_VERSION"
304 echo " * C Flags: $CFLAGS"
305 echo " * C++ Compiler: $CXX_VERSION"
306 echo " * C++ Flags: $CXXFLAGS"
307 echo " * CPP Flags: $CPPFLAGS"
308 echo " * LIB Flags: $LIB"
309 echo " * Assertions enabled: $ax_enable_assert"
310 echo " * Debug enabled: $ax_enable_debug"
311 echo " * Warnings as failure: $ac_cv_warnings_as_errors"
312 echo " * SASL support: $ac_enable_sasl"
313 echo " * make -j: $enable_jobserver"
314 echo " * VCS checkout: $ac_cv_vcs_checkout"
315 echo ""
316 echo "---"
317
318 case "$host_os" in
319 *freebsd*)
320 echo "*****"
321 echo "*"
322 echo "* NOTE: You are on FreeBSD. BSD make will not work."
323 echo "*"
324 echo "* use 'gmake' To build libmemcached"
325 echo "*"
326 echo "*****"
327 ;;
328 esac
329