1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-10-27 01:55:10 +03:00

build: add vdo configuration option --with-vdo=

Checks whether VDO support is enabled.
Detects presence of 'vdoformat' tool which is required for to format VDO pool.

ATM build of VDO is NOT automatically enabled (None is default).
To enable build of LVM with VDO support use:

configure --with-vdo=internal

TODO: Maybe future version may switch to link some small VDO library for formating
(would require linking and package dependency).
This commit is contained in:
Zdenek Kabelac 2018-06-29 13:38:18 +02:00
parent 2e05f6018b
commit 4a90b0c4c9
5 changed files with 236 additions and 0 deletions

172
configure vendored
View File

@ -641,6 +641,9 @@ LVMPOLLD_PIDFILE
LVMETAD_PIDFILE
DMEVENTD_PIDFILE
WRITE_INSTALL
VDO_LIB
VDO_INCLUDE
VDO
VALGRIND_POOL
USRSBINDIR
SILENT_RULES
@ -791,6 +794,7 @@ PKGCONFIGINIT_CFLAGS
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PKG_CONFIG
VDO_FORMAT_CMD
CACHE_RESTORE_CMD
CACHE_REPAIR_CMD
CACHE_DUMP_CMD
@ -912,6 +916,8 @@ with_cache_dump
with_cache_repair
with_cache_restore
enable_cache_check_needs_check
with_vdo
with_vdo_format
enable_readline
enable_realtime
enable_ocf
@ -1708,6 +1714,8 @@ Optional Packages:
cache_repair tool: [autodetect]
--with-cache-restore=PATH
cache_restore tool: [autodetect]
--with-vdo=TYPE vdo support: internal/none [internal]
--with-vdo-format=PATH vdoformat tool: [autodetect]
--with-ocfdir=DIR install OCF files in
[PREFIX/lib/ocf/resource.d/lvm2]
--with-default-pid-dir=PID_DIR
@ -9545,6 +9553,165 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
################################################################################
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include vdo" >&5
$as_echo_n "checking whether to include vdo... " >&6; }
# Check whether --with-vdo was given.
if test "${with_vdo+set}" = set; then :
withval=$with_vdo; VDO=$withval
else
VDO="none"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $VDO" >&5
$as_echo "$VDO" >&6; }
# Check whether --with-vdo-format was given.
if test "${with_vdo_format+set}" = set; then :
withval=$with_vdo_format; VDO_FORMAT_CMD=$withval
else
VDO_FORMAT_CMD="autodetect"
fi
case "$VDO" in
none) ;;
internal)
$as_echo "#define VDO_INTERNAL 1" >>confdefs.h
if test "$VDO_FORMAT_CMD" = "autodetect"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}vdoformat", so it can be a program name with args.
set dummy ${ac_tool_prefix}vdoformat; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_VDO_FORMAT_CMD+:} false; then :
$as_echo_n "(cached) " >&6
else
case $VDO_FORMAT_CMD in
[\\/]* | ?:[\\/]*)
ac_cv_path_VDO_FORMAT_CMD="$VDO_FORMAT_CMD" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_VDO_FORMAT_CMD="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
VDO_FORMAT_CMD=$ac_cv_path_VDO_FORMAT_CMD
if test -n "$VDO_FORMAT_CMD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $VDO_FORMAT_CMD" >&5
$as_echo "$VDO_FORMAT_CMD" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
if test -z "$ac_cv_path_VDO_FORMAT_CMD"; then
ac_pt_VDO_FORMAT_CMD=$VDO_FORMAT_CMD
# Extract the first word of "vdoformat", so it can be a program name with args.
set dummy vdoformat; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_ac_pt_VDO_FORMAT_CMD+:} false; then :
$as_echo_n "(cached) " >&6
else
case $ac_pt_VDO_FORMAT_CMD in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_VDO_FORMAT_CMD="$ac_pt_VDO_FORMAT_CMD" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_VDO_FORMAT_CMD="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
ac_pt_VDO_FORMAT_CMD=$ac_cv_path_ac_pt_VDO_FORMAT_CMD
if test -n "$ac_pt_VDO_FORMAT_CMD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_VDO_FORMAT_CMD" >&5
$as_echo "$ac_pt_VDO_FORMAT_CMD" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test "x$ac_pt_VDO_FORMAT_CMD" = x; then
VDO_FORMAT_CMD=""
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
VDO_FORMAT_CMD=$ac_pt_VDO_FORMAT_CMD
fi
else
VDO_FORMAT_CMD="$ac_cv_path_VDO_FORMAT_CMD"
fi
if test -z "$VDO_FORMAT_CMD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: vdoformat not found in path $PATH" >&5
$as_echo "$as_me: WARNING: vdoformat not found in path $PATH" >&2;}
VDO_FORMAT_CMD=/usr/bin/vdoformat
VDO_CONFIGURE_WARN=y
fi
fi
;;
*) as_fn_error $? "--with-vdo parameter invalid" "$LINENO" 5 ;;
esac
cat >>confdefs.h <<_ACEOF
#define VDO_FORMAT_CMD "$VDO_FORMAT_CMD"
_ACEOF
#
# Do we need to use the API??
# Do we want to link lvm2 with a big library for vdoformating ?
#
#AC_ARG_WITH(vdo-include,
# AC_HELP_STRING([--with-vdo-include=PATH],
# [vdo support: Path to utils headers: [/usr/include/vdo/utils]]),
# VDO_INCLUDE=$withval, VDO_INCLUDE="/usr/include/vdo/utils")
#AC_MSG_RESULT($VDO_INCLUDE)
#
#AC_ARG_WITH(vdo-lib,
# AC_HELP_STRING([--with-vdo-lib=PATH],
# [vdo support: Path to utils lib: [/usr/lib]]),
# VDO_LIB=$withval, VDO_LIB="/usr/lib")
#AC_MSG_RESULT($VDO_LIB)
################################################################################
# Check whether --enable-readline was given.
@ -15043,6 +15210,11 @@ if test -n "$CACHE_CHECK_VERSION_WARN"; then :
$as_echo "$as_me: WARNING: You should install latest cache_check vsn 0.7.0 to use lvm2 cache metadata format 2" >&2;}
fi
if test -n "$VDO_CONFIGURE_WARN"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized 'vdoformat' tool is REQUIRED for VDO logical volume creation!" >&5
$as_echo "$as_me: WARNING: unrecognized 'vdoformat' tool is REQUIRED for VDO logical volume creation!" >&2;}
fi
if test "$ODIRECT" != yes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: O_DIRECT disabled: low-memory pvmove may lock up" >&5

