############################################################################### ## Copyright (C) 2000-2004 Sistina Software, Inc. All rights reserved. ## Copyright (C) 2004-2023 Red Hat, Inc. All rights reserved. ## ## This copyrighted material is made available to anyone wishing to use, ## modify, copy, or redistribute it subject to the terms and conditions ## of the GNU General Public License v.2. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software Foundation, ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ################################################################################ AC_PREREQ(2.69) ################################################################################ dnl -- Process this file with autoconf to produce a configure script. AC_INIT CONFIGURE_LINE="$0 $@" AC_CONFIG_SRCDIR([lib/device/dev-cache.h]) AC_CONFIG_HEADERS([include/configure.h]) ################################################################################ dnl -- Setup the directory where autoconf has auxilary files AC_CONFIG_AUX_DIR(autoconf) ################################################################################ dnl -- Get system type AC_CANONICAL_TARGET([]) AS_IF([test -z "$CFLAGS"], [COPTIMISE_FLAG="-O2"]) AS_CASE(["$host_os"], [linux*], [ # equivalent to -rdynamic ELDFLAGS="-Wl,--export-dynamic" STATIC_LDFLAGS="-Wl,--no-export-dynamic" # FIXME Generate list and use --dynamic-list=.dlopen.sym CLDWHOLEARCHIVE="-Wl,-whole-archive" CLDNOWHOLEARCHIVE="-Wl,-no-whole-archive" LIB_SUFFIX="so" DEVMAPPER="yes" ODIRECT="yes" DM_IOCTLS="yes" SELINUX="yes" FSADM="yes" LVMIMPORTVDO="yes" BLKDEACTIVATE="yes"], [darwin*], [ CFLAGS="$CFLAGS -no-cpp-precomp -fno-common" ELDFLAGS= CLDWHOLEARCHIVE="-all_load" CLDNOWHOLEARCHIVE= LIB_SUFFIX="dylib" DEVMAPPER="yes" ODIRECT="no" DM_IOCTLS="no" SELINUX="no" FSADM="no" LVMIMPORTVDO="no" BLKDEACTIVATE="no"], [CLDFLAGS="${CLDFLAGS-"$LDFLAGS"}"]) ################################################################################ dnl -- Checks for programs. AC_PROG_SED AC_PROG_AWK save_CFLAGS=$CFLAGS save_CXXFLAGS=$CXXFLAGS AC_PROG_CC AC_PROG_CXX CFLAGS=$save_CFLAGS CXXFLAGS=$save_CXXFLAGS PATH_SBIN="$PATH:/usr/sbin:/sbin" dnl probably no longer needed in 2008, but... AC_PROG_GCC_TRADITIONAL AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_MKDIR_P AC_PROG_RANLIB AC_CHECK_TOOL([READELF], [readelf]) AC_CHECK_TOOL(AR, ar) AC_PATH_TOOL(CFLOW_CMD, cflow) AC_PATH_TOOL(CSCOPE_CMD, cscope) AC_PATH_TOOL(CHMOD, chmod) AC_PATH_TOOL(WC, wc) AC_PATH_TOOL(SORT, sort) ################################################################################ dnl -- Check for header files. AC_HEADER_DIRENT AC_HEADER_MAJOR AC_HEADER_STDBOOL AC_CHECK_HEADERS([assert.h ctype.h dirent.h errno.h fcntl.h float.h \ getopt.h inttypes.h langinfo.h libgen.h limits.h locale.h paths.h \ signal.h stdarg.h stddef.h stdio.h stdlib.h string.h sys/file.h \ sys/ioctl.h syslog.h sys/mman.h sys/param.h sys/resource.h sys/stat.h \ sys/time.h sys/types.h sys/utsname.h sys/wait.h time.h \ unistd.h], , [AC_MSG_ERROR(bailing out)]) AC_CHECK_HEADERS(termios.h sys/statvfs.h sys/timerfd.h sys/vfs.h linux/magic.h linux/fiemap.h) AC_CHECK_HEADERS(libaio.h,LVM_NEEDS_LIBAIO_WARN=,LVM_NEEDS_LIBAIO_WARN=y) AS_CASE(["$host_os"], [linux*], [AC_CHECK_HEADERS([asm/byteorder.h linux/fs.h malloc.h], [], [AC_MSG_ERROR(bailing out)])], [darwin*], [AC_CHECK_HEADERS([machine/endian.h sys/disk.h], [], [AC_MSG_ERROR(bailing out)])]) ################################################################################ dnl -- Check for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_CHECK_MEMBERS([struct stat.st_rdev]) AC_CHECK_TYPES([ptrdiff_t]) AC_STRUCT_ST_BLOCKS AC_STRUCT_TM AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_MODE_T AC_TYPE_INT8_T AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT64_T AC_TYPE_SSIZE_T AC_TYPE_UID_T AC_TYPE_UINT8_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T AX_GCC_BUILTIN([__builtin_clz]) AX_GCC_BUILTIN([__builtin_clzll]) AX_GCC_BUILTIN([__builtin_ffs]) AC_DEFINE([_GNU_SOURCE], 1, [Define to get access to GNU/Linux extension]) AC_DEFINE([_REENTRANT], 1, [Define to use re-entrant thread safe versions]) ################################################################################ dnl -- Check for functions AC_CHECK_FUNCS([ftruncate gethostname getpagesize gettimeofday localtime_r \ memchr memset mkdir mkfifo munmap nl_langinfo pselect realpath rmdir setenv \ setlocale strcasecmp strchr strcspn strdup strerror strncasecmp strndup \ strrchr strspn strstr strtol strtoul uname], , [AC_MSG_ERROR(bailing out)]) AC_CHECK_FUNCS([ffs mallinfo2 prlimit versionsort]) AC_FUNC_ALLOCA AC_FUNC_CLOSEDIR_VOID AC_FUNC_CHOWN AC_FUNC_FORK AC_FUNC_LSTAT AC_FUNC_MALLOC AC_FUNC_MEMCMP AC_FUNC_MKTIME AC_FUNC_MMAP AC_FUNC_REALLOC AC_FUNC_STAT AC_FUNC_STRTOD AC_FUNC_VPRINTF ################################################################################ dnl -- Disable dependency tracking AC_MSG_CHECKING([whether to enable dependency tracking]) AC_ARG_ENABLE(dependency-tracking, AS_HELP_STRING([--disable-dependency-tracking], [speeds up one-time build.]), USE_TRACKING=$enableval, USE_TRACKING="yes") AC_MSG_RESULT([$USE_TRACKING]) ################################################################################ dnl -- Disable silence rules AC_MSG_CHECKING([whether to build silently]) AC_ARG_ENABLE(silent-rules, AS_HELP_STRING([--disable-silent-rules], [disable silent building]), SILENT_RULES=$enableval, SILENT_RULES="yes") AC_MSG_RESULT([$SILENT_RULES]) ################################################################################ dnl -- Enables statically-linked tools AC_MSG_CHECKING([whether to use static linking]) AC_ARG_ENABLE(static_link, AS_HELP_STRING([--enable-static_link], [use this to link the tools to their libraries statically (default is dynamic linking]), STATIC_LINK=$enableval, STATIC_LINK="no") AC_MSG_RESULT([$STATIC_LINK]) ################################################################################ dnl -- Check if compiler/linker supports PIE and RELRO AC_TRY_CCFLAG([-pie], [HAVE_PIE], [], []) AC_SUBST(HAVE_PIE) AC_TRY_LDFLAGS([-Wl,-z,relro,-z,now], [HAVE_FULL_RELRO], [], []) AC_SUBST(HAVE_FULL_RELRO) ################################################################################ dnl -- Prefix is /usr by default, the exec_prefix default is setup later AC_PREFIX_DEFAULT(/usr) ################################################################################ dnl -- Clear default exec_prefix - install into /sbin rather than /usr/sbin test "$exec_prefix" = "NONE" && test "$prefix" = "NONE" && exec_prefix="" test "$prefix" = "NONE" && prefix=$ac_default_prefix # Let make expand exec_prefix. test "$exec_prefix" = "NONE" && exec_prefix='${prefix}' ################################################################################ dnl -- Setup the ownership of the files AC_MSG_CHECKING([file owner]) AC_ARG_WITH(user, AS_HELP_STRING([--with-user=USER], [set the owner of installed files [USER=]]), OWNER=$withval) AC_MSG_RESULT([$OWNER]) test -n "$OWNER" && INSTALL="$INSTALL -o $OWNER" ################################################################################ dnl -- Setup the group ownership of the files AC_MSG_CHECKING([group owner]) AC_ARG_WITH(group, AS_HELP_STRING([--with-group=GROUP], [set the group owner of installed files [GROUP=]]), GROUP=$withval) AC_MSG_RESULT([$GROUP]) test -n "$GROUP" && INSTALL="$INSTALL -g $GROUP" ################################################################################ dnl -- Setup device node ownership AC_MSG_CHECKING([device node uid]) AC_ARG_WITH(device-uid, AS_HELP_STRING([--with-device-uid=UID], [set the owner used for new device nodes [UID=0]]), DM_DEVICE_UID=$withval, DM_DEVICE_UID=0) AC_MSG_RESULT([$DM_DEVICE_UID]) AC_DEFINE_UNQUOTED([DM_DEVICE_UID], [$DM_DEVICE_UID], [Define default owner for device node]) ################################################################################ dnl -- Setup device group ownership AC_MSG_CHECKING([device node gid]) AC_ARG_WITH(device-gid, AS_HELP_STRING([--with-device-gid=GID], [set the group used for new device nodes [GID=0]]), DM_DEVICE_GID=$withval, DM_DEVICE_GID=0) AC_MSG_RESULT([$DM_DEVICE_GID]) AC_DEFINE_UNQUOTED([DM_DEVICE_GID], [$DM_DEVICE_GID], [Define default group for device node]) ################################################################################ dnl -- Setup device mode AC_MSG_CHECKING([device node mode]) AC_ARG_WITH(device-mode, AS_HELP_STRING([--with-device-mode=MODE], [set the mode used for new device nodes [MODE=0600]]), DM_DEVICE_MODE=$withval, DM_DEVICE_MODE=0600) AC_MSG_RESULT([$DM_DEVICE_MODE]) AC_DEFINE_UNQUOTED([DM_DEVICE_MODE], [$DM_DEVICE_MODE], [Define default mode for device node]) AC_MSG_CHECKING([when to create device nodes]) AC_ARG_WITH(device-nodes-on, AS_HELP_STRING([--with-device-nodes-on=ON], [create nodes on resume or create [ON=resume]]), ADD_NODE=$withval, ADD_NODE=resume) AS_CASE(["$ADD_NODE"], [resume], [add_on=DM_ADD_NODE_ON_RESUME], [create], [add_on=DM_ADD_NODE_ON_CREATE], [AC_MSG_ERROR([--with-device-nodes-on parameter invalid])]) AC_MSG_RESULT([on $ADD_NODE]) AC_DEFINE_UNQUOTED([DEFAULT_DM_ADD_NODE], $add_on, [Define default node creation behavior with dmsetup create]) dnl -- Default settings for lvm.conf { devices/use_devicesfile } AC_MSG_CHECKING([default for use_devicesfile]) AC_ARG_WITH(default-use-devices-file, AS_HELP_STRING([--with-default-use-devices-file], [default for lvm.conf devices/use_devicesfile = [0]]), DEFAULT_USE_DEVICES_FILE=$withval, DEFAULT_USE_DEVICES_FILE=0) AS_CASE(["$DEFAULT_USE_DEVICES_FILE"], [0|1], [], [AC_MSG_ERROR([--with-default-use-devices-file parameter invalid])]) AC_MSG_RESULT([$DEFAULT_USE_DEVICES_FILE]) AC_DEFINE_UNQUOTED(DEFAULT_USE_DEVICES_FILE, [$DEFAULT_USE_DEVICES_FILE], [Default for lvm.conf use_devicesfile.]) AC_MSG_CHECKING([default name mangling]) AC_ARG_WITH(default-name-mangling, AS_HELP_STRING([--with-default-name-mangling=MANGLING], [default name mangling: auto/none/hex [auto]]), MANGLING=$withval, MANGLING=auto) AS_CASE(["$MANGLING"], [auto], [mangling=DM_STRING_MANGLING_AUTO], [no|none|disabled], [mangling=DM_STRING_MANGLING_NONE], [hex], [mangling=DM_STRING_MANGLING_HEX], [AC_MSG_ERROR([--with-default-name-mangling parameter invalid])]) AC_MSG_RESULT([$MANGLING]) AC_DEFINE_UNQUOTED([DEFAULT_DM_NAME_MANGLING], $mangling, [Define default name mangling behaviour]) ################################################################################ dnl -- snapshots inclusion type AC_MSG_CHECKING([whether to include snapshots]) AC_ARG_WITH(snapshots, AS_HELP_STRING([--with-snapshots=TYPE], [snapshot support: internal/none [internal]]), SNAPSHOTS=$withval, SNAPSHOTS=internal) AC_MSG_RESULT([$SNAPSHOTS]) AS_CASE(["$SNAPSHOTS"], [no|none|shared], [], [internal], [ AC_DEFINE([SNAPSHOT_INTERNAL], 1, [Define to 1 to include built-in support for snapshots.])], [AC_MSG_ERROR([--with-snapshots parameter invalid])]) ################################################################################ dnl -- mirrors inclusion type AC_MSG_CHECKING([whether to include mirrors]) AC_ARG_WITH(mirrors, AS_HELP_STRING([--with-mirrors=TYPE], [mirror support: internal/none [internal]]), MIRRORS=$withval, MIRRORS=internal) AC_MSG_RESULT([$MIRRORS]) AS_CASE(["$MIRRORS"], [no|none|shared], [], [internal], [ AC_DEFINE([MIRRORED_INTERNAL], 1, [Define to 1 to include built-in support for mirrors.])], [AC_MSG_ERROR([--with-mirrors parameter invalid])]) ################################################################################ dnl -- raid inclusion type AC_ARG_WITH(default-mirror-segtype, AS_HELP_STRING([--with-default-mirror-segtype=TYPE], [default mirror segtype: raid1/mirror [raid1]]), DEFAULT_MIRROR_SEGTYPE=$withval, DEFAULT_MIRROR_SEGTYPE="raid1") AC_ARG_WITH(default-raid10-segtype, AS_HELP_STRING([--with-default-raid10-segtype=TYPE], [default mirror segtype: raid10/mirror [raid10]]), DEFAULT_RAID10_SEGTYPE=$withval, DEFAULT_RAID10_SEGTYPE="raid10") AC_DEFINE([RAID_INTERNAL], 1, [Define to 1 to include built-in support for raid.]) AC_DEFINE_UNQUOTED([DEFAULT_MIRROR_SEGTYPE], ["$DEFAULT_MIRROR_SEGTYPE"], [Default segtype used for mirror volumes.]) AC_DEFINE_UNQUOTED([DEFAULT_RAID10_SEGTYPE], ["$DEFAULT_RAID10_SEGTYPE"], [Default segtype used for raid10 volumes.]) ################################################################################ AC_ARG_WITH(default-sparse-segtype, AS_HELP_STRING([--with-default-sparse-segtype=TYPE], [default sparse segtype: thin/snapshot [thin]]), [ AS_CASE(["$withval"], [thin|snapshot], [DEFAULT_SPARSE_SEGTYPE=$withval], [AC_MSG_ERROR([--with-default-sparse-segtype parameter invalid])]) ], [DEFAULT_SPARSE_SEGTYPE="thin"]) ################################################################################ dnl -- thin provisioning AC_MSG_CHECKING([whether to include thin provisioning]) AC_ARG_WITH(thin, AS_HELP_STRING([--with-thin=TYPE], [thin provisioning support: internal/none [internal]]), THIN=$withval, THIN=internal) AC_ARG_WITH(thin-check, AS_HELP_STRING([--with-thin-check=PATH], [thin_check tool: [autodetect]]), THIN_CHECK_CMD=$withval, THIN_CHECK_CMD="autodetect") AC_ARG_WITH(thin-dump, AS_HELP_STRING([--with-thin-dump=PATH], [thin_dump tool: [autodetect]]), THIN_DUMP_CMD=$withval, THIN_DUMP_CMD="autodetect") AC_ARG_WITH(thin-repair, AS_HELP_STRING([--with-thin-repair=PATH], [thin_repair tool: [autodetect]]), THIN_REPAIR_CMD=$withval, THIN_REPAIR_CMD="autodetect") AC_ARG_WITH(thin-restore, AS_HELP_STRING([--with-thin-restore=PATH], [thin_restore tool: [autodetect]]), THIN_RESTORE_CMD=$withval, THIN_RESTORE_CMD="autodetect") AC_MSG_RESULT([$THIN]) AS_CASE(["$THIN"], [no|none], [test "$DEFAULT_SPARSE_SEGTYPE" = "thin" && DEFAULT_SPARSE_SEGTYPE="snapshot"], [shared], [], [internal], [ AC_DEFINE([THIN_INTERNAL], 1, [Define to 1 to include built-in support for thin provisioning.])], [AC_MSG_ERROR([--with-thin parameter invalid ($THIN)])]) AC_DEFINE_UNQUOTED([DEFAULT_SPARSE_SEGTYPE], ["$DEFAULT_SPARSE_SEGTYPE"], [Default segtype used for sparse volumes.]) dnl -- thin_check needs-check flag AC_ARG_ENABLE(thin_check_needs_check, AS_HELP_STRING([--disable-thin_check_needs_check], [required if thin_check version is < 0.3.0]), THIN_CHECK_NEEDS_CHECK=$enableval, THIN_CHECK_NEEDS_CHECK="yes") # Test if necessary thin tools are available # if not - use plain defaults and warn user AS_CASE(["$THIN"], [internal|shared], [ # Empty means a config way to ignore thin checking AS_IF([test "$THIN_CHECK_CMD" = "autodetect"], [ AC_PATH_TOOL(THIN_CHECK_CMD, thin_check, [], [$PATH_SBIN]) AS_IF([test -z "$THIN_CHECK_CMD"], [ AC_MSG_WARN([thin_check not found in path $PATH_SBIN]) THIN_CHECK_CMD="/usr/sbin/thin_check" THIN_CONFIGURE_WARN="y" ]) ]) AS_IF([test "$THIN_CHECK_NEEDS_CHECK" = "yes" && test "$THIN_CONFIGURE_WARN" != "y"], [ THIN_CHECK_VSN=$("$THIN_CHECK_CMD" -V 2>/dev/null) THIN_CHECK_VSN_MAJOR=$(echo "$THIN_CHECK_VSN" | $AWK -F '.' '{print $1}') THIN_CHECK_VSN_MINOR=$(echo "$THIN_CHECK_VSN" | $AWK -F '.' '{print $2}') AS_IF([test -z "$THIN_CHECK_VSN_MAJOR" || test -z "$THIN_CHECK_VSN_MINOR"], [ AC_MSG_WARN([$THIN_CHECK_CMD: Bad version "$THIN_CHECK_VSN" found]) THIN_CHECK_VERSION_WARN="y" THIN_CHECK_NEEDS_CHECK="no" ], [test "$THIN_CHECK_VSN_MAJOR" -eq 0 && test "$THIN_CHECK_VSN_MINOR" -lt 3], [ AC_MSG_WARN([$THIN_CHECK_CMD: Old version "$THIN_CHECK_VSN" found]) THIN_CHECK_VERSION_WARN="y" THIN_CHECK_NEEDS_CHECK="no" ]) ]) # Empty means a config way to ignore thin dumping AS_IF([test "$THIN_DUMP_CMD" = "autodetect"], [ AC_PATH_TOOL(THIN_DUMP_CMD, thin_dump, [], [$PATH_SBIN]) AS_IF([test -z "$THIN_DUMP_CMD"], [ AC_MSG_WARN(["thin_dump not found in path $PATH_SBIN"]) THIN_DUMP_CMD="/usr/sbin/thin_dump" THIN_CONFIGURE_WARN="y" ]) ]) # Empty means a config way to ignore thin repairing AS_IF([test "$THIN_REPAIR_CMD" = "autodetect"], [ AC_PATH_TOOL(THIN_REPAIR_CMD, thin_repair, [], [$PATH_SBIN]) AS_IF([test -z "$THIN_REPAIR_CMD"], [ AC_MSG_WARN(["thin_repair not found in path $PATH_SBIN"]) THIN_REPAIR_CMD="/usr/sbin/thin_repair" THIN_CONFIGURE_WARN="y" ]) ]) # Empty means a config way to ignore thin restoring AS_IF([test "$THIN_RESTORE_CMD" = "autodetect"], [ AC_PATH_TOOL(THIN_RESTORE_CMD, thin_restore, [], [$PATH_SBIN]) AS_IF([test -z "$THIN_RESTORE_CMD"], [ AC_MSG_WARN(["thin_restore not found in path $PATH_SBIN"]) THIN_RESTORE_CMD="/usr/sbin/thin_restore" THIN_CONFIGURE_WARN="y" ]) ]) AC_MSG_CHECKING([whether thin_check supports the needs-check flag]) AC_MSG_RESULT([$THIN_CHECK_NEEDS_CHECK]) AS_IF([test "$THIN_CHECK_NEEDS_CHECK" = "yes"], [ AC_DEFINE([THIN_CHECK_NEEDS_CHECK], 1, [Define to 1 if the external 'thin_check' tool requires the --clear-needs-check-flag option]) ]) ]) AC_DEFINE_UNQUOTED([THIN_CHECK_CMD], ["$THIN_CHECK_CMD"], [The path to 'thin_check', if available.]) AC_DEFINE_UNQUOTED([THIN_DUMP_CMD], ["$THIN_DUMP_CMD"], [The path to 'thin_dump', if available.]) AC_DEFINE_UNQUOTED([THIN_REPAIR_CMD], ["$THIN_REPAIR_CMD"], [The path to 'thin_repair', if available.]) AC_DEFINE_UNQUOTED([THIN_RESTORE_CMD], ["$THIN_RESTORE_CMD"], [The path to 'thin_restore', if available.]) ################################################################################ dnl -- cache inclusion type AC_MSG_CHECKING([whether to include cache]) AC_ARG_WITH(cache, AS_HELP_STRING([--with-cache=TYPE], [cache support: internal/none [internal]]), CACHE=$withval, CACHE="internal") AC_ARG_WITH(cache-check, AS_HELP_STRING([--with-cache-check=PATH], [cache_check tool: [autodetect]]), CACHE_CHECK_CMD=$withval, CACHE_CHECK_CMD="autodetect") AC_ARG_WITH(cache-dump, AS_HELP_STRING([--with-cache-dump=PATH], [cache_dump tool: [autodetect]]), CACHE_DUMP_CMD=$withval, CACHE_DUMP_CMD="autodetect") AC_ARG_WITH(cache-repair, AS_HELP_STRING([--with-cache-repair=PATH], [cache_repair tool: [autodetect]]), CACHE_REPAIR_CMD=$withval, CACHE_REPAIR_CMD="autodetect") AC_ARG_WITH(cache-restore, AS_HELP_STRING([--with-cache-restore=PATH], [cache_restore tool: [autodetect]]), CACHE_RESTORE_CMD=$withval, CACHE_RESTORE_CMD="autodetect") AC_MSG_RESULT([$CACHE]) AS_CASE(["$CACHE"], [no|none|shared], [], [internal], [ AC_DEFINE([CACHE_INTERNAL], 1, [Define to 1 to include built-in support for cache.])], [AC_MSG_ERROR([--with-cache parameter invalid])]) dnl -- cache_check needs-check flag AC_ARG_ENABLE(cache_check_needs_check, AS_HELP_STRING([--disable-cache_check_needs_check], [required if cache_check version is < 0.5]), CACHE_CHECK_NEEDS_CHECK=$enableval, CACHE_CHECK_NEEDS_CHECK="yes") # Test if necessary cache tools are available # if not - use plain defaults and warn user AS_CASE(["$CACHE"], [internal|shared], [ # Empty means a config way to ignore cache checking AS_IF([test "$CACHE_CHECK_CMD" = "autodetect"], [ AC_PATH_TOOL(CACHE_CHECK_CMD, cache_check, [], [$PATH_SBIN]) AS_IF([test -z "$CACHE_CHECK_CMD"], [ AC_MSG_WARN([cache_check not found in path $PATH_SBIN]) CACHE_CHECK_CMD="/usr/sbin/cache_check" CACHE_CONFIGURE_WARN="y" ]) ]) AS_IF([test "$CACHE_CHECK_NEEDS_CHECK" = "yes" && test "$CACHE_CONFIGURE_WARN" != "y"], [ $CACHE_CHECK_CMD -V 2>/dev/null >conftest.tmp read -r CACHE_CHECK_VSN < conftest.tmp IFS=.- read -r CACHE_CHECK_VSN_MAJOR CACHE_CHECK_VSN_MINOR CACHE_CHECK_VSN_PATCH LEFTOVER < conftest.tmp rm -f conftest.tmp # Require version >= 0.5.4 for --clear-needs-check-flag AS_IF([test -z "$CACHE_CHECK_VSN_MAJOR" \ || test -z "$CACHE_CHECK_VSN_MINOR" \ || test -z "$CACHE_CHECK_VSN_PATCH"], [ AC_MSG_WARN([$CACHE_CHECK_CMD: Bad version "$CACHE_CHECK_VSN" found]) CACHE_CHECK_VERSION_WARN="y" CACHE_CHECK_NEEDS_CHECK="no" ], [test "$CACHE_CHECK_VSN_MAJOR" -eq 0], [ AS_IF([test "$CACHE_CHECK_VSN_MINOR" -lt 5 \ || ( test "$CACHE_CHECK_VSN_MINOR" -eq 5 && test "$CACHE_CHECK_VSN_PATCH" -lt 4 )], [ AC_MSG_WARN([$CACHE_CHECK_CMD: Old version "$CACHE_CHECK_VSN" found]) CACHE_CHECK_VERSION_WARN="y" CACHE_CHECK_NEEDS_CHECK="no" ]) AS_IF([test "$CACHE_CHECK_VSN_MINOR" -lt 7], [ AC_MSG_WARN([$CACHE_CHECK_CMD: Old version "$CACHE_CHECK_VSN" does not support new cache format V2]) CACHE_CHECK_VERSION_WARN=y ]) ]) ]) # Empty means a config way to ignore cache dumping AS_IF([test "$CACHE_DUMP_CMD" = "autodetect"], [ AC_PATH_TOOL(CACHE_DUMP_CMD, cache_dump, [], [$PATH_SBIN]) AS_IF([test -z "$CACHE_DUMP_CMD"], [ AC_MSG_WARN(["cache_dump not found in path $PATH_SBIN"]) CACHE_DUMP_CMD="/usr/sbin/cache_dump" CACHE_CONFIGURE_WARN="y" ]) ]) # Empty means a config way to ignore cache repairing AS_IF([test "$CACHE_REPAIR_CMD" = "autodetect"], [ AC_PATH_TOOL(CACHE_REPAIR_CMD, cache_repair, [], [$PATH_SBIN]) AS_IF([test -z "$CACHE_REPAIR_CMD"], [ AC_MSG_WARN(["cache_repair not found in path $PATH_SBIN"]) CACHE_REPAIR_CMD="/usr/sbin/cache_repair" CACHE_CONFIGURE_WARN="y" ]) ]) # Empty means a config way to ignore cache restoring AS_IF([test "$CACHE_RESTORE_CMD" = "autodetect"], [ AC_PATH_TOOL(CACHE_RESTORE_CMD, cache_restore, [], [$PATH_SBIN]) AS_IF([test -z "$CACHE_RESTORE_CMD"], [ AC_MSG_WARN(["cache_restore not found in path $PATH_SBIN"]) CACHE_RESTORE_CMD="/usr/sbin/cache_restore" CACHE_CONFIGURE_WARN="y" ]) ]) AC_MSG_CHECKING([whether cache_check supports the needs-check flag]) AC_MSG_RESULT([$CACHE_CHECK_NEEDS_CHECK]) AS_IF([test "$CACHE_CHECK_NEEDS_CHECK" = "yes"], [ AC_DEFINE([CACHE_CHECK_NEEDS_CHECK], 1, [Define to 1 if the external 'cache_check' tool requires the --clear-needs-check-flag option]) ]) ]) AC_DEFINE_UNQUOTED([CACHE_CHECK_CMD], ["$CACHE_CHECK_CMD"], [The path to 'cache_check', if available.]) AC_DEFINE_UNQUOTED([CACHE_DUMP_CMD], ["$CACHE_DUMP_CMD"], [The path to 'cache_dump', if available.]) AC_DEFINE_UNQUOTED([CACHE_REPAIR_CMD], ["$CACHE_REPAIR_CMD"], [The path to 'cache_repair', if available.]) 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, AS_HELP_STRING([--with-vdo=TYPE], [vdo support: internal/none [internal]]), VDO=$withval, VDO="internal") AC_MSG_RESULT([$VDO]) AC_ARG_WITH(vdo-format, AS_HELP_STRING([--with-vdo-format=PATH], [vdoformat tool: [autodetect]]), VDO_FORMAT_CMD=$withval, VDO_FORMAT_CMD="autodetect") AS_CASE(["$VDO"], [no|none], [], [internal], [ AC_DEFINE([VDO_INTERNAL], 1, [Define to 1 to include built-in support for vdo.]) AS_IF([test "$VDO_FORMAT_CMD" = "autodetect"], [ AC_PATH_TOOL(VDO_FORMAT_CMD, vdoformat, [], [$PATH]) AS_IF([test -z "$VDO_FORMAT_CMD"], [ AC_MSG_WARN([vdoformat not found in path $PATH]) VDO_FORMAT_CMD="/usr/bin/vdoformat" VDO_CONFIGURE_WARN=y ]) ])], [AC_MSG_ERROR([--with-vdo parameter invalid])]) 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, # AS_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, # AS_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 -- writecache inclusion type AC_MSG_CHECKING([whether to include writecache]) AC_ARG_WITH(writecache, AS_HELP_STRING([--with-writecache=TYPE], [writecache support: internal/none [internal]]), WRITECACHE=$withval, WRITECACHE="internal") AC_MSG_RESULT([$WRITECACHE]) AS_CASE(["$WRITECACHE"], [no|none], [], [internal], [ AC_DEFINE([WRITECACHE_INTERNAL], 1, [Define to 1 to include built-in support for writecache.])], [AC_MSG_ERROR([--with-writecache parameter invalid])]) ################################################################################ dnl -- integrity inclusion type AC_MSG_CHECKING([whether to include integrity]) AC_ARG_WITH(integrity, AS_HELP_STRING([--with-integrity=TYPE], [integrity support: internal/none [internal]]), INTEGRITY=$withval, INTEGRITY="internal") AC_MSG_RESULT([$INTEGRITY]) AS_CASE(["$INTEGRITY"], [no|none], [], [internal], [ AC_DEFINE([INTEGRITY_INTERNAL], 1, [Define to 1 to include built-in support for integrity.])], [AC_MSG_ERROR([--with-integrity parameter invalid])]) ################################################################################ dnl -- Disable readline AC_ARG_ENABLE([readline], AS_HELP_STRING([--disable-readline], [disable readline support]), READLINE=$enableval, READLINE="maybe") ################################################################################ dnl -- Disable editline AC_ARG_ENABLE([editline], AS_HELP_STRING([--enable-editline], [enable editline support]), EDITLINE=$enableval, EDITLINE="no") ################################################################################ dnl -- Disable realtime clock support AC_MSG_CHECKING([whether to enable realtime support]) AC_ARG_ENABLE(realtime, AS_HELP_STRING([--disable-realtime], [disable realtime clock support]), REALTIME=$enableval, REALTIME="yes") AC_MSG_RESULT([$REALTIME]) ################################################################################ dnl -- disable OCF resource agents AC_MSG_CHECKING([whether to enable OCF resource agents]) AC_ARG_ENABLE(ocf, AS_HELP_STRING([--enable-ocf], [enable Open Cluster Framework (OCF) compliant resource agents]), OCF=$enableval, OCF="no") AC_MSG_RESULT([$OCF]) AC_ARG_WITH(ocfdir, AS_HELP_STRING([--with-ocfdir=DIR], [install OCF files in [PREFIX/lib/ocf/resource.d/lvm2]]), OCFDIR=$withval, OCFDIR='${prefix}/lib/ocf/resource.d/lvm2') ################################################################################ AC_MSG_CHECKING([for default run directory]) RUN_DIR="/run" AS_IF([test ! -d "$RUN_DIR"], [RUN_DIR="/var/run"]) AC_MSG_RESULT([$RUN_DIR]) dnl -- Set up pidfile and run directory AH_TEMPLATE(DEFAULT_PID_DIR) AC_ARG_WITH(default-pid-dir, AS_HELP_STRING([--with-default-pid-dir=PID_DIR], [default directory to keep PID files in [autodetect]]), DEFAULT_PID_DIR="$withval", DEFAULT_PID_DIR=$RUN_DIR) AC_DEFINE_UNQUOTED(DEFAULT_PID_DIR, ["$DEFAULT_PID_DIR"], [Default directory to keep PID files in.]) AH_TEMPLATE(DEFAULT_DM_RUN_DIR, [Name of default DM run directory.]) AC_ARG_WITH(default-dm-run-dir, AS_HELP_STRING([--with-default-dm-run-dir=DM_RUN_DIR], [default DM run directory [autodetect]]), DEFAULT_DM_RUN_DIR="$withval", DEFAULT_DM_RUN_DIR=$RUN_DIR) AC_DEFINE_UNQUOTED(DEFAULT_DM_RUN_DIR, ["$DEFAULT_DM_RUN_DIR"], [Default DM run directory.]) AH_TEMPLATE(DEFAULT_RUN_DIR, [Name of default LVM run directory.]) AC_ARG_WITH(default-run-dir, AS_HELP_STRING([--with-default-run-dir=RUN_DIR], [default LVM run directory [autodetect_run_dir/lvm]]), DEFAULT_RUN_DIR="$withval", DEFAULT_RUN_DIR="$RUN_DIR/lvm") AC_DEFINE_UNQUOTED(DEFAULT_RUN_DIR, ["$DEFAULT_RUN_DIR"], [Default LVM run directory.]) ################################################################################ dnl -- Build cluster mirror log daemon AC_MSG_CHECKING([whether to build cluster mirror log daemon]) AC_ARG_ENABLE(cmirrord, AS_HELP_STRING([--enable-cmirrord], [enable the cluster mirror log daemon]), BUILD_CMIRRORD=$enableval, BUILD_CMIRRORD="no") AC_MSG_RESULT([$BUILD_CMIRRORD]) ################################################################################ dnl -- cmirrord pidfile AS_IF([test "$BUILD_CMIRRORD" = "yes"], [ AC_ARG_WITH(cmirrord-pidfile, AS_HELP_STRING([--with-cmirrord-pidfile=PATH], [cmirrord pidfile [PID_DIR/cmirrord.pid]]), CMIRRORD_PIDFILE=$withval, CMIRRORD_PIDFILE="$DEFAULT_PID_DIR/cmirrord.pid") AC_DEFINE_UNQUOTED(CMIRRORD_PIDFILE, ["$CMIRRORD_PIDFILE"], [Path to cmirrord pidfile.]) ]) ################################################################################ dnl -- Look for corosync libraries if required. AS_IF([test "$BUILD_CMIRRORD" = "yes" && test "$HAVE_CPG" != "yes"], [ PKG_CHECK_MODULES([CPG], [libcpg]) ]) ################################################################################ dnl -- Enable debugging AC_MSG_CHECKING([whether to enable debugging]) AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [enable debugging]), DEBUG=$enableval, DEBUG="no") AC_MSG_RESULT([$DEBUG]) dnl -- Normally turn off optimisation for debug builds AS_IF([test "$DEBUG" = "yes"], [COPTIMISE_FLAG=""], [CSCOPE_CMD=""]) dnl -- Check if compiler supports -Wjump-misses-init AC_TRY_CCFLAG([-Wjump-misses-init], [HAVE_WJUMP], [], []) AC_SUBST(HAVE_WJUMP) AC_TRY_CCFLAG([-Wclobbered], [HAVE_WCLOBBERED], [], []) AC_SUBST(HAVE_WCLOBBERED) AC_TRY_CCFLAG([-Wsync-nand], [HAVE_WSYNCNAND], [], []) AC_SUBST(HAVE_WSYNCNAND) ################################################################################ dnl -- Override optimisation AC_MSG_CHECKING([for C optimisation flag]) AC_ARG_WITH(optimisation, AS_HELP_STRING([--with-optimisation=OPT], [C optimisation flag [OPT=-O2]]), COPTIMISE_FLAG=$withval) AC_MSG_RESULT([$COPTIMISE_FLAG]) ################################################################################ dnl -- Symbol versioning AC_MSG_CHECKING([whether to use symbol versioning]) AC_ARG_WITH(symvers, AS_HELP_STRING([--with-symvers=STYLE], [use symbol versioning of the shared library [default=gnu]]), [ AS_CASE(["$withval"], [gnu|no], [symvers=$withval], [AC_MSG_ERROR(--with-symvers parameter invalid)])], [symvers="gnu"]) AC_MSG_RESULT([$symvers]) AS_IF([test "$GCC" = "yes" && test "$symvers" = "gnu"], [ AC_DEFINE(GNU_SYMVER, 1, [Define to use GNU versioning in the shared library.]) AS_CASE(["$host_os"], [linux*], [ CLDFLAGS="${CLDFLAGS-"$LDFLAGS"} -Wl,--version-script,.export.sym" LDDEPS="$LDDEPS .export.sym"]) ]) ################################################################################ dnl -- Enable profiling AC_MSG_CHECKING([whether to gather gcov profiling data]) AC_ARG_ENABLE(profiling, AS_HELP_STRING([--enable-profiling], [gather gcov profiling data]), PROFILING=$enableval, PROFILING="no") AC_MSG_RESULT([$PROFILING]) AS_IF([test "$PROFILING" = "yes"], [ COPTIMISE_FLAG="$COPTIMISE_FLAG -fprofile-arcs -ftest-coverage" AC_PATH_TOOL(LCOV, lcov) AC_PATH_TOOL(GENHTML, genhtml) AS_IF([test -z "$LCOV" || test -z "$GENHTML"], [ AC_MSG_ERROR([lcov and genhtml are required for profiling]) ]) AC_PATH_TOOL(GENPNG, genpng) AS_IF([test -n "$GENPNG"], [ AC_MSG_CHECKING([whether $GENPNG has all required modules]) AS_IF(["$GENPNG" --help > /dev/null 2>&1], [ AC_MSG_RESULT([ok]) GENHTML="$GENHTML --frames" ], [ AC_MSG_RESULT([not supported]) AC_MSG_WARN([GD.pm perl module is not installed]) GENPNG= ]) ]) ]) ################################################################################ dnl -- Set LVM2 testsuite data TESTSUITE_DATA='${datarootdir}/lvm2-testsuite' # double eval needed ${datarootdir} -> ${prefix}/share -> real path AC_DEFINE_UNQUOTED(TESTSUITE_DATA, ["$(eval echo $(eval echo $TESTSUITE_DATA))"], [Path to testsuite data]) ################################################################################ dnl -- Enable valgrind awareness of memory pools AC_MSG_CHECKING([whether to enable valgrind awareness of pools]) AC_ARG_ENABLE(valgrind_pool, AS_HELP_STRING([--enable-valgrind-pool], [enable valgrind awareness of pools]), VALGRIND_POOL=$enableval, VALGRIND_POOL="no") AC_MSG_RESULT([$VALGRIND_POOL]) PKG_CHECK_MODULES(VALGRIND, valgrind, [HAVE_VALGRIND="yes"], [ AS_IF([test "$VALGRIND_POOL" = "yes"], [AC_MSG_ERROR(bailing out)]) ]) AC_SUBST(VALGRIND_CFLAGS) AS_IF([test "$HAVE_VALGRIND" = "yes"], [ AC_DEFINE([HAVE_VALGRIND], 1, [valgrind.h found]) ]) AS_IF([test "$VALGRIND_POOL" = "yes"], [ AC_DEFINE([VALGRIND_POOL], 1, [Enable a valgrind aware build of pool]) ]) ################################################################################ dnl -- Disable devmapper AC_MSG_CHECKING([whether to use device-mapper]) AC_ARG_ENABLE(devmapper, AS_HELP_STRING([--disable-devmapper], [disable LVM2 device-mapper interaction]), DEVMAPPER=$enableval) AC_MSG_RESULT([$DEVMAPPER]) AS_IF([test "$DEVMAPPER" = "yes"], [ AC_DEFINE([DEVMAPPER_SUPPORT], 1, [Define to 1 to enable LVM2 device-mapper interaction.]) ]) ################################################################################ dnl -- Build lvmpolld AC_MSG_CHECKING([whether to build lvmpolld]) AC_ARG_ENABLE(lvmpolld, AS_HELP_STRING([--enable-lvmpolld], [enable the LVM Polling Daemon]), BUILD_LVMPOLLD=$enableval, BUILD_LVMPOLLD="no") AC_MSG_RESULT([$BUILD_LVMPOLLD]) ################################################################################ BUILD_LVMLOCKD=no dnl -- Build lvmlockdsanlock AC_MSG_CHECKING([whether to build lvmlockdsanlock]) AC_ARG_ENABLE(lvmlockd-sanlock, AS_HELP_STRING([--enable-lvmlockd-sanlock], [enable the LVM lock daemon using sanlock]), BUILD_LOCKDSANLOCK=$enableval, BUILD_LOCKDSANLOCK="no") AC_MSG_RESULT([$BUILD_LOCKDSANLOCK]) dnl -- Look for sanlock libraries AS_IF([test "$BUILD_LOCKDSANLOCK" = "yes"], [ PKG_CHECK_MODULES(LIBSANLOCKCLIENT, libsanlock_client >= 3.3.0, [BUILD_LVMLOCKD="yes"]) AC_DEFINE([LOCKDSANLOCK_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd sanlock option.]) ]) ################################################################################ dnl -- Build lvmlockddlm AC_MSG_CHECKING([whether to build lvmlockddlm]) AC_ARG_ENABLE(lvmlockd-dlm, AS_HELP_STRING([--enable-lvmlockd-dlm], [enable the LVM lock daemon using dlm]), BUILD_LOCKDDLM=$enableval, BUILD_LOCKDDLM="no") AC_MSG_RESULT([$BUILD_LOCKDDLM]) dnl -- Look for dlm libraries AS_IF([test "$BUILD_LOCKDDLM" = "yes"], [ PKG_CHECK_MODULES(LIBDLM, libdlm_lt, [BUILD_LVMLOCKD="yes"]) AC_DEFINE([LOCKDDLM_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd dlm option.]) AS_CASE(["$LIBDLM_LIBS"], [*lpthread*], [ dnl -- pkg-congig for libdlm_lt may give us libdlm with libpthread AC_MSG_RESULT([replacing pkg-config --libs libdlm_lt "$LIBDLM_LIBS" with... -ldlm_lt]) LIBDLM_LIBS="${LIBDLM_LIBS%%ldlm*}ldlm_lt"]) ]) ################################################################################ dnl -- Build lvmlockddlmcontrol AC_MSG_CHECKING([whether to build lvmlockddlmcontrol]) AC_ARG_ENABLE(lvmlockd-dlmcontrol, AS_HELP_STRING([--enable-lvmlockd-dlmcontrol], [enable lvmlockd remote refresh using libdlmcontrol]), BUILD_LOCKDDLM_CONTROL=$enableval, BUILD_LOCKDDLM_CONTROL="no") AC_MSG_RESULT([$BUILD_LOCKDDLM_CONTROL]) dnl -- Look for libdlmcontrol libraries AS_IF([test "$BUILD_LOCKDDLM_CONTROL" = "yes"], [ PKG_CHECK_MODULES(LIBDLMCONTROL, [libdlmcontrol >= 3.2], [BUILD_LVMLOCKD="yes"]) AC_DEFINE([LOCKDDLM_CONTROL_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd dlm control option.]) ]) ################################################################################ dnl -- Build lvmlockdidm AC_MSG_CHECKING([whether to build lvmlockdidm]) AC_ARG_ENABLE(lvmlockd-idm, AS_HELP_STRING([--enable-lvmlockd-idm], [enable the LVM lock daemon using idm]), BUILD_LOCKDIDM=$enableval, BUILD_LOCKDIDM="no") AC_MSG_RESULT([$BUILD_LOCKDIDM]) dnl -- Look for Seagate IDM libraries AS_IF([test "$BUILD_LOCKDIDM" = "yes"], [ PKG_CHECK_EXISTS(blkid >= 2.24, [ PKG_CHECK_MODULES(LIBSEAGATEILM, [libseagate_ilm >= 0.1.0], [BUILD_LVMLOCKD="yes"]) AC_DEFINE([LOCKDIDM_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd IDM option.]) AS_IF([test -z "$LIBSEAGATEILM_LIBS"], [LIBSEAGATEILM_LIBS="-lseagate_ilm"]) ], $bailout) ]) ################################################################################ dnl -- Build lvmlockd AC_MSG_CHECKING([whether to build lvmlockd]) AC_MSG_RESULT([$BUILD_LVMLOCKD]) DEFAULT_USE_LVMLOCKD=0 AS_IF([test "$BUILD_LVMLOCKD" = "yes"], [ AS_IF([test "$LVMPOLLD" = "no"], [AC_MSG_ERROR([cannot build lvmlockd with --disable-lvmpolld.])]) AS_IF([test "$BUILD_LVMPOLLD" = "no"], [BUILD_LVMPOLLD=yes; AC_MSG_WARN([Enabling lvmpolld - required by lvmlockd.])]) AC_MSG_CHECKING([defaults for use_lvmlockd]) AC_ARG_ENABLE(use_lvmlockd, [AS_HELP_STRING([--disable-use-lvmlockd], [disable usage of LVM lock daemon])], [use_lvmlockd=$enableval],[use_lvmlockd="yes"]) AS_IF([test "$use_lvmlockd" = "yes"], [DEFAULT_USE_LVMLOCKD=1]) AC_MSG_RESULT([$DEFAULT_USE_LVMLOCKD]) AC_DEFINE([LVMLOCKD_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd.]) AC_ARG_WITH(lvmlockd-pidfile, AS_HELP_STRING([--with-lvmlockd-pidfile=PATH], [lvmlockd pidfile [PID_DIR/lvmlockd.pid]]), LVMLOCKD_PIDFILE=$withval, LVMLOCKD_PIDFILE="$DEFAULT_PID_DIR/lvmlockd.pid") AC_DEFINE_UNQUOTED(LVMLOCKD_PIDFILE, ["$LVMLOCKD_PIDFILE"], [Path to lvmlockd pidfile.]) ]) AC_DEFINE_UNQUOTED(DEFAULT_USE_LVMLOCKD, [$DEFAULT_USE_LVMLOCKD], [Use lvmlockd by default.]) ################################################################################ dnl -- Check lvmpolld DEFAULT_USE_LVMPOLLD=0 AS_IF([test "$BUILD_LVMPOLLD" = "yes"], [ AC_MSG_CHECKING([defaults for use_lvmpolld]) AC_ARG_ENABLE(use_lvmpolld, [AS_HELP_STRING([--disable-use-lvmpolld], [disable usage of LVM Poll Daemon])], [use_lvmpolld=$enableval], [use_lvmpolld="yes"]) AS_IF([test "$use_lvmpolld" = "yes"], [DEFAULT_USE_LVMPOLLD=1]) AC_MSG_RESULT([$DEFAULT_USE_LVMPOLLD]) AC_DEFINE([LVMPOLLD_SUPPORT], 1, [Define to 1 to include code that uses lvmpolld.]) AC_ARG_WITH(lvmpolld-pidfile, AS_HELP_STRING([--with-lvmpolld-pidfile=PATH], [lvmpolld pidfile [PID_DIR/lvmpolld.pid]]), LVMPOLLD_PIDFILE=$withval, LVMPOLLD_PIDFILE="$DEFAULT_PID_DIR/lvmpolld.pid") AC_DEFINE_UNQUOTED(LVMPOLLD_PIDFILE, ["$LVMPOLLD_PIDFILE"], [Path to lvmpolld pidfile.]) ]) AC_DEFINE_UNQUOTED(DEFAULT_USE_LVMPOLLD, [$DEFAULT_USE_LVMPOLLD], [Use lvmpolld by default.]) SYSTEMD_MIN_VERSION=0 PKG_CHECK_EXISTS(systemd >= 221, [SYSTEMD_MIN_VERSION=221]) PKG_CHECK_EXISTS(systemd >= 234, [SYSTEMD_MIN_VERSION=234]) ################################################################################ dnl -- Build notifydbus AC_MSG_CHECKING([whether to build notifydbus]) AC_ARG_ENABLE(notify-dbus, AS_HELP_STRING([--enable-notify-dbus], [enable LVM notification using dbus]), NOTIFYDBUS_SUPPORT=$enableval, NOTIFYDBUS_SUPPORT="no") AS_IF([test "$NOTIFYDBUS_SUPPORT" = "yes" && test "$SYSTEMD_MIN_VERSION" -lt 221], [AC_MSG_ERROR([Enabling notify-dbus requires systemd >= 221])]) AC_MSG_RESULT([$NOTIFYDBUS_SUPPORT]) AS_IF([test "$NOTIFYDBUS_SUPPORT" = "yes"], AC_DEFINE([NOTIFYDBUS_SUPPORT], 1, [Define to 1 to include code that uses dbus notification.])) ################################################################################ dnl -- Build with systemd journaling when the header file is present AS_IF([test "$SYSTEMD_MIN_VERSION" -ge 221], [SYSTEMD_JOURNAL_SUPPORT="maybe"], [SYSTEMD_JOURNAL_SUPPORT="no"]) AC_CHECK_HEADER([systemd/sd-journal.h], [AS_IF([test "$SYSTEMD_JOURNAL_SUPPORT" != "no"], [SYSTEMD_JOURNAL_SUPPORT="yes"])], [SYSTEMD_JOURNAL_SUPPORT="no"]) AC_MSG_CHECKING([whether to log to systemd journal]) AC_ARG_ENABLE(systemd-journal, AS_HELP_STRING([--disable-systemd-journal], [disable LVM systemd journaling]), AS_IF([test "$enableval" = "yes" && test "$SYSTEMD_JOURNAL_SUPPORT" = "no"], AC_MSG_ERROR([Enabling systemd journal requires systemd/sd-journal.h and systemd >= 221.])) SYSTEMD_JOURNAL_SUPPORT=$enableval, []) AC_MSG_RESULT([$SYSTEMD_JOURNAL_SUPPORT]) AS_IF([test "$SYSTEMD_JOURNAL_SUPPORT" = "yes"], AC_DEFINE([SYSTEMD_JOURNAL_SUPPORT], 1, [Define to 1 to include code that uses systemd journal.])) ################################################################################ dnl -- Build appmachineid when header file sd-id128.h is present AS_IF([test "$SYSTEMD_MIN_VERSION" -ge 234], [APP_MACHINEID_SUPPORT="maybe"], [APP_MACHINEID_SUPPORT="no"]) AC_CHECK_HEADER([systemd/sd-id128.h], [AS_IF([test "$APP_MACHINEID_SUPPORT" != "no"], [APP_MACHINEID_SUPPORT="yes"])], [APP_MACHINEID_SUPPORT="no"]) AC_MSG_CHECKING([whether to support systemd appmachineid]) AC_ARG_ENABLE(app-machineid, AS_HELP_STRING([--disable-app-machineid], [disable LVM system ID using app-specific machine-id]), AS_IF([test "$enableval" = "yes" && test "$APP_MACHINEID_SUPPORT" = "no"], AC_MSG_ERROR([Enabling app machineid requires systemd/sd-id128.h and systemd >= 234.])) APP_MACHINEID_SUPPORT=$enableval, []) AC_MSG_RESULT([$APP_MACHINEID_SUPPORT]) AS_IF([test "$APP_MACHINEID_SUPPORT" = "yes"], AC_DEFINE([APP_MACHINEID_SUPPORT], 1, [Define to 1 to include code that uses libsystemd machine-id apis.])) dnl -- Look for libsystemd libraries if needed AS_IF([test "$NOTIFYDBUS_SUPPORT" = "yes" || test "$SYSTEMD_JOURNAL_SUPPORT" = "yes" || test "$APP_MACHINEID_SUPPORT" = "yes"], [ PKG_CHECK_MODULES(LIBSYSTEMD, [libsystemd]) ]) ################################################################################ dnl -- Support override for systemd-run path if they need to (NixOS builds) AC_ARG_WITH(systemd-run, AS_HELP_STRING([--with-systemd-run=PATH], [systemd-run tool: [autodetect]]), SYSTEMD_RUN_CMD=$withval, SYSTEMD_RUN_CMD="autodetect") AS_IF([test "$SYSTEMD_RUN_CMD" = "autodetect"], [AC_PATH_TOOL(SYSTEMD_RUN_CMD, systemd-run)]) AC_MSG_CHECKING([for app running udev background service]) AS_IF([test -z "$SYSTEMD_RUN_CMD"], [SYSTEMD_RUN_CMD="/usr/bin/systemd-run"]) AC_MSG_RESULT([$SYSTEMD_RUN_CMD]) ################################################################################ dnl -- Enable blkid wiping functionality AC_ARG_ENABLE(blkid_wiping, AS_HELP_STRING([--disable-blkid_wiping], [disable libblkid detection of signatures when wiping and use native code instead]), BLKID_WIPING=$enableval, BLKID_WIPING="maybe") # TODO: possibly detect right version of blkid with BLKID_SUBLKS_FSINFO support # so lvresize can check detected flag here # DEFAULT_USE_BLKID_WIPING=0 PKG_CHECK_EXISTS([blkid >= 2.24], [HAVE_BLKID="yes"], [HAVE_BLKID="no"]) AS_IF([test "$HAVE_BLKID" = "yes"], [ PKG_CHECK_MODULES([BLKID], [blkid >= 2.24], [ AC_CACHE_CHECK([for blkid.h defines BLKID_SUBLKS_FSINFO.], [ac_cv_have_blkid_sublks_fsinfo], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include #ifndef BLKID_SUBLKS_FSINFO #error BLKID_SUBLKS_FSINFO is missing #endif])], [ac_cv_have_blkid_sublks_fsinfo="yes"], [ac_cv_have_blkid_sublks_fsinfo="no"])]) AC_IF_YES(ac_cv_have_blkid_sublks_fsinfo, AC_DEFINE(HAVE_BLKID_SUBLKS_FSINFO, 1, [Define if blkid.h has BLKID_SUBLKS_FSINFO])) ]) ]) AS_IF([test "$BLKID_WIPING" != "no"], [ AS_IF([test "$HAVE_BLKID" = "yes"], [ BLKID_WIPING="yes" BLKID_PC="blkid" DEFAULT_USE_BLKID_WIPING=1 BLKID_STATIC_LIBS=$("$PKG_CONFIG" --static --libs blkid) AC_DEFINE([BLKID_WIPING_SUPPORT], 1, [Define to 1 to use libblkid detection of signatures when wiping.]) ], [ AS_IF([test "$BLKID_WIPING" = "maybe"], [ BLKID_WIPING=no ], [ AC_MSG_ERROR([bailing out... blkid library >= 2.24 is required]) ]) ]) ]) AC_MSG_CHECKING([whether to enable libblkid detection of signatures when wiping]) AC_MSG_RESULT([$BLKID_WIPING]) AC_DEFINE_UNQUOTED(DEFAULT_USE_BLKID_WIPING, [$DEFAULT_USE_BLKID_WIPING], [Use blkid wiping by default.]) ################################################################################ dnl -- Enable udev synchronisation AC_MSG_CHECKING([whether to enable synchronisation with udev processing]) AC_ARG_ENABLE(udev_sync, AS_HELP_STRING([--enable-udev_sync], [enable synchronisation with udev processing]), UDEV_SYNC=$enableval, UDEV_SYNC="no") AC_MSG_RESULT([$UDEV_SYNC]) AS_IF([test "$UDEV_SYNC" = "yes"], [ PKG_CHECK_MODULES(UDEV, libudev >= 143, [UDEV_PC="libudev"]) UDEV_STATIC_LIBS=$("$PKG_CONFIG" --static --libs libudev) AC_DEFINE([UDEV_SYNC_SUPPORT], 1, [Define to 1 to enable synchronisation with udev processing.]) AC_CHECK_LIB(udev, udev_device_get_is_initialized, AC_DEFINE([HAVE_LIBUDEV_UDEV_DEVICE_GET_IS_INITIALIZED], 1, [Define to 1 if udev_device_get_is_initialized is available.])) LIBS=$ac_check_lib_save_LIBS ]) dnl -- Enable udev rules AC_MSG_CHECKING([whether to enable installation of udev rules required for synchronisation]) AC_ARG_ENABLE(udev_rules, AS_HELP_STRING([--enable-udev_rules], [install rule files needed for udev synchronisation]), UDEV_RULES=$enableval, UDEV_RULES=$UDEV_SYNC) AC_MSG_RESULT([$UDEV_RULES]) AC_MSG_CHECKING([whether to enable executable path detection in udev rules]) AC_ARG_ENABLE(udev_rule_exec_detection, AS_HELP_STRING([--enable-udev-rule-exec-detection], [enable executable path detection in udev rules]), UDEV_RULE_EXEC_DETECTION=$enableval, UDEV_RULE_EXEC_DETECTION="no") AC_MSG_RESULT([$UDEV_RULE_EXEC_DETECTION]) dnl -- Check support for built-in blkid against target udev version AS_IF([test "$UDEV_RULE" != "no"], [ PKG_CHECK_EXISTS([libudev >= 176], [ UDEV_HAS_BUILTIN_BLKID="yes" ], [ UDEV_HAS_BUILTIN_BLKID="no" ]) AC_MSG_CHECKING([whether udev supports built-in blkid]) AC_MSG_RESULT([$UDEV_HAS_BUILTIN_BLKID]) ]) ################################################################################ dnl -- Compatible units suffix mode AC_ARG_ENABLE(units-compat, AS_HELP_STRING([--enable-units-compat], [enable output compatibility with old versions that that do not use KiB-style unit suffixes]), UNITS_COMPAT=$enableval, UNITS_COMPAT="no") AS_IF([test "$UNITS_COMPAT" = "yes"], [ AC_DEFINE([DEFAULT_SI_UNIT_CONSISTENCY], 0, [Define to 0 to reinstate the pre-2.02.54 handling of unit suffixes.]) ]) ################################################################################ dnl -- Disable ioctl AC_ARG_ENABLE(ioctl, AS_HELP_STRING([--disable-ioctl], [disable ioctl calls to device-mapper in the kernel]), DM_IOCTLS=$enableval) AS_IF([test "$DM_IOCTLS" = "yes"], [AC_DEFINE([DM_IOCTLS], 1, [Define to enable ioctls calls to kernel])]) ################################################################################ dnl -- Disable O_DIRECT AC_MSG_CHECKING([whether to enable O_DIRECT]) AC_ARG_ENABLE(o_direct, AS_HELP_STRING([--disable-o_direct], [disable O_DIRECT]), ODIRECT=$enableval) AC_MSG_RESULT([$ODIRECT]) AS_IF([test "$ODIRECT" = "yes"], [ AC_DEFINE([O_DIRECT_SUPPORT], 1, [Define to 1 to enable O_DIRECT support.]) ]) ################################################################################ dnl -- Enable cmdlib AC_MSG_CHECKING([whether to compile liblvm2cmd.so]) AC_ARG_ENABLE(cmdlib, AS_HELP_STRING([--enable-cmdlib], [build shared command library]), CMDLIB=$enableval, CMDLIB="no") AC_MSG_RESULT([$CMDLIB]) AC_SUBST([LVM2CMD_LIB]) AS_IF([test "$CMDLIB" = "yes"], [LVM2CMD_LIB="-llvm2cmd"], [LVM2CMD_LIB=]) ################################################################################ dnl -- Enable D-Bus service AC_MSG_CHECKING([whether to include Python D-Bus support]) AC_ARG_ENABLE(dbus-service, AS_HELP_STRING([--enable-dbus-service], [install D-Bus support]), BUILD_LVMDBUSD=$enableval, BUILD_LVMDBUSD="no") AC_MSG_RESULT([$BUILD_LVMDBUSD]) AS_IF([test "$NOTIFYDBUS_SUPPORT" = "no" && test "$BUILD_LVMDBUSD" = "yes"], [AC_MSG_WARN([Building D-Bus support without D-Bus notifications.])]) ################################################################################ dnl -- Enable Python dbus library AS_IF([test "$BUILD_LVMDBUSD" = "yes"], [ unset am_cv_pathless_PYTHON ac_cv_path_PYTHON am_cv_python_platform unset am_cv_python_pythondir am_cv_python_version am_cv_python_pyexecdir unset ac_cv_path_PYTHON_CONFIG ac_cv_path_ac_pt_PYTHON_CONFIG m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[ python3 python2 python dnl python3.12 python3.11 python3.10 python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 dnl python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 ]) AM_PATH_PYTHON([3]) PYTHON3=$PYTHON AS_IF([test -z "$PYTHON3"], [ AC_MSG_ERROR([python3 is required for --enable-python3_bindings or --enable-dbus-service but cannot be found]) ]) AC_PATH_TOOL(PYTHON3_CONFIG, python3-config) AS_IF([test -z "$PYTHON3_CONFIG"], [ AC_MSG_ERROR([python3 headers are required for --enable-python3_bindings or --enable-dbus-service but cannot be found]) ]) PYTHON3DIR=$pythondir AS_IF([test "$PYTHON3_BINDINGS" = "yes"], [PYTHON_BINDINGS="yes"]) # To get this macro, install autoconf-archive package then run autoreconf AX_PYTHON_MODULE([pyudev], [Required], python3) AX_PYTHON_MODULE([dbus], [Required], python3) ]) ################################################################################ dnl -- Enable pkg-config AC_ARG_ENABLE(pkgconfig, AS_HELP_STRING([--enable-pkgconfig], [install pkgconfig support]), PKGCONFIG=$enableval, PKGCONFIG="no") ################################################################################ dnl -- Enable installation of writable files by user AC_ARG_ENABLE(write_install, AS_HELP_STRING([--enable-write_install], [install user writable files]), WRITE_INSTALL=$enableval, WRITE_INSTALL="no") ################################################################################ dnl -- Enable fsadm AC_MSG_CHECKING([whether to install fsadm]) AC_ARG_ENABLE(fsadm, AS_HELP_STRING([--disable-fsadm], [disable fsadm]), FSADM=$enableval) AC_MSG_RESULT([$FSADM]) ################################################################################ dnl -- Enable lvm_import_vdo AC_MSG_CHECKING([whether to install lvm_import_vdo]) AC_ARG_ENABLE(lvmimportvdo, AS_HELP_STRING([--disable-lvmimportvdo], [disable lvm_import_vdo]), LVMIMPORTVDO=$enableval) AC_MSG_RESULT([$LVMIMPORTVDO]) ################################################################################ dnl -- Enable blkdeactivate AC_MSG_CHECKING([whether to install blkdeactivate]) AC_ARG_ENABLE(blkdeactivate, AS_HELP_STRING([--disable-blkdeactivate], [disable blkdeactivate]), BLKDEACTIVATE=$enableval) AC_MSG_RESULT([$BLKDEACTIVATE]) ################################################################################ dnl -- enable dmeventd handling AC_MSG_CHECKING([whether to use dmeventd]) AC_ARG_ENABLE(dmeventd, AS_HELP_STRING([--enable-dmeventd], [enable the device-mapper event daemon]), BUILD_DMEVENTD=$enableval, BUILD_DMEVENTD="no") AC_MSG_RESULT([$BUILD_DMEVENTD]) dnl -- dmeventd currently requires internal mirror support AS_IF([test "$BUILD_DMEVENTD" = "yes"], [ AS_IF([test "$MIRRORS" != "internal"], [ AC_MSG_ERROR([--enable-dmeventd currently requires --with-mirrors=internal]) ]) AS_IF([test "$CMDLIB" = "no"], [ AC_MSG_ERROR([--enable-dmeventd requires --enable-cmdlib to be used as well]) ]) AC_DEFINE([DMEVENTD], 1, [Define to 1 to enable the device-mapper event daemon.]) ]) ################################################################################ dnl -- Check dmfilemapd AC_MSG_CHECKING([whether to build dmfilemapd]) AC_ARG_ENABLE(dmfilemapd, AS_HELP_STRING([--enable-dmfilemapd], [enable the dmstats filemap daemon]), BUILD_DMFILEMAPD=$enableval, BUILD_DMFILEMAPD="no") AC_MSG_RESULT([$BUILD_DMFILEMAPD]) dnl -- dmfilemapd requires FIEMAP AS_IF([test "$BUILD_DMFILEMAPD" = "yes"], [AC_CHECK_HEADER([linux/fiemap.h], [], ,[AC_MSG_ERROR(--enable-dmfilemapd requires fiemap.h)]) AC_DEFINE([DMFILEMAPD], 1, [Define to 1 to enable the device-mapper filemap daemon.])]) ################################################################################ dnl -- getline included in recent libc AC_CHECK_LIB(c, getline, [AC_DEFINE([HAVE_GETLINE], 1, [Define to 1 if getline is available.])]) ################################################################################ dnl -- canonicalize_file_name included in recent libc AC_CHECK_LIB(c, canonicalize_file_name, AC_DEFINE([HAVE_CANONICALIZE_FILE_NAME], 1, [Define to 1 if canonicalize_file_name is available.])) ################################################################################ dnl -- Check for dlopen AC_CHECK_LIB(dl, dlopen, [AC_DEFINE([HAVE_LIBDL], 1, [Define to 1 if dynamic libraries are available.]) DL_LIBS="-ldl" HAVE_LIBDL="yes"], [DL_LIBS= HAVE_LIBDL="no" ]) ################################################################################ dnl -- Check for shared/static conflicts AS_IF([( test "$LVM1" = "shared" || test "$POOL" = "shared" ) && test "$STATIC_LINK" = "yes"], [ AC_MSG_ERROR([Features cannot be 'shared' when building statically]) ]) ################################################################################ AC_CHECK_LIB(m, log10, [M_LIBS="-lm"], hard_bailout) ################################################################################ AC_CHECK_LIB([pthread], [pthread_mutex_lock], [PTHREAD_LIBS="-lpthread"], hard_bailout) ################################################################################ dnl -- Disable selinux AC_MSG_CHECKING([whether to enable selinux support]) AC_ARG_ENABLE(selinux, AS_HELP_STRING([--disable-selinux], [disable selinux support]), SELINUX=$enableval) AC_MSG_RESULT([$SELINUX]) ################################################################################ dnl -- Check for selinux AS_IF([test "$SELINUX" = "yes"], [ AC_CHECK_LIB([sepol], [sepol_check_context], [ AC_DEFINE([HAVE_SEPOL], 1, [Define to 1 if sepol_check_context is available.]) SEPOL_LIBS="-lsepol"]) PKG_CHECK_EXISTS([libselinux], [PKG_CHECK_MODULES([SELINUX], [libselinux], [SELINUX_STATIC_LIBS=$("$PKG_CONFIG" --static --libs libselinux)])]) AC_CHECK_LIB([selinux], [is_selinux_enabled], [ AC_CHECK_HEADERS([selinux/selinux.h],, hard_bailout) AC_CHECK_HEADERS([selinux/label.h]) AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.]) SELINUX_LIBS=${SELINUX_LIBS:--lselinux} SELINUX_STATIC_LIBS=${SELINUX_STATIC_LIBS:-$SELINUX_LIBS $SEPOL_LIBS} SELINUX_PC="libselinux" HAVE_SELINUX=yes ], [ AC_MSG_WARN(Disabling selinux) SELINUX_LIBS= SELINUX_STATIC_LIBS= SELINUX_PC= HAVE_SELINUX=no ]) ]) ################################################################################ dnl -- Check BLKZEROOUT support AC_CACHE_CHECK([for BLKZEROOUT in sys/ioctl.h.], [ac_cv_have_blkzeroout], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [#include #include int bar(void) { return ioctl(0, BLKZEROOUT, 0); }] )], [ac_cv_have_blkzeroout="yes"], [ac_cv_have_blkzeroout="no"])]) AC_ARG_ENABLE(blkzeroout, AS_HELP_STRING([--disable-blkzeroout], [do not use BLKZEROOUT for device zeroing]), BLKZEROOUT=$enableval, BLKZEROOUT="yes") AC_MSG_CHECKING([whether to use BLKZEROOUT for device zeroing]) AS_IF([test "$BLKZEROOUT" = "yes"], [ AC_IF_YES(ac_cv_have_blkzeroout, AC_DEFINE(HAVE_BLKZEROOUT, 1, [Define if ioctl BLKZEROOUT can be used for device zeroing.]), BLKZEROOUT="no") ]) AC_MSG_RESULT([$BLKZEROOUT]) ################################################################################ dnl -- Check for realtime clock support RT_LIBS= HAVE_REALTIME=no AS_IF([test "$REALTIME" = "yes"], [ AC_CHECK_FUNCS([clock_gettime], HAVE_REALTIME=yes) AS_IF([test "$HAVE_REALTIME" != "yes"], [ # try again with -lrt AC_CHECK_LIB([rt], [clock_gettime], RT_LIBS="-lrt"; HAVE_REALTIME=yes)]) AS_IF([test "$HAVE_REALTIME" = "yes"], [ AC_DEFINE([HAVE_REALTIME], 1, [Define to 1 to include support for realtime clock.]) ], [ AC_MSG_WARN(Disabling realtime clock) ]) ]) dnl Check if the system has struct stat st_ctim. AC_CACHE_CHECK([for struct stat has st_ctim.], [ac_cv_stat_st_ctim], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [#include long bar(void) { struct stat s; return (long)(s.st_ctim.tv_sec + s.st_ctim.tv_nsec);}] )], [ac_cv_stat_st_ctim=yes], [ac_cv_stat_st_ctim=no])]) AC_IF_YES(ac_cv_stat_st_ctim, AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [Define if struct stat has a field st_ctim with timespec for ctime])) ################################################################################ dnl -- Check for getopt AC_CHECK_HEADERS(getopt.h, AC_DEFINE([HAVE_GETOPTLONG], 1, [Define to 1 if getopt_long is available.])) ################################################################################ dnl -- Check for editline AS_IF([test "$EDITLINE" = "yes"], [ PKG_CHECK_MODULES([EDITLINE], [libedit], [ AC_DEFINE([EDITLINE_SUPPORT], 1, [Define to 1 to include the LVM editline shell.])], AC_MSG_ERROR( [libedit could not be found which is required for the --enable-editline option.]) ) ]) ################################################################################ dnl -- Check for readline (Shamelessly copied from parted 1.4.17) AS_IF([test "$READLINE" != "no"], [ lvm_saved_libs=$LIBS AC_SEARCH_LIBS([tgetent], [tinfo ncurses curses termcap termlib], READLINE_LIBS=$ac_cv_search_tgetent, [ AS_IF([test "$READLINE" = "yes"], [ AC_MSG_ERROR( [termcap could not be found which is required for the --enable-readline option (which is enabled by default). Either disable readline support with --disable-readline or download and install termcap from: ftp.gnu.org/gnu/termcap Note: if you are using precompiled packages you will also need the development package as well (which may be called termcap-devel or something similar). Note: (n)curses also seems to work as a substitute for termcap. This was not found either - but you could try installing that as well.]) ]) ]) dnl -- Old systems may need extra termcap dependency explicitly in LIBS AC_CHECK_LIB([readline], [readline], [ AC_DEFINE([READLINE_SUPPORT], 1, [Define to 1 to include the LVM readline shell.]) dnl -- Try only with -lreadline and check for different symbol READLINE="yes" LIBS=$lvm_saved_libs AC_CHECK_LIB([readline], [rl_line_buffer], [ READLINE_LIBS="-lreadline" ], [ AC_MSG_RESULT([linking -lreadline with $READLINE_LIBS needed]) READLINE_LIBS="-lreadline $READLINE_LIBS" ]) ], [ READLINE_LIBS= AS_IF([test "$READLINE" = "yes"], [ AC_MSG_ERROR( [GNU Readline could not be found which is required for the --enable-readline option (which is enabled by default). Either disable readline support with --disable-readline or download and install readline from: ftp.gnu.org/gnu/readline Note: if you are using precompiled packages you will also need the development package as well (which may be called readline-devel or something similar).]) ]) ]) LIBS="$READLINE_LIBS $lvm_saved_libs" AC_CHECK_FUNCS([rl_completion_matches]) LIBS=$lvm_saved_libs ]) ################################################################################ dnl -- Internationalisation stuff AC_MSG_CHECKING([whether to enable internationalisation]) AC_ARG_ENABLE(nls, AS_HELP_STRING([--enable-nls], [enable Native Language Support]), INTL=$enableval, INTL="no") AC_MSG_RESULT([$INTL]) AS_IF([test "$INTL" = "yes"], [ # FIXME - Move this - can be device-mapper too INTL_PACKAGE="lvm2" AC_PATH_TOOL(MSGFMT, msgfmt) AS_IF([test -z "$MSGFMT"], [AC_MSG_ERROR([msgfmt not found in path $PATH])]) AC_ARG_WITH(localedir, AS_HELP_STRING([--with-localedir=DIR], [locale-dependent data [DATAROOTDIR/locale]]), localedir=$withval, localedir=${localedir-'${datarootdir}/locale'}) AC_DEFINE_UNQUOTED([INTL_PACKAGE], ["$INTL_PACKAGE"], [Internalization package]) # double eval needed ${datarootdir} -> ${prefix}/share -> real path AC_DEFINE_UNQUOTED([LOCALEDIR], ["$(eval echo $(eval echo $localedir))"], [Locale-dependent data]) ]) ################################################################################ dnl -- FIXME: need to switch to regular option here --sysconfdir AC_ARG_WITH(confdir, AS_HELP_STRING([--with-confdir=DIR], [configuration files in DIR [/etc]]), CONFDIR=$withval, CONFDIR='/etc') AC_DEFINE_UNQUOTED(DEFAULT_ETC_DIR, ["$CONFDIR"], [Default system configuration directory.]) AC_ARG_WITH(staticdir, AS_HELP_STRING([--with-staticdir=DIR], [static binaries in DIR [EPREFIX/sbin]]), STATICDIR=$withval, STATICDIR='${exec_prefix}/sbin') AC_ARG_WITH(usrlibdir, AS_HELP_STRING([--with-usrlibdir=DIR], [usrlib in DIR [PREFIX/lib]]), usrlibdir=$withval, usrlibdir='${prefix}/lib') AC_ARG_WITH(usrsbindir, AS_HELP_STRING([--with-usrsbindir=DIR], [usrsbin executables in DIR [PREFIX/sbin]]), usrsbindir=$withval, usrsbindir='${prefix}/sbin') AC_ARG_WITH(libexecdir, AS_HELP_STRING([--with-libexecdir=DIR], [libexec executables in DIR [PREFIX/libexec]]), libexecdir=$withval, libexecdir='${prefix}/libexec') ################################################################################ AC_ARG_WITH(udev_prefix, AS_HELP_STRING([--with-udev-prefix=UPREFIX], [install udev rule files in UPREFIX [EPREFIX]]), udev_prefix=$withval, udev_prefix='${exec_prefix}') AC_ARG_WITH(udevdir, AS_HELP_STRING([--with-udevdir=DIR], [udev rules in DIR [UPREFIX/lib/udev/rules.d]]), udevdir=$withval, udevdir='${udev_prefix}/lib/udev/rules.d') ################################################################################ dnl -- Get the systemd system unit dir value from pkg_config automatically if value not given explicitly. dnl -- This follows the recommendation for systemd integration best practices mentioned in daemon(7) manpage. AC_ARG_WITH(systemdsystemunitdir, AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [systemd service files in DIR])) AS_IF([test -z "$with_systemdsystemunitdir"], [PKG_CHECK_VAR([systemdsystemunitdir], [systemd], [systemdsystemunitdir], [], [systemdsystemunitdir='${exec_prefix}/lib/systemd/system'])], [systemdsystemunitdir="$with_systemdsystemunitdir"]) PKG_CHECK_VAR([systemdutildir], [systemd], [systemdutildir], [], [systemdutildir='${exec_prefix}/lib/systemd']) ################################################################################ AC_ARG_WITH(tmpfilesdir, AS_HELP_STRING([--with-tmpfilesdir=DIR], [install configuration files for management of volatile files and directories in DIR [PREFIX/lib/tmpfiles.d]]), tmpfilesdir=$withval, tmpfilesdir='${prefix}/lib/tmpfiles.d') ################################################################################ dnl -- Ensure additional headers required AS_IF([test "$READLINE" = "yes"], [ AC_CHECK_HEADERS(readline/readline.h readline/history.h,,hard_bailout) ]) AC_MSG_CHECKING([whether to enable readline]) AC_MSG_RESULT([$READLINE]) AS_IF([test "$EDITLINE" = "yes"], [ AC_CHECK_HEADERS(editline/readline.h,,hard_bailout) ]) AC_MSG_CHECKING([whether to enable editline]) AC_MSG_RESULT([$EDITLINE]) AS_IF([test "$BUILD_CMIRRORD" = "yes"], [ AC_CHECK_FUNCS(atexit,,hard_bailout) ]) AS_IF([test "$BUILD_LVMLOCKD" = "yes"], [ AS_IF([test "$HAVE_REALTIME" != "yes"], [ AC_MSG_ERROR([Realtime clock support is mandatory for lvmlockd.])]) AC_CHECK_FUNCS(strtoull,,hard_bailout) ]) AS_IF([test "$BUILD_LVMPOLLD" = "yes"], [ AC_CHECK_FUNCS(strpbrk,,hard_bailout) AC_FUNC_STRERROR_R ]) AS_IF([test "$BUILD_DMEVENTD" = "yes"], [ AC_CHECK_HEADERS(arpa/inet.h,,hard_bailout) ]) AS_IF([test "$HAVE_LIBDL" = "yes"], [ AC_CHECK_HEADERS(dlfcn.h,,hard_bailout) ]) AS_IF([test "$INTL" = "yes"], [ AC_CHECK_HEADERS(libintl.h,,hard_bailout) ]) AS_IF([test "$UDEV_SYNC" = "yes"], [ AC_CHECK_HEADERS(sys/ipc.h sys/sem.h,,hard_bailout) ]) AS_IF([test "$BUILD_DMFILEMAPD" = "yes"], [ AC_CHECK_HEADERS([sys/inotify.h],,hard_bailout) ]) ################################################################################ AC_PATH_TOOL(MODPROBE_CMD, modprobe, [], [$PATH_SBIN]) AS_IF([test -n "$MODPROBE_CMD"], [ AC_DEFINE_UNQUOTED([MODPROBE_CMD], ["$MODPROBE_CMD"], [The path to 'modprobe', if available.]) ]) SYSCONFDIR="$(eval echo $(eval echo $sysconfdir))" SBINDIR="$(eval echo $(eval echo $sbindir))" LVM_PATH="$SBINDIR/lvm" AC_DEFINE_UNQUOTED(LVM_PATH, ["$LVM_PATH"], [Path to lvm binary.]) LVMCONFIG_PATH="$SBINDIR/lvmconfig" AC_DEFINE_UNQUOTED(LVMCONFIG_PATH, ["$LVMCONFIG_PATH"], [Path to lvmconfig binary.]) USRSBINDIR="$(eval echo $(eval echo $usrsbindir))" FSADM_PATH="$SBINDIR/fsadm" AC_DEFINE_UNQUOTED(FSADM_PATH, ["$FSADM_PATH"], [Path to fsadm binary.]) LVMIMPORTVDO_PATH="$SBINDIR/lvm_import_vdo" AC_DEFINE_UNQUOTED(LVMIMPORTVDO_PATH, ["$LVMIMPORTVDO_PATH"], [Path to lvm_import_vdo script.]) LIBEXECDIR="$(eval echo $(eval echo $libexecdir))" LVRESIZE_FS_HELPER_PATH="$LIBEXECDIR/lvresize_fs_helper" AC_DEFINE_UNQUOTED(LVRESIZE_FS_HELPER_PATH, ["$LVRESIZE_FS_HELPER_PATH"], [Path to lvresize_fs_helper script.]) ################################################################################ dnl -- dmeventd pidfile and executable path AC_ARG_WITH(dmeventd-pidfile, AS_HELP_STRING([--with-dmeventd-pidfile=PATH], [dmeventd pidfile [PID_DIR/dmeventd.pid]]), DMEVENTD_PIDFILE=$withval, DMEVENTD_PIDFILE="$DEFAULT_PID_DIR/dmeventd.pid") AC_ARG_WITH(dmeventd-path, AS_HELP_STRING([--with-dmeventd-path=PATH], [dmeventd path [EPREFIX/sbin/dmeventd]]), DMEVENTD_PATH=$withval, DMEVENTD_PATH="$SBINDIR/dmeventd") AS_IF([test "$BUILD_DMEVENTD" = "yes"], [ AC_DEFINE_UNQUOTED(DMEVENTD_PIDFILE, ["$DMEVENTD_PIDFILE"], [Path to dmeventd pidfile.]) AC_DEFINE_UNQUOTED(DMEVENTD_PATH, ["$DMEVENTD_PATH"], [Path to dmeventd binary.]) ]) ################################################################################ dnl -- various defaults dnl -- FIXME: need to switch to regular option here --sysconfdir AC_ARG_WITH(default-system-dir, AS_HELP_STRING([--with-default-system-dir=DIR], [default LVM system directory [/etc/lvm]]), DEFAULT_SYS_DIR=$withval, DEFAULT_SYS_DIR="/etc/lvm") AC_DEFINE_UNQUOTED(DEFAULT_SYS_DIR, ["$DEFAULT_SYS_DIR"], [Path to LVM system directory.]) AC_ARG_WITH(default-profile-subdir, AS_HELP_STRING([--with-default-profile-subdir=SUBDIR], [default configuration profile subdir [profile]]), DEFAULT_PROFILE_SUBDIR=$withval, DEFAULT_PROFILE_SUBDIR="profile") AC_DEFINE_UNQUOTED(DEFAULT_PROFILE_SUBDIR, ["$DEFAULT_PROFILE_SUBDIR"], [Name of default configuration profile subdirectory.]) AC_ARG_WITH(default-archive-subdir, AS_HELP_STRING([--with-default-archive-subdir=SUBDIR], [default metadata archive subdir [archive]]), DEFAULT_ARCHIVE_SUBDIR=$withval, DEFAULT_ARCHIVE_SUBDIR="archive") AC_DEFINE_UNQUOTED(DEFAULT_ARCHIVE_SUBDIR, ["$DEFAULT_ARCHIVE_SUBDIR"], [Name of default metadata archive subdirectory.]) AC_ARG_WITH(default-backup-subdir, AS_HELP_STRING([--with-default-backup-subdir=SUBDIR], [default metadata backup subdir [backup]]), DEFAULT_BACKUP_SUBDIR=$withval, DEFAULT_BACKUP_SUBDIR="backup") AC_DEFINE_UNQUOTED(DEFAULT_BACKUP_SUBDIR, ["$DEFAULT_BACKUP_SUBDIR"], [Name of default metadata backup subdirectory.]) AC_ARG_WITH(default-cache-subdir, AS_HELP_STRING([--with-default-cache-subdir=SUBDIR], [default metadata cache subdir [cache]]), DEFAULT_CACHE_SUBDIR=$withval, DEFAULT_CACHE_SUBDIR="cache") AC_DEFINE_UNQUOTED(DEFAULT_CACHE_SUBDIR, ["$DEFAULT_CACHE_SUBDIR"], [Name of default metadata cache subdirectory.]) # Select default system locking dir, prefer /run/lock over /var/lock DEFAULT_SYS_LOCK_DIR="$RUN_DIR/lock" test -d "$DEFAULT_SYS_LOCK_DIR" || DEFAULT_SYS_LOCK_DIR="/var/lock" # Support configurable locking subdir for lvm AC_MSG_CHECKING([for default lock directory]) AC_ARG_WITH(default-locking-dir, AS_HELP_STRING([--with-default-locking-dir=DIR], [default locking directory [autodetect_lock_dir/lvm]]), [DEFAULT_LOCK_DIR=$withval], [DEFAULT_LOCK_DIR="$DEFAULT_SYS_LOCK_DIR/lvm"]) AC_MSG_RESULT([$DEFAULT_LOCK_DIR]) AC_DEFINE_UNQUOTED(DEFAULT_LOCK_DIR, ["$DEFAULT_LOCK_DIR"], [Name of default locking directory.]) ################################################################################ dnl -- which kernel interface to use (ioctl only) AC_MSG_CHECKING([for kernel interface choice]) AC_ARG_WITH(interface, AS_HELP_STRING([--with-interface=IFACE], [choose kernel interface (ioctl) [ioctl]]), interface=$withval, interface="ioctl") AS_IF([test "$interface" != "ioctl"], [AC_MSG_ERROR([--with-interface=ioctl required. fs no longer supported.])]) AC_MSG_RESULT([$interface]) ################################################################################ read DM_LIB_VERSION < "$srcdir"/VERSION_DM 2>/dev/null || DM_LIB_VERSION="Unknown" AC_DEFINE_UNQUOTED(DM_LIB_VERSION, "$DM_LIB_VERSION", [Library version]) DM_LIB_PATCHLEVEL=$($AWK -F '[[-. ]]' '{printf "%s.%s.%s",$1,$2,$3}' "$srcdir"/VERSION_DM) read VER < "$srcdir"/VERSION 2>/dev/null || VER=Unknown LVM_VERSION=\"$VER\" LVM_RELEASE_DATE="\"$(echo $VER | $SED 's/.* (//;s/).*//')\"" VER=$(echo "$VER" | $AWK '{print $1}') LVM_RELEASE="\"$(echo "$VER" | $AWK -F '-' '{print $2}')\"" VER=$(echo "$VER" | $AWK -F '-' '{print $1}') LVM_MAJOR=$(echo "$VER" | $AWK -F '.' '{print $1}') LVM_MINOR=$(echo "$VER" | $AWK -F '.' '{print $2}') LVM_PATCHLEVEL=$(echo "$VER" | $AWK -F '[[(.]]' '{print $3}') LVM_LIBAPI=$(echo "$VER" | $AWK -F '[[()]]' '{print $2}') AC_DEFINE_UNQUOTED(LVM_CONFIGURE_LINE, "$CONFIGURE_LINE", [configure command line used]) ################################################################################ # Allow users to override default location for libaio # there seems to be no pkg-config support available AIO_CFLAGS=${AIO_CFLAGS:-} AIO_LIBS=${AIO_LIBS:--laio} AC_ARG_VAR([AIO_CFLAGS], [C compiler flags for AIO]) AC_ARG_VAR([AIO_LIBS], [linker flags for AIO]) AC_ARG_VAR([READLINE_CFLAGS], [C compiler flags for readline]) AC_ARG_VAR([READLINE_LIBS], [linker flags for readline]) ################################################################################ AC_SUBST(AWK) AC_SUBST(BLKDEACTIVATE) AC_SUBST(BLKID_PC) AC_SUBST(BLKID_STATIC_LIBS) AC_SUBST(BUILD_CMIRRORD) AC_SUBST(BUILD_DMEVENTD) AC_SUBST(BUILD_DMFILEMAPD) AC_SUBST(BUILD_LOCKDDLM) AC_SUBST(BUILD_LOCKDDLM_CONTROL) AC_SUBST(BUILD_LOCKDIDM) AC_SUBST(BUILD_LOCKDSANLOCK) AC_SUBST(BUILD_LVMDBUSD) AC_SUBST(BUILD_LVMLOCKD) AC_SUBST(BUILD_LVMPOLLD) AC_SUBST(CACHE) AC_SUBST(CACHE_CHECK_CMD) AC_SUBST(CACHE_DUMP_CMD) AC_SUBST(CACHE_REPAIR_CMD) AC_SUBST(CACHE_RESTORE_CMD) AC_SUBST(CFLAGS) AC_SUBST(CFLOW_CMD) AC_SUBST(CHMOD) AC_SUBST(CLDFLAGS) AC_SUBST(CLDNOWHOLEARCHIVE) AC_SUBST(CLDWHOLEARCHIVE) AC_SUBST(CMDLIB) AC_SUBST(CMIRRORD_PIDFILE) AC_SUBST(CONFDIR) AC_SUBST(COPTIMISE_FLAG) AC_SUBST(CPPFLAGS) AC_SUBST(CSCOPE_CMD) AC_SUBST(DEBUG) AC_SUBST(DEFAULT_ARCHIVE_SUBDIR) AC_SUBST(DEFAULT_BACKUP_SUBDIR) AC_SUBST(DEFAULT_CACHE_SUBDIR) AC_SUBST(DEFAULT_DM_RUN_DIR) AC_SUBST(DEFAULT_LOCK_DIR) AC_SUBST(DEFAULT_MIRROR_SEGTYPE) AC_SUBST(DEFAULT_PID_DIR) AC_SUBST(DEFAULT_PROFILE_SUBDIR) AC_SUBST(DEFAULT_RAID10_SEGTYPE) AC_SUBST(DEFAULT_RUN_DIR) AC_SUBST(DEFAULT_SPARSE_SEGTYPE) AC_SUBST(DEFAULT_SYS_DIR) AC_SUBST(DEFAULT_SYS_LOCK_DIR) AC_SUBST(DEFAULT_USE_BLKID_WIPING) AC_SUBST(DEFAULT_USE_DEVICES_FILE) AC_SUBST(DEFAULT_USE_LVMLOCKD) AC_SUBST(DEFAULT_USE_LVMPOLLD) AC_SUBST(DEVMAPPER) AC_SUBST(DL_LIBS) AC_SUBST(DMEVENTD_PATH) AC_SUBST(DMEVENTD_PIDFILE) AC_SUBST(DM_LIB_PATCHLEVEL) AC_SUBST(ELDFLAGS) AC_SUBST(FSADM) AC_SUBST(FSADM_PATH) AC_SUBST(INTEGRITY) AC_SUBST(INTL) AC_SUBST(JOBS) AC_SUBST(LDDEPS) AC_SUBST(LIBS) AC_SUBST(LIB_SUFFIX) AC_SUBST(localedir) AC_SUBST(LVMIMPORTVDO) AC_SUBST(LVMIMPORTVDO_PATH) AC_SUBST(LVMLOCKD_PIDFILE) AC_SUBST(LVMPOLLD_PIDFILE) AC_SUBST(LVM_LIBAPI) AC_SUBST(LVM_MAJOR) AC_SUBST(LVM_MINOR) AC_SUBST(LVM_PATCHLEVEL) AC_SUBST(LVM_PATH) AC_SUBST(LVM_RELEASE) AC_SUBST(LVM_RELEASE_DATE) AC_SUBST(LVM_VERSION) AC_SUBST(LVRESIZE_FS_HELPER_PATH) AC_SUBST(MANGLING) AC_SUBST(MIRRORS) AC_SUBST(MSGFMT) AC_SUBST(M_LIBS) AC_SUBST(OCF) AC_SUBST(OCFDIR) AC_SUBST(ODIRECT) AC_SUBST(PKGCONFIG) AC_SUBST(PTHREAD_LIBS) AC_SUBST(PYTHON2) AC_SUBST(PYTHON2DIR) AC_SUBST(PYTHON3) AC_SUBST(PYTHON3DIR) AC_SUBST(RT_LIBS) AC_SUBST(SBINDIR) AC_SUBST(SELINUX_LIBS) AC_SUBST(SELINUX_PC) AC_SUBST(SELINUX_STATIC_LIBS) AC_SUBST(SILENT_RULES) AC_SUBST(SNAPSHOTS) AC_SUBST(STATICDIR) AC_SUBST(STATIC_LDFLAGS) AC_SUBST(STATIC_LINK) AC_SUBST(SYSCONFDIR) AC_SUBST(SYSTEMD_RUN_CMD) AC_SUBST(TESTSUITE_DATA) AC_SUBST(THIN) AC_SUBST(THIN_CHECK_CMD) AC_SUBST(THIN_DUMP_CMD) AC_SUBST(THIN_REPAIR_CMD) AC_SUBST(THIN_RESTORE_CMD) AC_SUBST(UDEV_HAS_BUILTIN_BLKID) AC_SUBST(UDEV_PC) AC_SUBST(UDEV_RULES) AC_SUBST(UDEV_RULE_EXEC_DETECTION) AC_SUBST(UDEV_STATIC_LIBS) AC_SUBST(UDEV_SYNC) AC_SUBST(USE_TRACKING) 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(WRITECACHE) AC_SUBST(WRITE_INSTALL) AC_SUBST(interface) AC_SUBST(kerneldir) AC_SUBST(kernelvsn) AC_SUBST(libexecdir) AC_SUBST(missingkernel) AC_SUBST(systemdsystemunitdir) AC_SUBST(systemdutildir) AC_SUBST(tmpdir) AC_SUBST(tmpfilesdir) AC_SUBST(udevdir) AC_SUBST(udev_prefix) AC_SUBST(usrlibdir) AC_SUBST(usrsbindir) ################################################################################ dnl -- First and last lines should not contain files to generate in order to dnl -- keep utility scripts running properly AC_CONFIG_FILES([ Makefile make.tmpl libdm/make.tmpl daemons/Makefile daemons/cmirrord/Makefile daemons/dmeventd/Makefile daemons/dmeventd/libdevmapper-event.pc daemons/dmeventd/plugins/Makefile daemons/dmeventd/plugins/lvm2/Makefile daemons/dmeventd/plugins/raid/Makefile daemons/dmeventd/plugins/mirror/Makefile daemons/dmeventd/plugins/snapshot/Makefile daemons/dmeventd/plugins/thin/Makefile daemons/dmeventd/plugins/vdo/Makefile daemons/lvmdbusd/Makefile daemons/lvmdbusd/lvmdbusd daemons/lvmdbusd/lvmdb.py daemons/lvmdbusd/lvm_shell_proxy.py daemons/lvmdbusd/path.py daemons/lvmpolld/Makefile daemons/lvmlockd/Makefile conf/Makefile conf/example.conf conf/lvmlocal.conf conf/command_profile_template.profile conf/metadata_profile_template.profile include/Makefile lib/Makefile include/lvm-version.h libdaemon/Makefile libdaemon/client/Makefile libdaemon/server/Makefile libdm/Makefile libdm/dm-tools/Makefile libdm/libdevmapper.pc man/Makefile po/Makefile scripts/lvm2-pvscan.service scripts/blkdeactivate.sh scripts/blk_availability_init_red_hat scripts/blk_availability_systemd_red_hat.service scripts/cmirrord_init_red_hat scripts/com.redhat.lvmdbus1.service scripts/dm_event_systemd_red_hat.service scripts/dm_event_systemd_red_hat.socket scripts/lvm2_cmirrord_systemd_red_hat.service scripts/lvm2_lvmdbusd_systemd_red_hat.service scripts/lvm2_lvmpolld_init_red_hat scripts/lvm2_lvmpolld_systemd_red_hat.service scripts/lvm2_lvmpolld_systemd_red_hat.socket scripts/lvmlockd.service scripts/lvmlocks.service scripts/lvm2_monitoring_init_red_hat scripts/lvm2_monitoring_systemd_red_hat.service scripts/lvm2_tmpfiles_red_hat.conf scripts/lvmdump.sh scripts/Makefile test/Makefile tools/Makefile udev/Makefile ]) AC_OUTPUT AS_IF([test -n "$THIN_CONFIGURE_WARN"], [AC_MSG_WARN([Support for thin provisioning is limited since some thin provisioning tools are missing!])]) AS_IF([test -n "$THIN_CHECK_VERSION_WARN"], [AC_MSG_WARN([You should also install latest thin_check vsn 0.7.0 (or later) for lvm2 thin provisioning])]) AS_IF([test -n "$CACHE_CONFIGURE_WARN"], [AC_MSG_WARN([Support for cache is limited since some cache tools are missing!])]) 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 -n "$LVM_NEEDS_LIBAIO_WARN"], [AC_MSG_WARN([Only libdm part can be build without libaio: make [[install_]]device-mapper])]) AS_IF([test "$ODIRECT" != "yes"], [AC_MSG_WARN([O_DIRECT disabled: low-memory pvmove may lock up])])