[lvm-devel] [PATCH 1/1] configure.in: add proper support for --with-clvmd=all
Fabio M. Di Nitto
fdinitto at redhat.com
Fri Aug 28 10:59:48 UTC 2009
Implement autodetection when "all" is selected:
- update help text
- set default to all
- add helpers to wrap failures
- fix all library checks to use the bailout helpers
- fix all library checks to propagate more info
- add autodetection snippet
Signed-off-by: Fabio M. Di Nitto <fdinitto at redhat.com>
---
:100644 100644 496ffe6... 651ba6a... M configure.in
configure.in | 137 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 105 insertions(+), 32 deletions(-)
diff --git a/configure.in b/configure.in
index 496ffe6..651ba6a 100644
--- a/configure.in
+++ b/configure.in
@@ -330,12 +330,13 @@ AC_ARG_WITH(clvmd,
* cman,gulm (RHEL4 or equivalent)
* cman (RHEL5 or equivalent)
* cman,corosync,openais (or selection of them)
+ * all (autodetect)
* none (disable build)
[TYPE=none] ],
[ CLVMD="$withval" ],
[ CLVMD="none" ])
-if test x$CLVMD = xyes || test x$CLVMD = xall; then
- CLVMD=cman
+if test x$CLVMD = xyes; then
+ CLVMD=all
fi
AC_MSG_RESULT($CLVMD)
@@ -375,6 +376,28 @@ if test x$CLVMD != xnone; then
[AC_MSG_RESULT([pkg-config initialized])])
fi
+dnl -- define a soft bailout if we are autodetecting
+soft_bailout() {
+ NOTFOUND=1
+}
+
+hard_bailout() {
+ AC_MSG_ERROR([bailing out])
+}
+
+dnl -- if clvmd=all then set soft_bailout (we don't want to error)
+dnl -- and set all builds to yes. We need to do this here
+dnl -- to skip the gulm + openais|corosync sanity check above.
+if test x$CLVMD = xall; then
+ bailout=soft_bailout
+ BUILDGULM=yes
+ BUILDCMAN=yes
+ BUILDCOROSYNC=yes
+ BUILDOPENAIS=yes
+else
+ bailout=hard_bailout
+fi
+
dnl -- helper macro to check libs without adding them to LIBS
check_lib_no_libs() {
lib_no_libs_arg1=$1
@@ -384,32 +407,44 @@ check_lib_no_libs() {
lib_no_libs_args=$@
AC_CHECK_LIB([$lib_no_libs_arg1],
[$lib_no_libs_arg2],,
- [AC_MSG_ERROR([bailing out])],
+ [$bailout],
[$lib_no_libs_args])
LIBS=$ac_check_lib_save_LIBS
}
dnl -- Look for gulm libraries if required.
if test x$BUILDGULM = xyes; then
- PKG_CHECK_MODULES(CCS, libccs, [],
- [AC_CHECK_HEADERS(ccs.h,,AC_MSG_ERROR(bailing out))
+ PKG_CHECK_MODULES(CCS, libccs, [HAVE_CCS=yes],
+ [NOTFOUND=0
+ AC_CHECK_HEADERS(ccs.h,,$bailout)
check_lib_no_libs ccs ccs_connect
- AC_MSG_RESULT([no pkg for libccs library, using -lccs])
- CCS_LIBS="-lccs"])
- PKG_CHECK_MODULES(GULM, libgulm, [],
- [AC_CHECK_HEADERS(libgulm.h,,AC_MSG_ERROR(bailing out))
+ if test $NOTFOUND = 0; then
+ AC_MSG_RESULT([no pkg for libccs, using -lccs])
+ CCS_LIBS="-lccs"
+ HAVE_CCS=yes
+ fi])
+ PKG_CHECK_MODULES(GULM, libgulm, [HAVE_GULM=yes],
+ [NOTFOUND=0
+ AC_CHECK_HEADERS(libgulm.h,,$bailout)
check_lib_no_libs gulm lg_core_login
- AC_MSG_RESULT([no pkg for libgulm library, using -lgulm])
- GULM_LIBS="-lgulm"])
+ if test $NOTFOUND = 0; then
+ AC_MSG_RESULT([no pkg for libgulm, using -lgulm])
+ GULM_LIBS="-lgulm"
+ HAVE_GULM=yes
+ fi])
fi
dnl -- Look for cman libraries if required.
if test x$BUILDCMAN = xyes; then
- PKG_CHECK_MODULES(CMAN, libcman, [],
- [AC_CHECK_HEADERS(libcman.h,,AC_MSG_ERROR(bailing out))
+ PKG_CHECK_MODULES(CMAN, libcman, [HAVE_CMAN=yes],
+ [NOTFOUND=0
+ AC_CHECK_HEADERS(libcman.h,,$bailout)
check_lib_no_libs cman cman_init
- AC_MSG_RESULT([no pkg for libcman library, using -lcman])
- CMAN_LIBS="-lcman"])
+ if test $NOTFOUND = 0; then
+ AC_MSG_RESULT([no pkg for libcman, using -lcman])
+ CMAN_LIBS="-lcman"
+ HAVE_CMAN=yes
+ fi])
CHECKCONFDB=yes
CHECKDLM=yes
fi
@@ -419,20 +454,20 @@ dnl -- only enough recent version of corosync ship pkg-config files.
dnl -- We can safely rely on that to detect the correct bits.
if test x$BUILDCOROSYNC = xyes || \
test x$BUILDOPENAIS = xyes; then
- PKG_CHECK_MODULES(COROSYNC, corosync)
+ PKG_CHECK_MODULES(COROSYNC, corosync, [HAVE_COROSYNC=yes], $bailout)
CHECKCONFDB=yes
fi
dnl -- Look for corosync libraries if required.
if test x$BUILDCOROSYNC = xyes; then
- PKG_CHECK_MODULES(QUORUM, libquorum)
+ PKG_CHECK_MODULES(QUORUM, libquorum, [HAVE_QUORUM=yes], $bailout)
CHECKCPG=yes
CHECKDLM=yes
fi
dnl -- Look for openais libraries if required.
if test x$BUILDOPENAIS = xyes; then
- PKG_CHECK_MODULES(SALCK, libSaLck)
+ PKG_CHECK_MODULES(SALCK, libSaLck, [HAVE_SALCK=yes], $bailout)
CHECKCPG=yes
fi
@@ -443,37 +478,75 @@ dnl -- mandatory for corosync build.
dnl -- optional for openais/cman build.
if test x$CHECKCONFDB = xyes; then
- PKG_CHECK_MODULES(CONFDB, libconfdb,,
- [HAVE_PKG_CONFDB=no])
-
- if test x$BUILDCOROSYNC = xyes && \
- test x$HAVE_PKG_CONFDB = xno; then
- AC_MSG_ERROR([bailing out... confdb library is required])
- fi
+ PKG_CHECK_MODULES(CONFDB, libconfdb,
+ [HAVE_CONFDB=yes],
+ [HAVE_CONFDB=no])
AC_CHECK_HEADERS(corosync/confdb.h,
[HAVE_CONFDB_H=yes],
[HAVE_CONFDB_H=no])
- if test x$HAVE_PKG_CONFDB = xno && \
+ if test x$HAVE_CONFDB != xyes && \
test x$HAVE_CONFDB_H = xyes; then
- AC_MSG_RESULT([no pkg for confdb library, using -lconfdb])
+ check_lib_no_libs confdb confdb_initialize
+ AC_MSG_RESULT([no pkg for confdb, using -lconfdb])
CONFDB_LIBS="-lconfdb"
+ HAVE_CONFDB=yes
+ fi
+
+ if test x$BUILDCOROSYNC = xyes && \
+ test x$HAVE_CONFDB != xyes &&
+ test x$CLVMD != xall; then
+ AC_MSG_ERROR([bailing out... confdb library is required])
fi
fi
dnl -- Check cpg library.
if test x$CHECKCPG = xyes; then
- PKG_CHECK_MODULES(CPG, libcpg)
+ PKG_CHECK_MODULES(CPG, libcpg, [HAVE_CPG=yes], $bailout)
fi
dnl -- Check dlm library.
if test x$CHECKDLM = xyes; then
- PKG_CHECK_MODULES(DLM, libdlm, [],
- [AC_CHECK_HEADERS(libdlm.h,,AC_MSG_ERROR(bailing out))
+ PKG_CHECK_MODULES(DLM, libdlm, [HAVE_DLM=yes],
+ [NOTFOUND=0
+ AC_CHECK_HEADERS(libdlm.h,,$bailout)
check_lib_no_libs dlm dlm_lock -lpthread
- AC_MSG_RESULT([no pkg for libdlm library, using -ldlm -lpthread])
- DLM_LIBS="-ldlm -lpthread"])
+ if test $NOTFOUND = 0; then
+ AC_MSG_RESULT([no pkg for libdlm, using -ldlm])
+ DLM_LIBS="-ldlm -lpthread"
+ HAVE_DLM=yes
+ fi])
+fi
+
+dnl -- If we are autodetecting, we need to re-create
+dnl -- the depedencies checks and set a proper CLVMD.
+if test x$CLVMD = xall; then
+ if test x$HAVE_CCS = xyes && \
+ test x$HAVE_GULM = xyes; then
+ AC_MSG_RESULT([Enabling clvmd gulm backend])
+ NEWCLVMD="$NEWCLVMD,gulm"
+ fi
+ if test x$HAVE_CMAN = xyes && \
+ test x$HAVE_DLM = xyes; then
+ AC_MSG_RESULT([Enabling clvmd cman backend])
+ NEWCLVMD="$NEWCLVMD,cman"
+ fi
+ if test x$HAVE_COROSYNC = xyes && \
+ test x$HAVE_QUORUM = xyes && \
+ test x$HAVE_CPG = xyes && \
+ test x$HAVE_DLM = xyes && \
+ test x$HAVE_CONFDB = xyes; then
+ AC_MSG_RESULT([Enabling clvmd corosync backend])
+ NEWCLVMD="$NEWCLVMD,corosync"
+ fi
+ if test x$HAVE_COROSYNC = xyes && \
+ test x$HAVE_CPG = xyes && \
+ test x$HAVE_SALCK = xyes; then
+ AC_MSG_RESULT([Enabling clvmd openais backend])
+ NEWCLVMD="$NEWCLVMD,openais"
+ fi
+ CLVMD="$NEWCLVMD"
fi
################################################################################
--
1.5.4.3
More information about the lvm-devel
mailing list