1# Gearman server and library
2# Copyright (C) 2011-2013 Data Differential, http://datadifferential.com/
3# Copyright (C) 2008 Brian Aker, Eric Day, Monty Taylor
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
9AC_REVISION([m4_esyscmd_s([bzr revno])])
10AC_PREREQ([2.63])
11AC_INIT([gearmand],[1.0.6],[https://bugs.launchpad.net/gearmand],[gearmand],[http://gearman.info/])
12AC_CONFIG_AUX_DIR([build-aux])
13AC_CONFIG_MACRO_DIR([m4])
14
15AC_CANONICAL_TARGET
16AC_ARG_PROGRAM
17AC_USE_SYSTEM_EXTENSIONS
18
19AM_INIT_AUTOMAKE([1.11 color-tests -Wno-portability subdir-objects foreign tar-ustar])
20
21AC_CONFIG_HEADERS([gear_config.h:gear_config.in])dnl Keep filename to 8.3 for MS-DOS.
22AC_SUBST([AUTOHEADER_FILE],[gear_config.h])
23AC_CONFIG_SRCDIR([libgearman/gearman.cc])
24
25GEARMAN_LIBRARY_VERSION=7:1:0
26#                       | | |
27#                +------+ | +---+
28#                |        |     |
29#             current:revision:age
30#                |        |     |
31#                |        |     +- increment if interfaces have been added
32#                |        |        set to zero if interfaces have been removed
33#                |        |        or changed
34#                |        +- increment if source code has changed
35#                |           set to zero if current is incremented
36#                +- increment if interfaces have been added, removed or changed
37AC_SUBST([GEARMAN_LIBRARY_VERSION])
38
39LT_PREREQ([2.2])
40LT_INIT([disable-static])
41LT_LANG([C++])
42
43AC_PROG_CC_C99
44AS_IF([test "x${ac_cv_prog_cc_c99}" == "xno"],[AC_MSG_ERROR([No c99 compatible compiler found])])
45
46AX_PLATFORM
47m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
48AX_ASSERT
49
50# First look for Boost, maybe for a specific minimum version:
51AC_DEFUN([CHECK_BOOST],
52         [BOOST_REQUIRE([1.39])
53         BOOST_PROGRAM_OPTIONS])
54CHECK_BOOST
55
56m4_include([libhashkit/include.m4])
57
58AX_CXX_CINTTYPES
59CONFIG_EXTRA
60
61m4_include([libtest/yatl.m4])
62
63AM_CONDITIONAL([BUILDING_GEARMAN],true)
64AM_CONDITIONAL([HAVE_LIBGEARMAN],true)
65AC_SUBST([_WITH_LIBGEARMAN_SUPPORT],["_WITH_LIBGEARMAN_SUPPORT 0"])
66AC_DEFINE([GEARMAND_BINARY],["./gearmand/gearmand"],[Name of the gearmand binary used in make test])
67AC_DEFINE([HAVE_LIBGEARMAN],[1], [libgearman support])
68AC_DEFINE([HAVE_GEARMAND_BINARY],[1],[gearmand binary was found])
69
70AC_DEFUN([CHECK_CURL],
71         [AX_LIB_CURL([7.21.7],
72                      [AX_CHECK_LIBRARY([LIBCURL],[curl/curl.h],[curl])],
73                      [AC_DEFINE([HAVE_LIBCURL],[0],[Have the LIBCURL library])
74                      ])
75         ])
76CHECK_CURL
77AM_CONDITIONAL([HAVE_LIBCURL],[test "x${ax_cv_have_LIBCURL}" = "xyes"])
78
79m4_include([m4/drizzled.m4])
80WITH_LIBDRIZZLE
81
82AX_LIB_SQLITE3
83AS_IF([test "x${WANT_SQLITE3}" = "xyes"],
84      [AC_DEFINE([HAVE_LIBSQLITE3],[1],[Have the SQLITE3 library])],
85      [AC_DEFINE([HAVE_LIBSQLITE3],[0],[Have the SQLITE3 library])])
86AM_CONDITIONAL([HAVE_LIBSQLITE3],[test "x${WANT_SQLITE3}" = "xyes"])
87
88
89PANDORA_ENABLE_DTRACE
90AX_HAVE_LIBPQ
91PANDORA_HAVE_LIBTOKYOCABINET
92AC_FUNC_STRERROR_R
93SOCKET_SEND_FLAGS
94FCNTL_FLAGS
95AX_ENABLE_LIBHIREDIS
96
97# Checks for programs.
98AC_CHECK_PROGS([DPKG_GENSYMBOLS],[dpkg-gensymbols])
99AC_CHECK_PROGS([PERL],[perl])
100AC_CHECK_PROGS([VALGRIND],['valgrind'])
101AC_CHECK_PROGS([WINE],['wine'])
102AC_PROG_AWK
103AC_PROG_INSTALL
104AC_PROG_LN_S
105AC_PROG_MAKE_SET
106AX_PROG_MEMCACHED
107AX_PROG_SPHINX_BUILD(,[AC_MSG_WARN([sphinx-build version 1.0 or greater is required to build man pages])])
108AX_WITH_PROG([LCOV],[lcov])
109AX_WITH_PROG([LCOV_GENHTML],[genhtml])
110
111# Checks for header files.
112AC_HEADER_STDC
113AC_HEADER_SYS_WAIT
114AC_CHECK_HEADERS_ONCE([arpa/inet.h])
115AC_CHECK_HEADERS_ONCE([errno.h])
116AC_CHECK_HEADERS_ONCE([execinfo.h])
117AC_CHECK_HEADERS_ONCE([fcntl.h])
118AC_CHECK_HEADERS_ONCE([features.h])
119AC_CHECK_HEADERS_ONCE([fnmatch.h])
120AC_CHECK_HEADERS_ONCE([getopt.h])
121AC_CHECK_HEADERS_ONCE([inttypes.h])
122AC_CHECK_HEADERS_ONCE([limits.h])
123AC_CHECK_HEADERS_ONCE([mach/mach.h])
124AC_CHECK_HEADERS_ONCE([netdb.h])
125AC_CHECK_HEADERS_ONCE([netinet/in.h])
126AC_CHECK_HEADERS_ONCE([netinet/tcp.h])
127AC_CHECK_HEADERS_ONCE([poll.h])
128AC_CHECK_HEADERS_ONCE([pwd.h])
129AC_CHECK_HEADERS_ONCE([signal.h])
130AC_CHECK_HEADERS_ONCE([spawn.h])
131AC_CHECK_HEADERS_ONCE([stdarg.h])
132AC_CHECK_HEADERS_ONCE([stddef.h])
133AC_CHECK_HEADERS_ONCE([stdint.h])
134AC_CHECK_HEADERS_ONCE([stdio.h])
135AC_CHECK_HEADERS_ONCE([stdlib.h])
136AC_CHECK_HEADERS_ONCE([string.h])
137AC_CHECK_HEADERS_ONCE([strings.h])
138AC_CHECK_HEADERS_ONCE([sys/resource.h])
139AC_CHECK_HEADERS_ONCE([sys/socket.h])
140AC_CHECK_HEADERS_ONCE([sys/stat.h])
141AC_CHECK_HEADERS_ONCE([sys/time.h])
142AC_CHECK_HEADERS_ONCE([sys/types.h])
143AC_CHECK_HEADERS_ONCE([sys/utsname.h])
144AC_CHECK_HEADERS_ONCE([sys/wait.h])
145AC_CHECK_HEADERS_ONCE([syslog.h])
146AC_CHECK_HEADERS_ONCE([unistd.h])
147AC_CHECK_HEADERS_ONCE([winsock2.h])
148AC_CHECK_HEADERS_ONCE([libmemcached-1.0/types/return.h])
149
150AM_CONDITIONAL([BUILD_WIN32_WRAPPERS],[test "x$ac_cv_header_winsock2_h" = "xyes"])
151AS_IF([test "x$ac_cv_header_winsock2_h" = "xyes"],
152      [AM_LDFLAGS="$AM_LDFLAGS -lws2_32"
153       AM_CFLAGS="$AM_CFLAGS $NO_WERROR"
154       AM_CXXFLAGS="$AM_CXXFLAGS $NO_WERROR"
155       ])
156
157# Checks for typedefs, structures, and compiler characteristics.
158AC_CHECK_TYPES([ptrdiff_t])
159AC_C_CONST
160AC_C_INLINE
161AC_C_VOLATILE
162AC_HEADER_STDBOOL
163AC_HEADER_TIME
164AC_TYPE_INT32_T
165AC_TYPE_INT64_T
166AC_TYPE_OFF_T
167AC_TYPE_PID_T
168AC_TYPE_SIZE_T
169AC_TYPE_SSIZE_T
170AC_TYPE_UID_T
171AC_TYPE_UINT16_T
172AC_TYPE_UINT32_T
173AC_TYPE_UINT64_T
174AC_TYPE_UINT8_T
175
176# Checks for library functions.
177AC_FUNC_ERROR_AT_LINE
178AC_FUNC_FORK
179AC_FUNC_MEMCMP
180AC_FUNC_STRERROR_R
181AC_FUNC_VPRINTF
182AC_REPLACE_FNMATCH
183AC_CHECK_FUNCS([accept4])
184AC_CHECK_FUNCS([dup2])
185AC_CHECK_FUNCS([gettimeofday])
186AC_CHECK_FUNCS([memchr])
187AC_CHECK_FUNCS([memmove])
188AC_CHECK_FUNCS([memset])
189AC_CHECK_FUNCS([pipe])
190AC_CHECK_FUNCS([pipe2])
191AC_CHECK_FUNCS([select])
192AC_CHECK_FUNCS([setenv])
193AC_CHECK_FUNCS([socket])
194AC_CHECK_FUNCS([strcasecmp])
195AC_CHECK_FUNCS([strdup])
196AC_CHECK_FUNCS([strerror])
197AC_CHECK_FUNCS([strncasecmp])
198AC_CHECK_FUNCS([strtol])
199AC_CHECK_FUNCS([strtoul])
200AC_CHECK_FUNCS([uname])
201AC_CHECK_FUNCS([atexit])
202AC_CHECK_FUNCS([clock_gettime])
203AC_CHECK_FUNCS([getcwd])
204AC_CHECK_FUNCS([strstr])
205AC_CHECK_FUNC([setsockopt],[],[AC_CHECK_LIB([socket],[setsockopt])])
206AC_CHECK_FUNC([bind],[],[AC_CHECK_LIB([bind],[bind])])
207
208
209# Check for the ability to call dlopen (used in libhostile)
210AX_DLOPEN
211
212# Check for -lrt
213AC_CHECK_LIB([rt],[clock_gettime],
214             [AC_SUBST([RT_LIB],[-lrt])
215             AC_DEFINE([HAVE_LIBRT],[1],[Have clock_gettime])
216             ])
217
218# Check for -lm
219LT_LIB_M
220
221# Check for CyaSSL
222AX_CHECK_LIBRARY([CYASSL],[cyassl/ssl.h],[cyassl])
223AX_ENABLE_LIBMEMCACHED
224
225AC_DEFINE([GEARMAND_BLOBSLAP_WORKER],[1],[Have Gearman Blobslap Worker])
226
227AX_LIBEVENT(,[AC_MSG_ERROR([Unable to find libevent])])
228
229AX_UUID_GENERATE_TIME_SAFE
230
231AX_AM_JOBSERVER([yes])
232
233AS_IF([test "x${TARGET_LINUX}" = "xtrue"],
234      [AC_DEFINE([BUILD_LIBHOSTILE],[1],[Build libhostile])],[AC_DEFINE([BUILD_LIBHOSTILE],[0],[Build libhostile])])
235AM_CONDITIONAL([TARGET_HOSTILE],[test "x${TARGET_LINUX}" = "xtrue"])
236
237AX_PTHREAD(, [AC_MSG_ERROR(could not find libpthread)])
238AX_PTHREAD_TIMEDJOIN_NP
239AX_ENDIAN
240AX_HEX_VERSION([LIBGEARMAN],[$VERSION])
241AX_HARDEN_COMPILER_FLAGS
242
243AM_CONDITIONAL([TARGET_MINGW],[test "x${MINGW}" = "xtrue"])
244
245# backtrace(), others require shared builds
246AS_IF([test "x$enable_shared" = "xyes"],
247      [AC_DEFINE([HAVE_SHARED_ENABLED],[1],[Enable code which requires shared library support. Like backtrace().])
248      AX_CXX_GCC_ABI_DEMANGLE])
249AM_CONDITIONAL([SHARED_ENABLED],[test "x$enable_shared" = "xyes"])
250
251AC_CONFIG_FILES([Makefile
252                 docs/conf.py
253                 libgearman-1.0/version.h
254                 scripts/gearmand
255                 scripts/gearmand-init
256                 scripts/gearmand.xml
257                 scripts/smf_install.sh
258                 support/gearmand.pc
259                 support/gearmand.spec])
260
261AC_OUTPUT
262
263echo "---"
264echo "Configuration summary for $PACKAGE_NAME version $VERSION"
265echo ""
266echo "   * Installation prefix:       $prefix"
267echo "   * System type:               $host_vendor-$host_os"
268echo "   * Host CPU:                  $host_cpu"
269echo "   * C Compiler:                $CC_VERSION"
270echo "   * C Flags:                   $CFLAGS"
271echo "   * C++ Compiler:              $CXX_VERSION"
272echo "   * C++ Flags:                 $CXXFLAGS"
273echo "   * CPP Flags:                 $CPPFLAGS"
274echo "   * LIBS:                      $LIBS"
275echo "   * LDFLAGS Flags:             $LDFLAGS"
276echo "   * Assertions enabled:        $ax_enable_assert"
277echo "   * Debug enabled:             $ax_enable_debug"
278echo "   * Warnings as failure:       $ac_cv_warnings_as_errors"
279echo "   * Building with libsqlite3   $WANT_SQLITE3"
280echo "   * Building with libdrizzle   $ac_enable_libdrizzle"
281echo "   * Building with libmemcached $ax_enable_libmemcached"
282echo "   * Building with libpq        $ac_cv_libpq"
283echo "   * Building with tokyocabinet $ac_enable_libtokyocabinet"
284echo "   * Building with libmysql     $found_mysql"
285echo "   * make -j:                   $enable_jobserver"
286echo "   * VCS checkout:              $ac_cv_vcs_checkout"
287echo ""
288echo "---"
289
290case "$host_os" in
291  *freebsd*)
292    echo "*****"
293    echo "*"
294    echo "*  NOTE: You are on FreeBSD. BSD 'make' will not work."
295    echo "*"
296    echo "*   use 'gmake' To build gearmand"
297    echo "*"
298    echo "*****"
299  ;;
300esac
301
302