View File

@ -592,6 +592,53 @@ AC_DEFINE_UNQUOTED([CACHE_REPAIR_CMD], ["$CACHE_REPAIR_CMD"],
AC_DEFINE_UNQUOTED([CACHE_RESTORE_CMD], ["$CACHE_RESTORE_CMD"],
[The path to 'cache_restore', if available.])
################################################################################
dnl -- cache inclusion type
AC_MSG_CHECKING(whether to include vdo)
AC_ARG_WITH(vdo,
AC_HELP_STRING([--with-vdo=TYPE],
[vdo support: internal/none [internal]]),
VDO=$withval, VDO="none")
AC_MSG_RESULT($VDO)
AC_ARG_WITH(vdo-format,
AC_HELP_STRING([--with-vdo-format=PATH],
[vdoformat tool: [autodetect]]),
VDO_FORMAT_CMD=$withval, VDO_FORMAT_CMD="autodetect")
case "$VDO" in
none) ;;
internal)
AC_DEFINE([VDO_INTERNAL], 1, [Define to 1 to include built-in support for vdo.])
if test "$VDO_FORMAT_CMD" = "autodetect"; then
AC_PATH_TOOL(VDO_FORMAT_CMD, vdoformat, [], [$PATH])
if test -z "$VDO_FORMAT_CMD"; then
AC_MSG_WARN([vdoformat not found in path $PATH])
VDO_FORMAT_CMD=/usr/bin/vdoformat
VDO_CONFIGURE_WARN=y
fi
fi
;;
*) AC_MSG_ERROR([--with-vdo parameter invalid]) ;;
esac
AC_DEFINE_UNQUOTED([VDO_FORMAT_CMD], ["$VDO_FORMAT_CMD"],
[The path to 'vdoformat', if available.])
#
# Do we need to use the API??
# Do we want to link lvm2 with a big library for vdoformating ?
#
#AC_ARG_WITH(vdo-include,
# AC_HELP_STRING([--with-vdo-include=PATH],
# [vdo support: Path to utils headers: [/usr/include/vdo/utils]]),
# VDO_INCLUDE=$withval, VDO_INCLUDE="/usr/include/vdo/utils")
#AC_MSG_RESULT($VDO_INCLUDE)
#
#AC_ARG_WITH(vdo-lib,
# AC_HELP_STRING([--with-vdo-lib=PATH],
# [vdo support: Path to utils lib: [/usr/lib]]),
# VDO_LIB=$withval, VDO_LIB="/usr/lib")
#AC_MSG_RESULT($VDO_LIB)
################################################################################
dnl -- Disable readline
@ -1739,6 +1786,10 @@ AC_SUBST(USE_TRACKING)
AC_SUBST(SILENT_RULES)
AC_SUBST(USRSBINDIR)
AC_SUBST(VALGRIND_POOL)
AC_SUBST(VDO)
AC_SUBST(VDO_FORMAT_CMD)
AC_SUBST(VDO_INCLUDE)
AC_SUBST(VDO_LIB)
AC_SUBST(WRITE_INSTALL)
AC_SUBST(DMEVENTD_PIDFILE)
AC_SUBST(LVMETAD_PIDFILE)
@ -1840,6 +1891,9 @@ AS_IF([test -n "$CACHE_CONFIGURE_WARN"],
AS_IF([test -n "$CACHE_CHECK_VERSION_WARN"],
[AC_MSG_WARN([You should install latest cache_check vsn 0.7.0 to use lvm2 cache metadata format 2])])
AS_IF([test -n "$VDO_CONFIGURE_WARN"],
[AC_MSG_WARN([unrecognized 'vdoformat' tool is REQUIRED for VDO logical volume creation!])])
AS_IF([test "$ODIRECT" != yes],
[AC_MSG_WARN([O_DIRECT disabled: low-memory pvmove may lock up])])

View File

@ -30,6 +30,9 @@ DEVICE_MAPPER_DEPENDS=$(addprefix $(top_builddir)/,$(subst .c,.d,$(DEVICE_MAPPER
DEVICE_MAPPER_OBJECTS=$(addprefix $(top_builddir)/,$(subst .c,.o,$(DEVICE_MAPPER_SOURCE)))
CLEAN_TARGETS+=$(DEVICE_MAPPER_DEPENDS) $(DEVICE_MAPPER_OBJECTS)
#$(DEVICE_MAPPER_DEPENDS): INCLUDES+=$(VDO_INCLUDES)
#$(DEVICE_MAPPER_OBJECTS): INCLUDES+=$(VDO_INCLUDES)
ifeq ("$(USE_TRACKING)","yes")
ifeq (,$(findstring $(MAKECMDGOALS),cscope.out cflow clean distclean lcov \
help check check_local check_cluster check_lvmetad check_lvmpolld))

View File

@ -672,6 +672,12 @@
/* Enable a valgrind aware build of pool */
#undef VALGRIND_POOL
/* The path to 'vdoformat', if available. */
#undef VDO_FORMAT_CMD
/* Define to 1 to include built-in support for vdo. */
#undef VDO_INTERNAL
/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
#define below would cause a syntax error. */

View File

@ -311,6 +311,7 @@ LIB_VERSION_APP := $(shell $(AWK) -F '[(). ]' '{printf "%s.%s",$$1,$$4}' $(top_s
INCLUDES += -I$(top_srcdir) -I$(srcdir) -I$(top_builddir)/include
#VDO_INCLUDES=-I@VDO_INCLUDE@
DEPS = $(top_builddir)/make.tmpl $(top_srcdir)/VERSION \
$(top_builddir)/Makefile