From 11163720e6f30e83f523c5009e1e60b5cf28cda6 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 28 Jan 2009 17:36:36 +0100 Subject: s3:configure: autodetect ctdb/cluster support We need to make sure ctdb has transaction support and we autodetect ipv6 support. metze --- source3/configure.in | 119 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 115 insertions(+), 4 deletions(-) (limited to 'source3/configure.in') diff --git a/source3/configure.in b/source3/configure.in index b4c021cd0d..40130fb300 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -5152,17 +5152,128 @@ AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT]) ################################################# # check for cluster extensions -AC_MSG_CHECKING(whether to include cluster support) +CTDB_CFLAGS="" +AC_SUBST(CTDB_CFLAGS) +AC_ARG_WITH(ctdb, +[AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])], +[ case "$withval" in + yes|no) + AC_MSG_WARN([--with-ctdb called without argument]) + ;; + *) + CTDB_CPPFLAGS="-I$withval/include" + ;; + esac]) + +SAVED_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $CTDB_CPPFLAGS" +ctdb_broken="missing or broken headers" + +AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[ +#include "confdefs.h" +#define NO_CONFIG_H +#include "replace.h" +#include "system/wait.h" +#include "system/network.h" +#define private #error __USED_RESERVED_WORD_private__ +#include +#include +#include +]) + +AC_HAVE_DECL(CTDB_CONTROL_TRANS2_COMMIT_RETRY,[ +#include "confdefs.h" +#define NO_CONFIG_H +#include "replace.h" +#include "system/wait.h" +#include "system/network.h" +#include +#include +#include +#include +]) +if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then + ctdb_broken=no +else + ctdb_broken="missing transaction support" +fi + +# in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client +AC_CHECK_TYPE(struct ctdb_tcp_client,[ + AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support]) +],,[ +#include "confdefs.h" +#define NO_CONFIG_H +#include "replace.h" +#include "system/wait.h" +#include "system/network.h" +#include +#include +#include +#include +]) + +AC_CHECK_TYPE(struct ctdb_control_tcp,[ + AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support]) +],[ + ctdb_broken="missing struct ctdb_control_tcp" +],[ +#include "confdefs.h" +#define NO_CONFIG_H +#include "replace.h" +#include "system/wait.h" +#include "system/network.h" +#include +#include +#include +#include +]) + +AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[ + AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support]) +],,[ +#include "confdefs.h" +#define NO_CONFIG_H +#include "replace.h" +#include "system/wait.h" +#include "system/network.h" +#include +#include +#include +#include +]) +CPPFLAGS="$SAVED_CPPFLAGS" + +AC_MSG_CHECKING(cluster support) AC_ARG_WITH(cluster-support, -[AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=no)])]) -if test "x$with_cluster_support" = "xyes"; then +[AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])]) + +if test x"$with_cluster_support" = x ; then + with_cluster_support="auto" +fi + +if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then + if test "x$with_cluster_support" = "xyes"; then + AC_MSG_ERROR("ctdb_private.h is required for cluster support") + fi + with_cluster_support=no +fi + +if test x"$ctdb_broken" != x"no"; then + if test "x$with_cluster_support" = "xyes"; then + AC_MSG_ERROR(["cluster support: $ctdb_broken"]) + fi + with_cluster_support=no +fi + +if test "x$with_cluster_support" != "xno"; then AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions]) + SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}" AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi - ################################################# # check for ACL support -- cgit