Fix for OSX
[m6w6/libmemcached] / configure.ac
index de2bc88159b38238939fb2597a385157a4cd5fd0..d9d1cd48252cebdfbfe877caa88d0d418a1ffc98 100644 (file)
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # LibmemcacheD
 # Copyright (C) 2011-2012 Data Differential, http://datadifferential.com/
 # Copyright (C) 2006-2010 Brian Aker, Monty Taylor, Trond Norbye
@@ -7,33 +6,25 @@
 # Use and distribution licensed under the BSD license.  See
 # the COPYING file in this directory for full text.
 
-AC_INIT([libmemcached],[1.0.6],[http://libmemcached.org/])
-
-AC_CONFIG_AUX_DIR(config)
+AC_INIT([libmemcached],[1.0.14],[http://libmemcached.org/])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_MACRO_DIR([m4])
 
 AC_CANONICAL_TARGET
+AC_ARG_PROGRAM
+AC_USE_SYSTEM_EXTENSIONS
 
-AM_INIT_AUTOMAKE
-
-AC_CANONICAL_HOST
-AC_CANONICAL_BUILD
+AM_INIT_AUTOMAKE([1.11 color-tests -Wno-portability subdir-objects foreign tar-ustar])
 
 AC_PREREQ([2.61])
 
-AC_CONFIG_MACRO_DIR(m4)
-
-AC_CONFIG_HEADERS([config.h:config.in])dnl Keep filename to 8.3 for MS-DOS.
-
+AC_CONFIG_HEADERS([mem_config.h:mem_config.in])dnl Keep filename to 8.3 for MS-DOS.
 AC_CONFIG_SRCDIR([libmemcached/memcached.cc])
 
-PANDORA_CANONICAL_TARGET(no-vc-changelog)
-AC_CHECK_PROGS([YACC], ['bison'], [:])
-AC_CHECK_PROGS([LEX], ['flex'], [:])
-
 #shared library versioning
 MEMCACHED_UTIL_LIBRARY_VERSION=2:0:0
 MEMCACHED_PROTOCAL_LIBRARY_VERSION=0:0:0
-MEMCACHED_LIBRARY_VERSION=10:0:0
+MEMCACHED_LIBRARY_VERSION=11:0:0
 #                         | | |
 #                  +------+ | +---+
 #                  |        |     |
@@ -44,51 +35,59 @@ MEMCACHED_LIBRARY_VERSION=10:0:0
 #                  |        +- increment if source code has changed
 #                  |           set to zero if current is incremented
 #                  +- increment if interfaces have been added, removed or changed
-AC_SUBST(MEMCACHED_UTIL_LIBRARY_VERSION)
-AC_SUBST(MEMCACHED_PROTOCAL_LIBRARY_VERSION)
-AC_SUBST(MEMCACHED_LIBRARY_VERSION)
+AC_SUBST([MEMCACHED_UTIL_LIBRARY_VERSION])
+AC_SUBST([MEMCACHED_PROTOCAL_LIBRARY_VERSION])
+AC_SUBST([MEMCACHED_LIBRARY_VERSION])
 
+AX_HEX_VERSION([LIBMEMCACHED],[$VERSION])
+AX_HEX_VERSION([LIBHASHKIT],[1.0.0])
 
-HASHKIT_LIBRARY_VERSION=2:0:0
-AC_SUBST(HASHKIT_LIBRARY_VERSION)
+m4_include([libhashkit/include.m4])
 
 LT_PREREQ([2.2])
-LT_INIT()
+LT_INIT
 LT_LANG([C++])
-LT_LANG([C])
-gl_VISIBILITY
+
+AX_ASSERT
+
+AX_PLATFORM
+
+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 
 AX_CXX_HEADER_STDCXX_98
-  if test "$ax_cv_cxx_stdcxx_98" = no; then
-    AC_MSG_ERROR([Your system lacks a new enough C++ compiler])
-  fi
+AS_IF([ test "$ax_cv_cxx_stdcxx_98" = no ],[
+       AC_MSG_ERROR([Your system lacks a new enough C++ compiler])
+       ])
+
+AC_DEFUN([LIBMEMCACHED_PROTOCOL],
+         [AC_ARG_ENABLE([libmemcachedprotocol],
+                        [AS_HELP_STRING([--enable-libmemcachedprotocol],
+                                        [Enable libmemcachedprotocol])],
+                                        [ax_enable_libmemcachedprotocol=yes],
+                                        [ax_enable_libmemcachedprotocol=no])
+
+         AM_CONDITIONAL([BUILD_LIBMEMCACHED_PROTOCOL],[test "$ax_enable_libmemcachedprotocol" = "yes"])
+
+         AC_MSG_CHECKING([for libmemcachedprotocol])
+         AC_MSG_RESULT([$ax_enable_libmemcachedprotocol])
+         ])
+LIBMEMCACHED_PROTOCOL
+
+# Adding support for libtest
+m4_include([libtest/yatl.m4])
 
-m4_include([m4/memcached.m4])
 m4_include([m4/memcached_sasl.m4])
 m4_include([m4/gearmand.m4])
 m4_include([m4/libgearman.m4])
-m4_include([memcached/version.m4])
 
-AM_CONDITIONAL(BUILDING_LIBMEMCACHED, true)
-AM_CONDITIONAL(HAVE_LIBMEMCACHED, false)
+AM_CONDITIONAL([BUILDING_LIBMEMCACHED], [true])
+AM_CONDITIONAL([HAVE_LIBMEMCACHED], [false])
+AM_CONDITIONAL([HAVE_LIBDRIZZLE], [false])
 AC_DEFINE([HAVE_LIBMEMCACHED], [1], [Enables libmemcached Support])
 
-AM_CONDITIONAL(BUILDING_GEARMAN, false)
-
-AC_SEARCH_LIBS(getopt_long, gnugetopt)
-AC_SEARCH_LIBS(gethostbyname, nsl)
-
-case "$target_os" in
-  *linux*)
-       AS_IF([test "x$GCC" = "xyes"],
-             [
-              LDFLAGS="$LDFLAGS -z relro -z now"
-              ])
-   ;;
-   esac
+AM_CONDITIONAL([BUILDING_GEARMAN], [false])
 
 dnl Specialty checks
-AX_PTHREAD
 AX_CXX_CINTTYPES
 CONFIG_EXTRA
 DETECT_BYTEORDER
@@ -100,8 +99,52 @@ ENABLE_MEMASLAP
 PROTOCOL_BINARY_TEST
 ENABLE_DEPRECATED
 
+# Checks for programs.
+AC_CHECK_PROGS([LEX], ['flex'], [:])
+AC_CHECK_PROGS([YACC], ['bison'], [:])
+AX_PROG_SPHINX_BUILD
+
+# Checks for libraries.
+AC_SEARCH_LIBS(getopt_long, gnugetopt)
+AC_SEARCH_LIBS(gethostbyname, nsl)
+
+# Checks for header files.
+AC_CHECK_HEADERS([arpa/inet.h])
+AC_CHECK_HEADERS([errno.h])
+AC_CHECK_HEADERS([dlfcn.h])
+AC_CHECK_HEADERS([execinfo.h])
+AC_CHECK_HEADERS([fcntl.h])
+AC_CHECK_HEADERS([inttypes.h])
+AC_CHECK_HEADERS([libintl.h])
+AC_CHECK_HEADERS([limits.h])
+AC_CHECK_HEADERS([math.h])
+AC_CHECK_HEADERS([netdb.h])
+AC_CHECK_HEADERS([netinet/in.h])
+AC_CHECK_HEADERS([netinet/tcp.h])
+AC_CHECK_HEADERS([pthread.h])
+AC_CHECK_HEADERS([spawn.h])
+AC_CHECK_HEADERS([stdarg.h])
+AC_CHECK_HEADERS([stddef.h])
+AC_CHECK_HEADERS([stdio.h])
+AC_CHECK_HEADERS([stdlib.h])
+AC_CHECK_HEADERS([sys/socket.h])
+AC_CHECK_HEADERS([sys/sysctl.h])
+AC_CHECK_HEADERS([sys/time.h])
+AC_CHECK_HEADERS([sys/un.h])
+AC_CHECK_HEADERS([time.h])
+AC_CHECK_HEADERS([unistd.h])
+
+# Windows only
+AC_CHECK_HEADERS([winsock2.h])
+AC_CHECK_HEADERS([ws2tcpip.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+
+# Checks for library functions.
+
 AC_CHECK_FUNCS([alarm])
 AC_CHECK_FUNCS([dup2])
+AC_CHECK_FUNCS([fcntl])
 AC_CHECK_FUNCS([getline])
 AC_CHECK_FUNCS([gettimeofday])
 AC_CHECK_FUNCS([memchr])
@@ -119,24 +162,12 @@ AC_CHECK_FUNCS([strerror])
 AC_CHECK_FUNCS([strtol])
 AC_CHECK_FUNCS([strtoul])
 AC_CHECK_FUNCS([strtoull])
+AC_FUNC_ALLOCA
+AC_FUNC_ERROR_AT_LINE
+AC_FUNC_FORK
+AC_FUNC_STRERROR_R
 
-AC_CHECK_HEADERS([arpa/inet.h])
-AC_CHECK_HEADERS([fcntl.h])
-AC_CHECK_HEADERS([libintl.h])
-AC_CHECK_HEADERS([limits.h])
-AC_CHECK_HEADERS([malloc.h])
-AC_CHECK_HEADERS([netdb.h])
-AC_CHECK_HEADERS([netinet/in.h])
-AC_CHECK_HEADERS([stddef.h])
-AC_CHECK_HEADERS([sys/time.h])
-AC_CHECK_HEADERS([execinfo.h])
-AC_CHECK_HEADERS([cxxabi.h], 
-                 AC_DEFINE([HAVE_CXXABI_H], [1], [Have cxxabi.h]),
-                 AC_DEFINE([HAVE_CXXABI_H], [0], [Have cxxabi.h]))
-
-AC_CHECK_HEADERS([sys/sysctl.h])
-
-AC_CHECK_HEADER(umem.h, [
+AC_CHECK_HEADER([umem.h], [
    AC_DEFINE([HAVE_UMEM_H], 1,
          [Define this if you have umem.h])
    build_cache=no
@@ -146,12 +177,6 @@ AM_CONDITIONAL([BUILD_CACHE], [test "x$build_cache" = "xyes"])
 
 AX_COMPILER_VENDOR
 
-AC_FUNC_ALLOCA
-AC_FUNC_ERROR_AT_LINE
-AC_FUNC_FORK
-AC_FUNC_MALLOC
-AC_FUNC_REALLOC
-AC_FUNC_STRERROR_R
 AC_HEADER_STDBOOL
 AC_TYPE_INT16_T
 AC_TYPE_INT32_T
@@ -174,43 +199,40 @@ AC_C_RESTRICT
 AX_CXX_GCC_ABI_DEMANGLE
 
 AX_SASL_CHECK
+AX_LIBEVENT
 
 dnl
 dnl The sasl functions should only be visible if we build with sasl support
 dnl
 AS_IF([test "x$ac_enable_sasl" = "xyes"], [
        [ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 1" ]
-       ], [
-           [ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 0" ]
-           ])
+       ],[ LIBMEMCACHED_WITH_SASL_SUPPORT="#define LIBMEMCACHED_WITH_SASL_SUPPORT 0" ])
 AC_SUBST(LIBMEMCACHED_WITH_SASL_SUPPORT)
 
-AX_CHECK_LIBRARY([LIBUUID], [uuid/uuid.h], [uuid], 
-                 [
-                  LIBUUID_LDFLAGS="-luuid"
-                  AC_DEFINE([HAVE_LIBUUID], [ 1 ], [Have libuuid])
-                  ],
-                 [
-                  AC_DEFINE([HAVE_LIBUUID], [ 0 ], [Have libuuid])
-                  ])
-
-AC_CHECK_LIB([rt], [clock_gettime], 
-             [
+AC_CHECK_LIB([rt],[clock_gettime], [
               RT_LIB="-lrt"
               AC_SUBST(RT_LIB)
-              AC_DEFINE([HAVE_LIBRT], [ 1 ], [Have clock_gettime])
-              ], 
-             [
-              AC_DEFINE([HAVE_LIBRT], [ 0 ], [Have clock_gettime])
+              AC_DEFINE([HAVE_CLOCK_GETTIME], [ 1 ], [Have clock_gettime])
+              ],[
+              AC_DEFINE([HAVE_CLOCK_GETTIME], [ 0 ], [Have clock_gettime])
               ])
 
-AC_CHECK_LIB([m], [floor])
+# Check for the ability to call dlopen
+AC_CHECK_LIB([dl],[dlopen], [
+              DL_LIB="-ldl"
+              AC_SUBST([DL_LIB])
+              AC_DEFINE([HAVE_LIBDL],[1],[Have dlopen])
+              ],[
+                 AC_DEFINE([HAVE_LIBDL], [0], [Have dlopen])
+                 ])
+
+AC_CHECK_LIB([m],[floor])
 AC_CHECK_FUNCS([sigignore])
 
 AC_CHECK_HEADERS([atomic.h])
 AS_IF([test "x$ac_cv_header_atomic_h" = "xyes"],[
-      AC_CHECK_FUNCS(atomic_add_64)
-      AC_CHECK_FUNCS(atomic_add_32)
+      AC_CHECK_FUNCS([atomic_add_64])
+      AC_CHECK_FUNCS([atomic_add_32])
       AS_IF([test "x$ac_cv_func_atomic_add_64" = "xyes" -a "x$ac_cv_func_atomic_add_32" = "xyes"],[
             AC_DEFINE([USE_ATOMIC_H],
                      [1],
@@ -218,30 +240,28 @@ AS_IF([test "x$ac_cv_header_atomic_h" = "xyes"],[
 
 AC_DEFINE([HAVE_LIBDRIZZLE], [0], [Support for libdrizzle])
 AC_DEFINE([HAVE_DRIZZLED_BINARY], [0], [Support for DrizzleD])
+AC_DEFINE([DRIZZLED_BINARY], [0], [Support for DrizzleD])
 AC_DEFINE([GEARMAND_BLOBSLAP_WORKER], [0], [Support for Gearman Blobslap worker])
 AC_DEFINE([HAVE_LIBPQ], [0], [Support for Postgres])
 AC_DEFINE([HAVE_LIBCURL], [0], [Support for libcurl])
 
-AC_DEFINE([HAVE_MEMCACHED_LIGHT_BINARY], [1], [Support for memcached_light])
-AC_DEFINE([MEMCACHED_LIGHT_BINARY], ["example/memcached_light"], [Support for memcached_light])
-
 dnl Check for the requirements for running memcached with less privileges
 dnl than the default privilege set. On Solaris we need setppriv and priv.h
 dnl If you want to add support for other platforms you should check for
 dnl your requirements, define HAVE_DROP_PRIVILEGES, and make sure you add
 dnl the source file containing the implementation into memcached_SOURCE
 dnl in Makefile.am
-AC_CHECK_FUNCS(setppriv, [
-   AC_CHECK_HEADER(priv.h, [
-      AC_DEFINE([HAVE_DROP_PRIVILEGES], 1,
-         [Define this if you have an implementation of drop_privileges()])
-      build_solaris_privs=yes
-   ], [])
-],[])
-
-AC_CHECK_HEADERS_ONCE(winsock2.h poll.h sys/wait.h fnmatch.h)
-AM_CONDITIONAL(BUILD_POLL, test "x$ac_cv_header_poll_h" = "xno")
-AM_CONDITIONAL(BUILD_WIN32_WRAPPERS, test "x$ac_cv_header_winsock2_h" = "xyes")
+AC_CHECK_FUNCS([setppriv],
+               [AC_CHECK_HEADER([priv.h],
+                                [AC_DEFINE([HAVE_DROP_PRIVILEGES],
+                                           [1],
+                                           [Define this if you have an implementation of drop_privileges()])
+                                build_solaris_privs=yes])
+               ])
+
+AC_CHECK_HEADERS_ONCE([winsock2.h poll.h sys/wait.h fnmatch.h])
+AM_CONDITIONAL([BUILD_POLL],[test "x$ac_cv_header_poll_h" = "xno"])
+AM_CONDITIONAL([BUILD_WIN32_WRAPPERS],[test "x$ac_cv_header_winsock2_h" = "xyes"])
 AS_IF(test "x$ac_cv_header_winsock2_h" = "xyes",
       [AM_LDFLAGS="$AM_LDFLAGS -lws2_32"
        AM_CFLAGS="$AM_CFLAGS $NO_WERROR"
@@ -249,52 +269,26 @@ AS_IF(test "x$ac_cv_header_winsock2_h" = "xyes",
       ])
 SOCKET_SEND_FLAGS
 
-AX_CHECK_LIBRARY([LIBEVENT], [event.h], [event], 
-                 [
-                  LIBEVENT_LDFLAGS="-levent"
-                  ],
-                 [
-                  AC_MSG_WARN([Unable to find libevent])
-                  ])
-AM_CONDITIONAL(HAVE_LIBEVENT, test "x${ax_cv_have_LIBEVENT}" = "xyes")
-
-dnl Check if we're a little-endian or a big-endian system, needed by hash code
-AC_DEFUN([AC_C_ENDIAN],
-[AC_CACHE_CHECK(for endianness, ac_cv_c_endian,
-[
-  AC_RUN_IFELSE(
-    [AC_LANG_PROGRAM([], [dnl
-        long val = 1;
-        char *c = (char *) &val;
-        exit(*c == 1);
-    ])
-  ],[
-    ac_cv_c_endian=big
-  ],[
-    ac_cv_c_endian=little
-  ])
-])
-if test $ac_cv_c_endian = big; then
-  AC_DEFINE(ENDIAN_BIG, 1, [machine is bigendian])
-fi
-if test $ac_cv_c_endian = little; then
-  AC_DEFINE(ENDIAN_LITTLE, 1, [machine is littleendian])
-fi
-])
+AX_UUID_GENERATE_TIME_SAFE
+
+
+AX_PTHREAD(, [AC_MSG_ERROR([could not find libpthread])])
+AX_PTHREAD_TIMEDJOIN_NP
+
+PANDORA_ENABLE_DTRACE
+AX_ENDIAN
+AX_ASSERT
+AX_CXX_COMPILER_VERSION
+AX_HARDEN_COMPILER_FLAGS
 
-AC_C_ENDIAN
+AX_AM_JOBSERVER([yes])
 
 AC_CONFIG_FILES([
   Makefile
   docs/conf.py
-  libhashkit-1.0/configure.h
   libmemcached-1.0/configure.h
-  libmemcached-1.2/configure.h
-  libmemcached-2.0/configure.h
   support/libmemcached.pc
   support/libmemcached.spec
-  support/libmemcached-fc.spec
-  libtest/version.h
   ])
 AC_OUTPUT
 
@@ -305,10 +299,17 @@ echo "   * Installation prefix:       $prefix"
 echo "   * System type:               $host_vendor-$host_os"
 echo "   * Host CPU:                  $host_cpu"
 echo "   * C Compiler:                $CC_VERSION"
-echo "   * Assertions enabled:        $ac_cv_assert"
-echo "   * Debug enabled:             $with_debug"
+echo "   * C Flags:                   $CFLAGS"
+echo "   * C++ Compiler:              $CXX_VERSION"
+echo "   * C++ Flags:                 $CXXFLAGS"
+echo "   * CPP Flags:                 $CPPFLAGS"
+echo "   * LIB Flags:                 $LIB"
+echo "   * Assertions enabled:        $ax_enable_assert"
+echo "   * Debug enabled:             $ax_enable_debug"
 echo "   * Warnings as failure:       $ac_cv_warnings_as_errors"
 echo "   * SASL support:              $ac_enable_sasl"
+echo "   * make -j:                   $enable_jobserver"
+echo "   * VCS checkout:              $ac_cv_vcs_checkout"
 echo ""
 echo "---"