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