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