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