mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
702180b30c
This should be the preferred way of configuring lvm2 for udev/systemd since otherwise one can end up with the processes run from udev (the pvscan we run for lvmetad update on events) to be killed prematurely and this can end up with LVM volumes not activated in the end.
1849 lines
61 KiB
Plaintext
1849 lines
61 KiB
Plaintext
###############################################################################
|
|
## Copyright (C) 2000-2004 Sistina Software, Inc. All rights reserved.
|
|
## Copyright (C) 2004-2013 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
################################################################################
|
|
|
|
AC_PREREQ(2.61)
|
|
################################################################################
|
|
dnl -- Process this file with autoconf to produce a configure script.
|
|
AC_INIT
|
|
AC_CONFIG_SRCDIR([lib/device/dev-cache.h])
|
|
AC_CONFIG_HEADERS([lib/misc/configure.h])
|
|
|
|
################################################################################
|
|
dnl -- Setup the directory where autoconf has auxilary files
|
|
AC_CONFIG_AUX_DIR(autoconf)
|
|
|
|
################################################################################
|
|
dnl -- Get system type
|
|
AC_CANONICAL_TARGET([])
|
|
|
|
case "$host_os" in
|
|
linux*)
|
|
CFLAGS="$CFLAGS"
|
|
COPTIMISE_FLAG="-O2"
|
|
CLDFLAGS="$CLDFLAGS -Wl,--version-script,.export.sym"
|
|
ELDFLAGS="-Wl,--export-dynamic"
|
|
# FIXME Generate list and use --dynamic-list=.dlopen.sym
|
|
CLDWHOLEARCHIVE="-Wl,-whole-archive"
|
|
CLDNOWHOLEARCHIVE="-Wl,-no-whole-archive"
|
|
LDDEPS="$LDDEPS .export.sym"
|
|
LIB_SUFFIX=so
|
|
DEVMAPPER=yes
|
|
LVMETAD=no
|
|
ODIRECT=yes
|
|
DM_IOCTLS=yes
|
|
SELINUX=yes
|
|
CLUSTER=internal
|
|
FSADM=yes
|
|
BLKDEACTIVATE=yes
|
|
;;
|
|
darwin*)
|
|
CFLAGS="$CFLAGS -no-cpp-precomp -fno-common"
|
|
COPTIMISE_FLAG="-O2"
|
|
CLDFLAGS="$CLDFLAGS"
|
|
ELDFLAGS=
|
|
CLDWHOLEARCHIVE="-all_load"
|
|
CLDNOWHOLEARCHIVE=
|
|
LIB_SUFFIX=dylib
|
|
DEVMAPPER=yes
|
|
ODIRECT=no
|
|
DM_IOCTLS=no
|
|
SELINUX=no
|
|
CLUSTER=none
|
|
FSADM=no
|
|
BLKDEACTIVATE=no
|
|
;;
|
|
esac
|
|
|
|
################################################################################
|
|
dnl -- Checks for programs.
|
|
AC_PROG_SED
|
|
AC_PROG_AWK
|
|
AC_PROG_CC
|
|
|
|
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_PATH_PROG(CFLOW_CMD, cflow)
|
|
AC_PATH_PROG(CSCOPE_CMD, cscope)
|
|
|
|
################################################################################
|
|
dnl -- Check for header files.
|
|
AC_HEADER_DIRENT
|
|
AC_HEADER_MAJOR
|
|
AC_HEADER_STDC
|
|
AC_HEADER_SYS_WAIT
|
|
AC_HEADER_TIME
|
|
|
|
AC_CHECK_HEADERS([locale.h stddef.h syslog.h sys/file.h sys/time.h assert.h \
|
|
langinfo.h libgen.h signal.h sys/mman.h sys/resource.h sys/utsname.h \
|
|
sys/wait.h time.h], ,
|
|
[AC_MSG_ERROR(bailing out)])
|
|
|
|
case "$host_os" in
|
|
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)) ;;
|
|
esac
|
|
|
|
AC_CHECK_HEADERS([ctype.h dirent.h errno.h fcntl.h getopt.h inttypes.h limits.h \
|
|
stdarg.h stdio.h stdlib.h string.h sys/ioctl.h sys/param.h sys/stat.h \
|
|
sys/types.h unistd.h], , [AC_MSG_ERROR(bailing out)])
|
|
AC_CHECK_HEADERS(termios.h sys/statvfs.h)
|
|
|
|
################################################################################
|
|
dnl -- Check for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_CHECK_MEMBERS([struct stat.st_rdev])
|
|
AC_TYPE_OFF_T
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_SIGNAL
|
|
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
|
|
AC_CHECK_MEMBERS([struct stat.st_rdev])
|
|
AC_STRUCT_TM
|
|
|
|
################################################################################
|
|
dnl -- Check for functions
|
|
AC_CHECK_FUNCS([ftruncate gethostname getpagesize \
|
|
gettimeofday memset mkdir mkfifo rmdir munmap nl_langinfo setenv setlocale \
|
|
strcasecmp strchr strcspn strspn strdup strncasecmp strerror strrchr \
|
|
strstr strtol strtoul uname], , [AC_MSG_ERROR(bailing out)])
|
|
AC_CHECK_FUNCS(siginterrupt)
|
|
AC_FUNC_ALLOCA
|
|
AC_FUNC_CLOSEDIR_VOID
|
|
AC_FUNC_CHOWN
|
|
AC_FUNC_FORK
|
|
AC_FUNC_LSTAT
|
|
AC_FUNC_MALLOC
|
|
AC_FUNC_MEMCMP
|
|
AC_FUNC_MMAP
|
|
AC_FUNC_REALLOC
|
|
AC_FUNC_STAT
|
|
AC_FUNC_STRTOD
|
|
AC_FUNC_VPRINTF
|
|
|
|
################################################################################
|
|
dnl -- Enables statically-linked tools
|
|
AC_MSG_CHECKING(whether to use static linking)
|
|
AC_ARG_ENABLE(static_link,
|
|
AC_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 -- Setup the ownership of the files
|
|
AC_MSG_CHECKING(file owner)
|
|
AC_ARG_WITH(user,
|
|
AC_HELP_STRING([--with-user=USER],
|
|
[set the owner of installed files [[USER=]]]),
|
|
OWNER=$withval)
|
|
AC_MSG_RESULT($OWNER)
|
|
|
|
if test x$OWNER != x; then
|
|
INSTALL="$INSTALL -o $OWNER"
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Setup the group ownership of the files
|
|
AC_MSG_CHECKING(group owner)
|
|
AC_ARG_WITH(group,
|
|
AC_HELP_STRING([--with-group=GROUP],
|
|
[set the group owner of installed files [[GROUP=]]]),
|
|
GROUP=$withval)
|
|
AC_MSG_RESULT($GROUP)
|
|
|
|
if test x$GROUP != x; then
|
|
INSTALL="$INSTALL -g $GROUP"
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Setup device node ownership
|
|
AC_MSG_CHECKING(device node uid)
|
|
|
|
AC_ARG_WITH(device-uid,
|
|
AC_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)
|
|
|
|
################################################################################
|
|
dnl -- Setup device group ownership
|
|
AC_MSG_CHECKING(device node gid)
|
|
|
|
AC_ARG_WITH(device-gid,
|
|
AC_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)
|
|
|
|
################################################################################
|
|
dnl -- Setup device mode
|
|
AC_MSG_CHECKING(device node mode)
|
|
|
|
AC_ARG_WITH(device-mode,
|
|
AC_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_MSG_CHECKING(when to create device nodes)
|
|
AC_ARG_WITH(device-nodes-on,
|
|
AC_HELP_STRING([--with-device-nodes-on=ON],
|
|
[create nodes on resume or create [[ON=resume]]]),
|
|
ADD_NODE=$withval, ADD_NODE=resume)
|
|
case "$ADD_NODE" in
|
|
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]);;
|
|
esac
|
|
AC_MSG_RESULT(on $ADD_NODE)
|
|
AC_DEFINE_UNQUOTED([DEFAULT_DM_ADD_NODE], $add_on, [Define default node creation behavior with dmsetup create])
|
|
|
|
AC_MSG_CHECKING(default name mangling)
|
|
AC_ARG_WITH(default-name-mangling,
|
|
AC_HELP_STRING([--with-default-name-mangling=MANGLING],
|
|
[default name mangling: auto/none/hex [[MANGLING=auto]]]),
|
|
MANGLING=$withval, MANGLING=auto)
|
|
case "$MANGLING" in
|
|
auto) mangling=DM_STRING_MANGLING_AUTO;;
|
|
disabled) mangling=DM_STRING_MANGLING_NONE;;
|
|
hex) mangling=DM_STRING_MANGLING_HEX;;
|
|
*) AC_MSG_ERROR([--with-default-name-mangling parameter invalid]);;
|
|
esac
|
|
AC_MSG_RESULT($MANGLING)
|
|
AC_DEFINE_UNQUOTED([DEFAULT_DM_NAME_MANGLING], $mangling, [Define default name mangling behaviour])
|
|
|
|
################################################################################
|
|
dnl -- LVM1 tool fallback option
|
|
AC_MSG_CHECKING(whether to enable lvm1 fallback)
|
|
AC_ARG_ENABLE(lvm1_fallback,
|
|
AC_HELP_STRING([--enable-lvm1_fallback],
|
|
[use this to fall back and use LVM1 binaries if
|
|
device-mapper is missing from the kernel]),
|
|
LVM1_FALLBACK=$enableval, LVM1_FALLBACK=no)
|
|
AC_MSG_RESULT($LVM1_FALLBACK)
|
|
|
|
if test x$LVM1_FALLBACK = xyes; then
|
|
AC_DEFINE([LVM1_FALLBACK], 1, [Define to 1 if 'lvm' should fall back to using LVM1 binaries if device-mapper is missing from the kernel])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- format1 inclusion type
|
|
AC_MSG_CHECKING(whether to include support for lvm1 metadata)
|
|
AC_ARG_WITH(lvm1,
|
|
AC_HELP_STRING([--with-lvm1=TYPE],
|
|
[LVM1 metadata support: internal/shared/none
|
|
[[TYPE=internal]]]),
|
|
LVM1=$withval, LVM1=internal)
|
|
AC_MSG_RESULT($LVM1)
|
|
|
|
if [[ "x$LVM1" != xnone -a "x$LVM1" != xinternal -a "x$LVM1" != xshared ]];
|
|
then AC_MSG_ERROR(
|
|
--with-lvm1 parameter invalid
|
|
)
|
|
fi;
|
|
|
|
if test x$LVM1 = xinternal; then
|
|
AC_DEFINE([LVM1_INTERNAL], 1, [Define to 1 to include built-in support for LVM1 metadata.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- format_pool inclusion type
|
|
AC_MSG_CHECKING(whether to include support for GFS pool metadata)
|
|
AC_ARG_WITH(pool,
|
|
AC_HELP_STRING([--with-pool=TYPE],
|
|
[GFS pool read-only support: internal/shared/none
|
|
[[TYPE=internal]]]),
|
|
POOL=$withval, POOL=internal)
|
|
AC_MSG_RESULT($POOL)
|
|
|
|
if [[ "x$POOL" != xnone -a "x$POOL" != xinternal -a "x$POOL" != xshared ]];
|
|
then AC_MSG_ERROR(
|
|
--with-pool parameter invalid
|
|
)
|
|
fi;
|
|
|
|
if test x$POOL = xinternal; then
|
|
AC_DEFINE([POOL_INTERNAL], 1, [Define to 1 to include built-in support for GFS pool metadata.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- cluster_locking inclusion type
|
|
AC_MSG_CHECKING(whether to include support for cluster locking)
|
|
AC_ARG_WITH(cluster,
|
|
AC_HELP_STRING([--with-cluster=TYPE],
|
|
[cluster LVM locking support: internal/shared/none
|
|
[[TYPE=internal]]]),
|
|
CLUSTER=$withval)
|
|
AC_MSG_RESULT($CLUSTER)
|
|
|
|
if [[ "x$CLUSTER" != xnone -a "x$CLUSTER" != xinternal -a "x$CLUSTER" != xshared ]];
|
|
then AC_MSG_ERROR(
|
|
--with-cluster parameter invalid
|
|
)
|
|
fi;
|
|
|
|
if test x$CLUSTER = xinternal; then
|
|
AC_DEFINE([CLUSTER_LOCKING_INTERNAL], 1, [Define to 1 to include built-in support for clustered LVM locking.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- snapshots inclusion type
|
|
AC_MSG_CHECKING(whether to include snapshots)
|
|
AC_ARG_WITH(snapshots,
|
|
AC_HELP_STRING([--with-snapshots=TYPE],
|
|
[snapshot support: internal/shared/none
|
|
[[TYPE=internal]]]),
|
|
SNAPSHOTS=$withval, SNAPSHOTS=internal)
|
|
AC_MSG_RESULT($SNAPSHOTS)
|
|
|
|
if [[ "x$SNAPSHOTS" != xnone -a "x$SNAPSHOTS" != xinternal -a "x$SNAPSHOTS" != xshared ]];
|
|
then AC_MSG_ERROR(
|
|
--with-snapshots parameter invalid
|
|
)
|
|
fi;
|
|
|
|
if test x$SNAPSHOTS = xinternal; then
|
|
AC_DEFINE([SNAPSHOT_INTERNAL], 1, [Define to 1 to include built-in support for snapshots.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- mirrors inclusion type
|
|
AC_MSG_CHECKING(whether to include mirrors)
|
|
AC_ARG_WITH(mirrors,
|
|
AC_HELP_STRING([--with-mirrors=TYPE],
|
|
[mirror support: internal/shared/none
|
|
[[TYPE=internal]]]),
|
|
MIRRORS=$withval, MIRRORS=internal)
|
|
AC_MSG_RESULT($MIRRORS)
|
|
|
|
if [[ "x$MIRRORS" != xnone -a "x$MIRRORS" != xinternal -a "x$MIRRORS" != xshared ]];
|
|
then AC_MSG_ERROR(
|
|
--with-mirrors parameter invalid
|
|
)
|
|
fi;
|
|
|
|
if test x$MIRRORS = xinternal; then
|
|
AC_DEFINE([MIRRORED_INTERNAL], 1, [Define to 1 to include built-in support for mirrors.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- raid inclusion type
|
|
AC_MSG_CHECKING(whether to include raid)
|
|
AC_ARG_WITH(raid,
|
|
AC_HELP_STRING([--with-raid=TYPE],
|
|
[raid support: internal/shared/none
|
|
[[TYPE=internal]]]),
|
|
RAID=$withval, RAID=internal)
|
|
AC_MSG_RESULT($RAID)
|
|
|
|
if [[ "x$RAID" != xnone -a "x$RAID" != xinternal -a "x$RAID" != xshared ]];
|
|
then AC_MSG_ERROR(
|
|
--with-raid parameter invalid
|
|
)
|
|
fi;
|
|
|
|
if test x$RAID = xinternal; then
|
|
AC_DEFINE([RAID_INTERNAL], 1, [Define to 1 to include built-in support for raid.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- asynchronous volume replicator inclusion type
|
|
AC_MSG_CHECKING(whether to include replicators)
|
|
AC_ARG_WITH(replicators,
|
|
AC_HELP_STRING([--with-replicators=TYPE],
|
|
[replicator support: internal/shared/none
|
|
[[TYPE=none]]]),
|
|
REPLICATORS=$withval, REPLICATORS=none)
|
|
AC_MSG_RESULT($REPLICATORS)
|
|
|
|
case "$REPLICATORS" in
|
|
none|shared) ;;
|
|
internal) AC_DEFINE([REPLICATOR_INTERNAL], 1,
|
|
[Define to 1 to include built-in support for replicators.]) ;;
|
|
*) AC_MSG_ERROR([--with-replicators parameter invalid ($REPLICATORS)]) ;;
|
|
esac
|
|
|
|
################################################################################
|
|
dnl -- thin provisioning
|
|
AC_MSG_CHECKING(whether to include thin provisioning)
|
|
AC_ARG_WITH(thin,
|
|
AC_HELP_STRING([--with-thin=TYPE],
|
|
[thin provisioning support: internal/shared/none
|
|
[[TYPE=internal]]]),
|
|
THIN=$withval, THIN=internal)
|
|
AC_ARG_WITH(thin-check,
|
|
AC_HELP_STRING([--with-thin-check=PATH],
|
|
[thin_check tool: [[autodetect]]]),
|
|
THIN_CHECK_CMD=$withval, THIN_CHECK_CMD="autodetect")
|
|
AC_ARG_WITH(thin-dump,
|
|
AC_HELP_STRING([--with-thin-dump=PATH],
|
|
[thin_dump tool: [[autodetect]]]),
|
|
THIN_DUMP_CMD=$withval, THIN_DUMP_CMD="autodetect")
|
|
AC_ARG_WITH(thin-repair,
|
|
AC_HELP_STRING([--with-thin-repair=PATH],
|
|
[thin_repair tool: [[autodetect]]]),
|
|
THIN_REPAIR_CMD=$withval, THIN_REPAIR_CMD="autodetect")
|
|
|
|
AC_MSG_RESULT($THIN)
|
|
|
|
case "$THIN" in
|
|
none|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)]) ;;
|
|
esac
|
|
|
|
dnl -- thin_check needs-check flag
|
|
AC_MSG_CHECKING(whether thin_check supports the needs-check flag)
|
|
AC_ARG_ENABLE(thin_check_needs_check,
|
|
AC_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)
|
|
AC_MSG_RESULT($THIN_CHECK_NEEDS_CHECK)
|
|
|
|
if test x$THIN_CHECK_NEEDS_CHECK = xyes; then
|
|
AC_DEFINE([THIN_CHECK_NEEDS_CHECK], 1, [Define to 1 if the external 'thin_check' tool requires the --clear-needs-check-flag option])
|
|
fi
|
|
|
|
# Test if necessary thin tools are available
|
|
# if not - use plain defaults and warn user
|
|
case "$THIN" in
|
|
internal|shared)
|
|
# Empty means a config way to ignore thin checking
|
|
if test "$THIN_CHECK_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(THIN_CHECK_CMD, thin_check)
|
|
if test -z "$THIN_CHECK_CMD"; then
|
|
AC_MSG_WARN([thin_check not found in path $PATH])
|
|
THIN_CHECK_CMD=/usr/sbin/thin_check
|
|
THIN_CONFIGURE_WARN=y
|
|
else
|
|
if test x$THIN_CHECK_NEEDS_CHECK = xyes; then
|
|
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}'`
|
|
|
|
if test -z "$THIN_CHECK_VSN_MAJOR" -o -z "$THIN_CHECK_VSN_MINOR" ; then
|
|
AC_MSG_WARN(Found thin_check version "$THIN_CHECK_VSN")
|
|
THIN_CHECK_VERSION_WARN=y
|
|
else
|
|
if test "$THIN_CHECK_VSN_MAJOR" -eq 0 -a "$THIN_CHECK_VSN_MINOR" -lt 3 ; then
|
|
AC_MSG_WARN(Found thin_check version "$THIN_CHECK_VSN")
|
|
THIN_CHECK_VERSION_WARN=y
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
# Empty means a config way to ignore thin checking
|
|
if test "$THIN_DUMP_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(THIN_DUMP_CMD, thin_dump)
|
|
test -z "$THIN_DUMP_CMD" && {
|
|
AC_MSG_WARN(thin_dump not found in path $PATH)
|
|
THIN_DUMP_CMD=/usr/sbin/thin_dump
|
|
THIN_CONFIGURE_WARN=y
|
|
}
|
|
fi
|
|
# Empty means a config way to ignore thin checking
|
|
if test "$THIN_REPAIR_CMD" = "autodetect"; then
|
|
AC_PATH_TOOL(THIN_REPAIR_CMD, thin_repair)
|
|
test -z "$THIN_REPAIR_CMD" && {
|
|
AC_MSG_WARN(thin_repair not found in path $PATH)
|
|
THIN_REPAIR_CMD=/usr/sbin/thin_repair
|
|
THIN_CONFIGURE_WARN=y
|
|
}
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
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.])
|
|
|
|
################################################################################
|
|
dnl -- cache inclusion type
|
|
AC_MSG_CHECKING(whether to include cache)
|
|
AC_ARG_WITH(cache,
|
|
AC_HELP_STRING([--with-cache=TYPE],
|
|
[cache support: internal/shared/none
|
|
[[TYPE=none]]]),
|
|
CACHE=$withval, CACHE=none)
|
|
AC_MSG_RESULT($CACHE)
|
|
|
|
if [[ "x$CACHE" != xnone -a "x$CACHE" != xinternal -a "x$CACHE" != xshared ]];
|
|
then AC_MSG_ERROR(
|
|
--with-cache parameter invalid
|
|
)
|
|
fi;
|
|
|
|
if test x$CACHE = xinternal; then
|
|
AC_DEFINE([CACHE_INTERNAL], 1, [Define to 1 to include built-in support for cache.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Disable readline
|
|
AC_MSG_CHECKING(whether to enable readline)
|
|
AC_ARG_ENABLE([readline],
|
|
AC_HELP_STRING([--disable-readline], [disable readline support]),
|
|
READLINE=$enableval, READLINE=maybe)
|
|
AC_MSG_RESULT($READLINE)
|
|
|
|
################################################################################
|
|
dnl -- Disable realtime clock support
|
|
AC_MSG_CHECKING(whether to enable realtime support)
|
|
AC_ARG_ENABLE(realtime,
|
|
AC_HELP_STRING([--enable-realtime], [enable realtime clock support]),
|
|
REALTIME=$enableval)
|
|
AC_MSG_RESULT($REALTIME)
|
|
|
|
################################################################################
|
|
dnl -- disable OCF resource agents
|
|
AC_MSG_CHECKING(whether to enable OCF resource agents)
|
|
AC_ARG_ENABLE(ocf,
|
|
AC_HELP_STRING([--enable-ocf],
|
|
[enable Open Cluster Framework (OCF) compliant resource agents]),
|
|
OCF=$enableval, OCF=no)
|
|
AC_MSG_RESULT($OCF)
|
|
AC_ARG_WITH(ocfdir,
|
|
AC_HELP_STRING([--with-ocfdir=DIR],
|
|
[install OCF files in DIR [[PREFIX/lib/ocf/resource.d/lvm2]]]),
|
|
OCFDIR=$withval, OCFDIR='${prefix}/lib/ocf/resource.d/lvm2')
|
|
|
|
################################################################################
|
|
dnl -- Init pkg-config with dummy invokation:
|
|
dnl -- this is required because PKG_CHECK_MODULES macro is expanded
|
|
dnl -- to initialize the pkg-config environment only at the first invokation,
|
|
dnl -- that would be conditional in this configure.in.
|
|
pkg_config_init() {
|
|
PKG_CHECK_MODULES(PKGCONFIGINIT, pkgconfiginit, [],
|
|
[AC_MSG_RESULT([pkg-config initialized])])
|
|
PKGCONFIG_INIT=1
|
|
}
|
|
|
|
################################################################################
|
|
dnl -- Set up pidfile and run directory
|
|
AH_TEMPLATE(DEFAULT_PID_DIR)
|
|
AC_ARG_WITH(default-pid-dir,
|
|
AC_HELP_STRING([--with-default-pid-dir=PID_DIR],
|
|
[Default directory to keep PID files in. [[/var/run]]]),
|
|
DEFAULT_PID_DIR="$withval", DEFAULT_PID_DIR="/var/run")
|
|
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,
|
|
AC_HELP_STRING([--with-default-dm-run-dir=DM_RUN_DIR],
|
|
[ Default DM run directory. [[/var/run]]]),
|
|
DEFAULT_DM_RUN_DIR="$withval", DEFAULT_DM_RUN_DIR="/var/run")
|
|
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,
|
|
AC_HELP_STRING([--with-default-run-dir=RUN_DIR],
|
|
[Default LVM run directory. [[/var/run/lvm]]]),
|
|
DEFAULT_RUN_DIR="$withval", DEFAULT_RUN_DIR="/var/run/lvm")
|
|
AC_DEFINE_UNQUOTED(DEFAULT_RUN_DIR, ["$DEFAULT_RUN_DIR"],
|
|
[Default LVM run directory.])
|
|
|
|
################################################################################
|
|
dnl -- Build cluster LVM daemon
|
|
AC_MSG_CHECKING(whether to build cluster LVM daemon)
|
|
AC_ARG_WITH(clvmd,
|
|
[ --with-clvmd=TYPE build cluster LVM Daemon
|
|
The following cluster manager combinations are valid:
|
|
* cman (RHEL5 or equivalent)
|
|
* cman,corosync,openais (or selection of them)
|
|
* singlenode (localhost only)
|
|
* all (autodetect)
|
|
* none (disable build)
|
|
[[TYPE=none]]],
|
|
CLVMD=$withval, CLVMD=none)
|
|
if test x$CLVMD = xyes; then
|
|
CLVMD=all
|
|
fi
|
|
AC_MSG_RESULT($CLVMD)
|
|
|
|
dnl -- If clvmd enabled without cluster locking, automagically include it
|
|
if test x$CLVMD != xnone && test x$CLUSTER = xnone; then
|
|
CLUSTER=internal
|
|
fi
|
|
|
|
dnl -- init pkgconfig if required
|
|
if test x$CLVMD != xnone && test x$PKGCONFIG_INIT != x1; then
|
|
pkg_config_init
|
|
fi
|
|
|
|
dnl -- Express clvmd init script Required-Start / Required-Stop
|
|
CLVMD_CMANAGERS=""
|
|
dnl -- On RHEL4/RHEL5, qdiskd is started from a separate init script.
|
|
dnl -- Enable if we are build for cman.
|
|
CLVMD_NEEDS_QDISKD=no
|
|
|
|
dnl -- define build types
|
|
if [[ `expr x"$CLVMD" : '.*gulm.*'` != 0 ]]; then
|
|
AC_MSG_ERROR([Since version 2.02.87 GULM locking is no longer supported.]);
|
|
fi
|
|
if [[ `expr x"$CLVMD" : '.*cman.*'` != 0 ]]; then
|
|
BUILDCMAN=yes
|
|
CLVMD_CMANAGERS="$CLVMD_CMANAGERS cman"
|
|
CLVMD_NEEDS_QDISKD=yes
|
|
fi
|
|
if [[ `expr x"$CLVMD" : '.*corosync.*'` != 0 ]]; then
|
|
BUILDCOROSYNC=yes
|
|
CLVMD_CMANAGERS="$CLVMD_CMANAGERS corosync"
|
|
fi
|
|
if [[ `expr x"$CLVMD" : '.*openais.*'` != 0 ]]; then
|
|
BUILDOPENAIS=yes
|
|
CLVMD_CMANAGERS="$CLVMD_CMANAGERS openais"
|
|
fi
|
|
if test x$CLVMD_NEEDS_QDISKD != xno; then
|
|
CLVMD_CMANAGERS="$CLVMD_CMANAGERS qdiskd"
|
|
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 openais|corosync sanity check above.
|
|
if test x$CLVMD = xall; then
|
|
bailout=soft_bailout
|
|
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
|
|
shift
|
|
lib_no_libs_arg2=$1
|
|
shift
|
|
lib_no_libs_args=$@
|
|
AC_CHECK_LIB([$lib_no_libs_arg1],
|
|
[$lib_no_libs_arg2],,
|
|
[$bailout],
|
|
[$lib_no_libs_args])
|
|
LIBS=$ac_check_lib_save_LIBS
|
|
}
|
|
|
|
dnl -- Look for cman libraries if required.
|
|
if test x$BUILDCMAN = xyes; then
|
|
PKG_CHECK_MODULES(CMAN, libcman, [HAVE_CMAN=yes],
|
|
[NOTFOUND=0
|
|
AC_CHECK_HEADERS(libcman.h,,$bailout)
|
|
check_lib_no_libs cman cman_init
|
|
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
|
|
|
|
dnl -- Look for corosync that's required also for openais build
|
|
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, [HAVE_COROSYNC=yes], $bailout)
|
|
CHECKCONFDB=yes
|
|
CHECKCMAP=yes
|
|
fi
|
|
|
|
dnl -- Look for corosync libraries if required.
|
|
if test x$BUILDCOROSYNC = xyes; then
|
|
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, [HAVE_SALCK=yes], $bailout)
|
|
CHECKCPG=yes
|
|
fi
|
|
|
|
dnl -- Below are checks for libraries common to more than one build.
|
|
|
|
dnl -- Check confdb library.
|
|
dnl -- mandatory for corosync < 2.0 build.
|
|
dnl -- optional for openais/cman build.
|
|
|
|
if test x$CHECKCONFDB = xyes; then
|
|
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_CONFDB != xyes && \
|
|
test x$HAVE_CONFDB_H = xyes; then
|
|
check_lib_no_libs confdb confdb_initialize
|
|
AC_MSG_RESULT([no pkg for confdb, using -lconfdb])
|
|
CONFDB_LIBS="-lconfdb"
|
|
HAVE_CONFDB=yes
|
|
fi
|
|
fi
|
|
|
|
dnl -- Check cmap library
|
|
dnl -- mandatory for corosync >= 2.0 build.
|
|
|
|
if test x$CHECKCMAP = xyes; then
|
|
PKG_CHECK_MODULES(CMAP, libcmap,
|
|
[HAVE_CMAP=yes],
|
|
[HAVE_CMAP=no])
|
|
|
|
AC_CHECK_HEADERS(corosync/cmap.h,
|
|
[HAVE_CMAP_H=yes],
|
|
[HAVE_CMAP_H=no])
|
|
|
|
if test x$HAVE_CMAP != xyes && \
|
|
test x$HAVE_CMAP_H = xyes; then
|
|
check_lib_no_libs cmap cmap_initialize
|
|
AC_MSG_RESULT([no pkg for cmap, using -lcmap])
|
|
CMAP_LIBS="-lcmap"
|
|
HAVE_CMAP=yes
|
|
fi
|
|
fi
|
|
|
|
if test x$BUILDCOROSYNC = xyes; then
|
|
if test x$HAVE_CMAP != xyes && \
|
|
test x$HAVE_CONFDB != xyes && \
|
|
test x$CLVMD != xall; then
|
|
AC_MSG_ERROR([bailing out... cmap (corosync >= 2.0) or confdb (corosync < 2.0) library is required])
|
|
fi
|
|
fi
|
|
|
|
dnl -- Check cpg library.
|
|
if test x$CHECKCPG = xyes; then
|
|
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, [HAVE_DLM=yes],
|
|
[NOTFOUND=0
|
|
AC_CHECK_HEADERS(libdlm.h,,$bailout)
|
|
check_lib_no_libs dlm dlm_lock -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,
|
|
dnl -- together with init script Required-Start/Stop entries.
|
|
if test x$CLVMD = xall; then
|
|
CLVMD=none
|
|
CLVMD_CMANAGERS=""
|
|
CLVMD_NEEDS_QDISKD=no
|
|
if test x$HAVE_CMAN = xyes && \
|
|
test x$HAVE_DLM = xyes; then
|
|
AC_MSG_RESULT([Enabling clvmd cman cluster manager])
|
|
CLVMD="$CLVMD,cman"
|
|
CLVMD_CMANAGERS="$CLVMD_CMANAGERS cman"
|
|
CLVMD_NEEDS_QDISKD=yes
|
|
fi
|
|
if test x$HAVE_COROSYNC = xyes && \
|
|
test x$HAVE_QUORUM = xyes && \
|
|
test x$HAVE_CPG = xyes && \
|
|
test x$HAVE_DLM = xyes; then
|
|
if test x$HAVE_CONFDB = xyes || test x$HAVE_CMAP = xyes; then
|
|
AC_MSG_RESULT([Enabling clvmd corosync cluster manager])
|
|
CLVMD="$CLVMD,corosync"
|
|
CLVMD_CMANAGERS="$CLVMD_CMANAGERS corosync"
|
|
fi
|
|
fi
|
|
if test x$HAVE_COROSYNC = xyes && \
|
|
test x$HAVE_CPG = xyes && \
|
|
test x$HAVE_SALCK = xyes; then
|
|
AC_MSG_RESULT([Enabling clvmd openais cluster manager])
|
|
CLVMD="$CLVMD,openais"
|
|
CLVMD_CMANAGERS="$CLVMD_CMANAGERS openais"
|
|
fi
|
|
if test x$CLVMD_NEEDS_QDISKD != xno; then
|
|
CLVMD_CMANAGERS="$CLVMD_CMANAGERS qdiskd"
|
|
fi
|
|
if test x$CLVMD = xnone; then
|
|
AC_MSG_RESULT([Disabling clvmd build. No cluster manager detected.])
|
|
fi
|
|
fi
|
|
|
|
dnl -- Fixup CLVMD_CMANAGERS with new corosync
|
|
dnl -- clvmd built with corosync >= 2.0 needs dlm (either init or systemd service)
|
|
dnl -- to be started.
|
|
if [[ `expr x"$CLVMD" : '.*corosync.*'` != 0 ]]; then
|
|
if test x$HAVE_CMAP = xyes; then
|
|
CLVMD_CMANAGERS="$CLVMD_CMANAGERS dlm"
|
|
fi
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- clvmd pidfile
|
|
if test "x$CLVMD" != xnone; then
|
|
AC_ARG_WITH(clvmd-pidfile,
|
|
AC_HELP_STRING([--with-clvmd-pidfile=PATH],
|
|
[clvmd pidfile [[PID_DIR/clvmd.pid]]]),
|
|
CLVMD_PIDFILE=$withval,
|
|
CLVMD_PIDFILE="$DEFAULT_PID_DIR/clvmd.pid")
|
|
AC_DEFINE_UNQUOTED(CLVMD_PIDFILE, ["$CLVMD_PIDFILE"],
|
|
[Path to clvmd pidfile.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Build cluster mirror log daemon
|
|
AC_MSG_CHECKING(whether to build cluster mirror log daemon)
|
|
AC_ARG_ENABLE(cmirrord,
|
|
AC_HELP_STRING([--enable-cmirrord],
|
|
[enable the cluster mirror log daemon]),
|
|
CMIRRORD=$enableval, CMIRRORD=no)
|
|
AC_MSG_RESULT($CMIRRORD)
|
|
|
|
BUILD_CMIRRORD=$CMIRRORD
|
|
|
|
################################################################################
|
|
dnl -- cmirrord pidfile
|
|
if test "x$BUILD_CMIRRORD" = xyes; then
|
|
AC_ARG_WITH(cmirrord-pidfile,
|
|
AC_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.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Look for corosync libraries if required.
|
|
if [[ "x$BUILD_CMIRRORD" = xyes ]]; then
|
|
dnl -- init pkgconfig if required
|
|
if test x$PKGCONFIG_INIT != x1; then
|
|
pkg_config_init
|
|
fi
|
|
|
|
AC_DEFINE([CMIRROR_HAS_CHECKPOINT], 1, [Define to 1 to include libSaCkpt.])
|
|
PKG_CHECK_MODULES(SACKPT, libSaCkpt, [HAVE_SACKPT=yes],
|
|
[AC_MSG_RESULT([no libSaCkpt, compiling without it])
|
|
AC_DEFINE([CMIRROR_HAS_CHECKPOINT], 0, [Define to 0 to exclude libSaCkpt.])])
|
|
|
|
if test x$HAVE_CPG != xyes; then
|
|
PKG_CHECK_MODULES(CPG, libcpg)
|
|
fi
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable debugging
|
|
AC_MSG_CHECKING(whether to enable debugging)
|
|
AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [enable debugging]),
|
|
DEBUG=$enableval, DEBUG=no)
|
|
AC_MSG_RESULT($DEBUG)
|
|
|
|
dnl -- Normally turn off optimisation for debug builds
|
|
if test x$DEBUG = xyes; then
|
|
COPTIMISE_FLAG=
|
|
else
|
|
CSCOPE_CMD=
|
|
fi
|
|
|
|
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)
|
|
|
|
################################################################################
|
|
dnl -- Override optimisation
|
|
AC_MSG_CHECKING(for C optimisation flag)
|
|
AC_ARG_WITH(optimisation,
|
|
AC_HELP_STRING([--with-optimisation=OPT],
|
|
[C optimisation flag [[OPT=-O2]]]),
|
|
COPTIMISE_FLAG=$withval)
|
|
AC_MSG_RESULT($COPTIMISE_FLAG)
|
|
|
|
################################################################################
|
|
dnl -- Enable profiling
|
|
AC_MSG_CHECKING(whether to gather gcov profiling data)
|
|
AC_ARG_ENABLE(profiling,
|
|
AC_HELP_STRING(--enable-profiling, [gather gcov profiling data]),
|
|
PROFILING=$enableval, PROFILING=no)
|
|
AC_MSG_RESULT($PROFILING)
|
|
|
|
if test "x$PROFILING" = xyes; then
|
|
COPTIMISE_FLAG="$COPTIMISE_FLAG -fprofile-arcs -ftest-coverage"
|
|
AC_PATH_PROG(LCOV, lcov)
|
|
AC_PATH_PROG(GENHTML, genhtml)
|
|
if test -z "$LCOV" -o -z "$GENHTML"; then
|
|
AC_MSG_ERROR([lcov and genhtml are required for profiling])
|
|
fi
|
|
AC_PATH_PROG(GENPNG, genpng)
|
|
if test -n "$GENPNG"; then
|
|
AC_MSG_CHECKING([whether $GENPNG has all required modules])
|
|
if $GENPNG --help > /dev/null 2>&1 ; then
|
|
AC_MSG_RESULT(ok)
|
|
GENHTML="$GENHTML --frames"
|
|
else
|
|
AC_MSG_RESULT(not supported)
|
|
AC_MSG_WARN([GD.pm perl module is not installed])
|
|
GENPNG=
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable testing
|
|
AC_MSG_CHECKING(whether to enable unit testing)
|
|
AC_ARG_ENABLE(testing,
|
|
AC_HELP_STRING(--enable-testing, [enable testing targets in the makefile]),
|
|
TESTING=$enableval, TESTING=no)
|
|
AC_MSG_RESULT($TESTING)
|
|
|
|
if test "$TESTING" = yes; then
|
|
if test x$PKGCONFIG_INIT != x1; then
|
|
pkg_config_init
|
|
fi
|
|
PKG_CHECK_MODULES(CUNIT, cunit >= 2.0)
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable valgrind awareness of memory pools
|
|
AC_MSG_CHECKING(whether to enable valgrind awareness of pools)
|
|
AC_ARG_ENABLE(valgrind_pool,
|
|
AC_HELP_STRING(--enable-valgrind-pool, [enable valgrind awareness of pools]),
|
|
VALGRIND_POOL=$enableval, VALGRIND_POOL=no)
|
|
AC_MSG_RESULT($VALGRIND_POOL)
|
|
|
|
if test "$VALGRIND_POOL" = yes; then
|
|
PKG_CHECK_MODULES(VALGRIND, valgrind, [], [AC_MSG_ERROR(bailing out)])
|
|
AC_DEFINE([VALGRIND_POOL], 1, [Enable a valgrind aware build of pool])
|
|
AC_SUBST(VALGRIND_POOL)
|
|
AC_SUBST(VALGRIND_CFLAGS)
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Disable devmapper
|
|
AC_MSG_CHECKING(whether to use device-mapper)
|
|
AC_ARG_ENABLE(devmapper,
|
|
AC_HELP_STRING([--disable-devmapper],
|
|
[disable LVM2 device-mapper interaction]),
|
|
DEVMAPPER=$enableval)
|
|
AC_MSG_RESULT($DEVMAPPER)
|
|
|
|
if test x$DEVMAPPER = xyes; then
|
|
AC_DEFINE([DEVMAPPER_SUPPORT], 1, [Define to 1 to enable LVM2 device-mapper interaction.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Build lvmetad
|
|
AC_MSG_CHECKING(whether to build LVMetaD)
|
|
AC_ARG_ENABLE(lvmetad,
|
|
AC_HELP_STRING([--enable-lvmetad],
|
|
[enable the LVM Metadata Daemon]),
|
|
LVMETAD=$enableval)
|
|
AC_MSG_RESULT($LVMETAD)
|
|
|
|
BUILD_LVMETAD=$LVMETAD
|
|
|
|
if test x$BUILD_LVMETAD = xyes; then
|
|
AC_DEFINE([LVMETAD_SUPPORT], 1, [Define to 1 to include code that uses lvmetad.])
|
|
|
|
AC_ARG_WITH(lvmetad-pidfile,
|
|
AC_HELP_STRING([--with-lvmetad-pidfile=PATH],
|
|
[lvmetad pidfile [[PID_DIR/lvmetad.pid]]]),
|
|
LVMETAD_PIDFILE=$withval,
|
|
LVMETAD_PIDFILE="$DEFAULT_PID_DIR/lvmetad.pid")
|
|
AC_DEFINE_UNQUOTED(LVMETAD_PIDFILE, ["$LVMETAD_PIDFILE"],
|
|
[Path to lvmetad pidfile.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable blkid wiping functionality
|
|
AC_MSG_CHECKING(whether to enable libblkid detection of signatures when wiping)
|
|
AC_ARG_ENABLE(blkid_wiping,
|
|
AC_HELP_STRING([--disable-blkid_wiping],
|
|
[disable libblkid detection of signatures when wiping and use native code instead]),
|
|
BLKID_WIPING=$enableval, BLKID_WIPING=maybe)
|
|
AC_MSG_RESULT($BLKID_WIPING)
|
|
|
|
if test x$BLKID_WIPING != xno; then
|
|
dnl -- init pkgconfig if required
|
|
if test x$PKGCONFIG_INIT != x1; then
|
|
pkg_config_init
|
|
fi
|
|
PKG_CHECK_MODULES(BLKID, blkid >= 2.24,
|
|
[if test x$BLKID_WIPING = xmaybe; then
|
|
BLKID_WIPING=yes
|
|
fi],
|
|
[if test x$BLKID_WIPING = xmaybe; then
|
|
BLKID_WIPING=no
|
|
else
|
|
AC_MSG_ERROR([bailing out... blkid library >= 2.24 is required])
|
|
fi
|
|
])
|
|
if test x$BLKID_WIPING = xyes; then
|
|
BLKID_PC="blkid"
|
|
AC_DEFINE([BLKID_WIPING_SUPPORT], 1, [Define to 1 to use libblkid detection of signatures when wiping.])
|
|
fi
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable udev-systemd protocol to instantiate a service for background jobs
|
|
AC_MSG_CHECKING(whether to use udev-systemd protocol for jobs in background)
|
|
AC_ARG_ENABLE(udev-systemd-background-jobs,
|
|
AC_HELP_STRING([--disable-udev-systemd-background-jobs],
|
|
[disable udev-systemd protocol to instantiate a service for background job]),
|
|
UDEV_SYSTEMD_BACKGROUND_JOBS=$enableval, UDEV_SYSTEMD_BACKGROUND_JOBS=yes)
|
|
AC_MSG_RESULT($UDEV_SYSTEMD_BACKGROUND_JOBS)
|
|
|
|
################################################################################
|
|
dnl -- Enable udev synchronisation
|
|
AC_MSG_CHECKING(whether to enable synchronisation with udev processing)
|
|
AC_ARG_ENABLE(udev_sync,
|
|
AC_HELP_STRING([--enable-udev_sync],
|
|
[enable synchronisation with udev processing]),
|
|
UDEV_SYNC=$enableval, UDEV_SYNC=no)
|
|
AC_MSG_RESULT($UDEV_SYNC)
|
|
|
|
if test x$UDEV_SYNC = xyes; then
|
|
dnl -- init pkgconfig if required
|
|
if test x$PKGCONFIG_INIT != x1; then
|
|
pkg_config_init
|
|
fi
|
|
PKG_CHECK_MODULES(UDEV, libudev >= 143, [UDEV_PC="libudev"])
|
|
AC_DEFINE([UDEV_SYNC_SUPPORT], 1, [Define to 1 to enable synchronisation with udev processing.])
|
|
fi
|
|
|
|
dnl -- Enable udev rules
|
|
AC_MSG_CHECKING(whether to enable installation of udev rules required for synchronisation)
|
|
AC_ARG_ENABLE(udev_rules,
|
|
AC_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,
|
|
AC_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
|
|
AC_MSG_CHECKING(whether udev supports built-in blkid)
|
|
test x$PKGCONFIG_INIT != x1 && pkg_config_init
|
|
if $($PKG_CONFIG --atleast-version=176 libudev); then
|
|
UDEV_HAS_BUILTIN_BLKID=yes
|
|
else
|
|
UDEV_HAS_BUILTIN_BLKID=no
|
|
fi
|
|
AC_MSG_RESULT($UDEV_HAS_BUILTIN_BLKID)
|
|
|
|
################################################################################
|
|
dnl -- Compatibility mode
|
|
AC_ARG_ENABLE(compat,
|
|
AC_HELP_STRING([--enable-compat],
|
|
[enable support for old device-mapper versions]),
|
|
DM_COMPAT=$enableval, DM_COMPAT=no)
|
|
|
|
if test x$DM_COMPAT = xyes; then
|
|
AC_MSG_ERROR(
|
|
[--enable-compat is not currently supported.
|
|
Since device-mapper version 1.02.66, only one version (4) of the device-mapper
|
|
ioctl protocol is supported.]
|
|
)
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Compatible units suffix mode
|
|
AC_ARG_ENABLE(units-compat,
|
|
AC_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)
|
|
|
|
if test x$UNITS_COMPAT = xyes; then
|
|
AC_DEFINE([DEFAULT_SI_UNIT_CONSISTENCY], 0, [Define to 0 to reinstate the pre-2.02.54 handling of unit suffixes.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Disable ioctl
|
|
AC_ARG_ENABLE(ioctl,
|
|
AC_HELP_STRING([--disable-driver],
|
|
[disable calls to device-mapper in the kernel]),
|
|
DM_IOCTLS=$enableval)
|
|
|
|
################################################################################
|
|
dnl -- Disable O_DIRECT
|
|
AC_MSG_CHECKING(whether to enable O_DIRECT)
|
|
AC_ARG_ENABLE(o_direct,
|
|
AC_HELP_STRING([--disable-o_direct], [disable O_DIRECT]),
|
|
ODIRECT=$enableval)
|
|
AC_MSG_RESULT($ODIRECT)
|
|
|
|
if test x$ODIRECT = xyes; then
|
|
AC_DEFINE([O_DIRECT_SUPPORT], 1, [Define to 1 to enable O_DIRECT support.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable liblvm2app.so
|
|
AC_MSG_CHECKING(whether to build liblvm2app.so application library)
|
|
AC_ARG_ENABLE(applib,
|
|
AC_HELP_STRING([--enable-applib], [build application library]),
|
|
APPLIB=$enableval, APPLIB=no)
|
|
AC_MSG_RESULT($APPLIB)
|
|
AC_SUBST([LVM2APP_LIB])
|
|
test x$APPLIB = xyes \
|
|
&& LVM2APP_LIB=-llvm2app \
|
|
|| LVM2APP_LIB=
|
|
|
|
################################################################################
|
|
dnl -- Enable cmdlib
|
|
AC_MSG_CHECKING(whether to compile liblvm2cmd.so)
|
|
AC_ARG_ENABLE(cmdlib,
|
|
AC_HELP_STRING([--enable-cmdlib], [build shared command library]),
|
|
CMDLIB=$enableval, CMDLIB=no)
|
|
AC_MSG_RESULT($CMDLIB)
|
|
AC_SUBST([LVM2CMD_LIB])
|
|
test x$CMDLIB = xyes \
|
|
&& LVM2CMD_LIB=-llvm2cmd \
|
|
|| LVM2CMD_LIB=
|
|
|
|
################################################################################
|
|
dnl -- Enable Python liblvm2app bindings
|
|
AC_MSG_CHECKING(whether to build Python wrapper for liblvm2app.so)
|
|
AC_ARG_ENABLE(python_bindings,
|
|
AC_HELP_STRING([--enable-python_bindings], [build Python applib bindings]),
|
|
PYTHON_BINDINGS=$enableval, PYTHON_BINDINGS=no)
|
|
AC_MSG_RESULT($PYTHON_BINDINGS)
|
|
|
|
if test x$PYTHON_BINDINGS = xyes; then
|
|
if test x$APPLIB != xyes; then
|
|
AC_MSG_ERROR(
|
|
--enable-python_bindings requires --enable-applib
|
|
)
|
|
fi
|
|
|
|
AC_PATH_PROG(PYTHON, python, notfound)
|
|
if test x$PYTHON == xnotfound; then
|
|
AC_MSG_ERROR(
|
|
[python is required for --enable-python_bindings but cannot be found]
|
|
)
|
|
fi
|
|
|
|
AC_PATH_PROG(PYTHON_CONFIG, python-config, notfound)
|
|
if test x$PYTHON_CONFIG == xnotfound; then
|
|
AC_MSG_ERROR(
|
|
[python headers are required for --enable-python_bindings but cannot be found]
|
|
)
|
|
fi
|
|
|
|
PYTHON_INCDIRS=`$PYTHON_CONFIG --includes`
|
|
PYTHON_LIBDIRS=`$PYTHON_CONFIG --libs`
|
|
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Enable pkg-config
|
|
AC_ARG_ENABLE(pkgconfig,
|
|
AC_HELP_STRING([--enable-pkgconfig], [install pkgconfig support]),
|
|
PKGCONFIG=$enableval, PKGCONFIG=no)
|
|
|
|
################################################################################
|
|
dnl -- Enable installation of writable files by user
|
|
AC_ARG_ENABLE(write_install,
|
|
AC_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, AC_HELP_STRING([--disable-fsadm], [disable fsadm]),
|
|
FSADM=$enableval)
|
|
AC_MSG_RESULT($FSADM)
|
|
|
|
################################################################################
|
|
dnl -- Enable blkdeactivate
|
|
AC_MSG_CHECKING(whether to install blkdeactivate)
|
|
AC_ARG_ENABLE(blkdeactivate, AC_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, AC_HELP_STRING([--enable-dmeventd],
|
|
[enable the device-mapper event daemon]),
|
|
DMEVENTD=$enableval)
|
|
AC_MSG_RESULT($DMEVENTD)
|
|
|
|
BUILD_DMEVENTD=$DMEVENTD
|
|
|
|
dnl -- dmeventd currently requires internal mirror support
|
|
if test x$DMEVENTD = xyes; then
|
|
if test x$MIRRORS != xinternal; then
|
|
AC_MSG_ERROR(
|
|
--enable-dmeventd currently requires --with-mirrors=internal
|
|
)
|
|
fi
|
|
if test x$CMDLIB = xno; then
|
|
AC_MSG_ERROR(
|
|
--enable-dmeventd requires --enable-cmdlib to be used as well
|
|
)
|
|
fi
|
|
fi
|
|
|
|
if test x$DMEVENTD = xyes; then
|
|
AC_DEFINE([DMEVENTD], 1, [Define to 1 to enable the device-mapper event daemon.])
|
|
fi
|
|
|
|
################################################################################
|
|
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 -- Clear default exec_prefix - install into /sbin rather than /usr/sbin
|
|
if [[ "x$exec_prefix" = xNONE -a "x$prefix" = xNONE ]];
|
|
then exec_prefix="";
|
|
fi;
|
|
|
|
################################################################################
|
|
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
|
|
if [[ \( "x$LVM1" = xshared -o "x$POOL" = xshared -o "x$CLUSTER" = xshared \
|
|
-o "x$SNAPSHOTS" = xshared -o "x$MIRRORS" = xshared \
|
|
-o "x$RAID" = xshared \
|
|
-o "x$CACHE" = xshared \
|
|
\) -a "x$STATIC_LINK" = xyes ]];
|
|
then AC_MSG_ERROR(
|
|
Features cannot be 'shared' when building statically
|
|
)
|
|
fi
|
|
|
|
################################################################################
|
|
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,
|
|
AC_HELP_STRING([--disable-selinux], [disable selinux support]),
|
|
SELINUX=$enableval)
|
|
AC_MSG_RESULT($SELINUX)
|
|
|
|
################################################################################
|
|
dnl -- Check for selinux
|
|
if test x$SELINUX = xyes; then
|
|
AC_CHECK_LIB([sepol], [sepol_check_context], [
|
|
AC_DEFINE([HAVE_SEPOL], 1, [Define to 1 if sepol_check_context is available.])
|
|
SELINUX_LIBS="-lsepol"])
|
|
|
|
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="-lselinux $SELINUX_LIBS"
|
|
SELINUX_PC="libselinux"
|
|
HAVE_SELINUX=yes ], [
|
|
AC_MSG_WARN(Disabling selinux)
|
|
SELINUX_LIBS=
|
|
SELINUX_PC=
|
|
HAVE_SELINUX=no ])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Check for realtime clock support
|
|
if test x$REALTIME = xyes; then
|
|
AC_CHECK_LIB(rt, clock_gettime, HAVE_REALTIME=yes, HAVE_REALTIME=no)
|
|
|
|
if test x$HAVE_REALTIME = xyes; then
|
|
AC_DEFINE([HAVE_REALTIME], 1, [Define to 1 to include support for realtime clock.])
|
|
LIBS="-lrt $LIBS"
|
|
else
|
|
AC_MSG_WARN(Disabling realtime clock)
|
|
fi
|
|
fi
|
|
|
|
################################################################################
|
|
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 readline (Shamelessly copied from parted 1.4.17)
|
|
if test "$READLINE" != no; then
|
|
lvm_saved_libs=$LIBS
|
|
AC_SEARCH_LIBS([tgetent], [tinfo ncurses curses termcap termlib],
|
|
READLINE_LIBS=$ac_cv_search_tgetent, [
|
|
if test "$READLINE" = yes; then
|
|
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.])
|
|
fi])
|
|
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
|
|
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=
|
|
if test "$READLINE" = yes; then
|
|
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).])
|
|
fi ])
|
|
LIBS="$READLINE_LIBS $lvm_saved_libs"
|
|
AC_CHECK_FUNCS([rl_completion_matches])
|
|
LIBS=$lvm_saved_libs
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- Internationalisation stuff
|
|
AC_MSG_CHECKING(whether to enable internationalisation)
|
|
AC_ARG_ENABLE(nls,
|
|
AC_HELP_STRING([--enable-nls], [enable Native Language Support]),
|
|
INTL=$enableval, INTL=no)
|
|
AC_MSG_RESULT($INTL)
|
|
|
|
if test x$INTL = xyes; then
|
|
# FIXME - Move this - can be device-mapper too
|
|
INTL_PACKAGE="lvm2"
|
|
AC_PATH_PROG(MSGFMT, msgfmt)
|
|
if [[ "x$MSGFMT" == x ]];
|
|
then AC_MSG_ERROR(
|
|
msgfmt not found in path $PATH
|
|
)
|
|
fi;
|
|
|
|
AC_ARG_WITH(localedir,
|
|
AC_HELP_STRING([--with-localedir=DIR],
|
|
[translation files in DIR
|
|
[[PREFIX/share/locale]]]),
|
|
LOCALEDIR=$withval, LOCALEDIR='${prefix}/share/locale')
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- FIXME: need to switch to regular option here --sysconfdir
|
|
AC_ARG_WITH(confdir,
|
|
AC_HELP_STRING([--with-confdir=DIR],
|
|
[configuration files in DIR [[/etc]]]),
|
|
CONFDIR=$withval, CONFDIR='/etc')
|
|
|
|
AC_ARG_WITH(staticdir,
|
|
AC_HELP_STRING([--with-staticdir=DIR],
|
|
[static binaries in DIR [[EPREFIX/sbin]]]),
|
|
STATICDIR=$withval, STATICDIR='${exec_prefix}/sbin')
|
|
|
|
AC_ARG_WITH(usrlibdir,
|
|
AC_HELP_STRING([--with-usrlibdir=DIR],
|
|
[usrlib in DIR [[PREFIX/lib]]]),
|
|
usrlibdir=$withval, usrlibdir='${prefix}/lib')
|
|
|
|
AC_ARG_WITH(usrsbindir,
|
|
AC_HELP_STRING([--with-usrsbindir=DIR],
|
|
[usrsbin executables in DIR [[PREFIX/sbin]]]),
|
|
usrsbindir=$withval, usrsbindir='${prefix}/sbin')
|
|
|
|
################################################################################
|
|
AC_ARG_WITH(udev_prefix,
|
|
AC_HELP_STRING([--with-udev-prefix=UPREFIX],
|
|
[install udev rule files in UPREFIX [[EPREFIX]]]),
|
|
udev_prefix=$withval, udev_prefix='${exec_prefix}')
|
|
|
|
AC_ARG_WITH(udevdir,
|
|
AC_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,
|
|
AC_HELP_STRING([--with-systemdsystemunitdir=DIR],
|
|
[systemd service files in DIR]),
|
|
systemdsystemunitdir=$withval,
|
|
dnl -- init pkgconfig if required
|
|
test x$PKGCONFIG_INIT != x1 && pkg_config_init
|
|
pkg_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd))
|
|
|
|
if test -n "$pkg_systemdsystemunitdir"; then
|
|
systemdsystemunitdir=$pkg_systemdsystemunitdir;
|
|
fi
|
|
|
|
if test -z "$systemdsystemunitdir"; then
|
|
systemdsystemunitdir='${exec_prefix}/lib/systemd/system';
|
|
fi
|
|
|
|
systemdutildir=$($PKG_CONFIG --variable=systemdutildir systemd)
|
|
if test -z "$systemdutildir"; then
|
|
systemdutildir='${exec_prefix}/lib/systemd';
|
|
fi
|
|
################################################################################
|
|
AC_ARG_WITH(tmpfilesdir,
|
|
AC_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
|
|
if test x$READLINE = xyes; then
|
|
AC_CHECK_HEADERS(readline/readline.h readline/history.h,,AC_MSG_ERROR(bailing out))
|
|
fi
|
|
|
|
if test x$CLVMD != xnone; then
|
|
AC_CHECK_HEADERS(mntent.h netdb.h netinet/in.h pthread.h search.h sys/mount.h sys/socket.h sys/uio.h sys/un.h utmpx.h,,AC_MSG_ERROR(bailing out))
|
|
AC_CHECK_FUNCS(dup2 getmntent memmove select socket,,AC_MSG_ERROR(bailing out))
|
|
AC_FUNC_GETMNTENT
|
|
AC_FUNC_SELECT_ARGTYPES
|
|
fi
|
|
|
|
if test x$CLUSTER != xnone; then
|
|
AC_CHECK_HEADERS(sys/socket.h sys/un.h,,AC_MSG_ERROR(bailing out))
|
|
AC_CHECK_FUNCS(socket,,AC_MSG_ERROR(bailing out))
|
|
fi
|
|
|
|
if test x$DMEVENTD = xyes; then
|
|
AC_CHECK_HEADERS(arpa/inet.h,,AC_MSG_ERROR(bailing out))
|
|
fi
|
|
|
|
if test x$HAVE_LIBDL = xyes; then
|
|
AC_CHECK_HEADERS(dlfcn.h,,AC_MSG_ERROR(bailing out))
|
|
fi
|
|
|
|
if test x$INTL = xyes; then
|
|
AC_CHECK_HEADERS(libintl.h,,AC_MSG_ERROR(bailing out))
|
|
fi
|
|
|
|
if test x$UDEV_SYNC = xyes; then
|
|
AC_CHECK_HEADERS(sys/ipc.h sys/sem.h,,AC_MSG_ERROR(bailing out))
|
|
fi
|
|
|
|
################################################################################
|
|
AC_PATH_PROG(MODPROBE_CMD, modprobe)
|
|
|
|
if test x$MODPROBE_CMD != x; then
|
|
AC_DEFINE_UNQUOTED([MODPROBE_CMD], ["$MODPROBE_CMD"], [The path to 'modprobe', if available.])
|
|
fi
|
|
|
|
|
|
lvm_exec_prefix=$exec_prefix
|
|
test "$lvm_exec_prefix" = NONE && lvm_exec_prefix=$prefix
|
|
test "$lvm_exec_prefix" = NONE && lvm_exec_prefix=$ac_default_prefix
|
|
LVM_PATH="$lvm_exec_prefix/sbin/lvm"
|
|
AC_DEFINE_UNQUOTED(LVM_PATH, ["$LVM_PATH"], [Path to lvm binary.])
|
|
|
|
if test "$CLVMD" != none; then
|
|
clvmd_prefix=$ac_default_prefix
|
|
CLVMD_PATH="$clvmd_prefix/sbin/clvmd"
|
|
test "$prefix" != NONE && clvmd_prefix=$prefix
|
|
AC_DEFINE_UNQUOTED(CLVMD_PATH, ["$CLVMD_PATH"], [Path to clvmd binary.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- dmeventd pidfile and executable path
|
|
if test "$BUILD_DMEVENTD" = yes; then
|
|
AC_ARG_WITH(dmeventd-pidfile,
|
|
AC_HELP_STRING([--with-dmeventd-pidfile=PATH],
|
|
[dmeventd pidfile [[PID_DIR/dmeventd.pid]]]),
|
|
DMEVENTD_PIDFILE=$withval,
|
|
DMEVENTD_PIDFILE="$DEFAULT_PID_DIR/dmeventd.pid")
|
|
AC_DEFINE_UNQUOTED(DMEVENTD_PIDFILE, ["$DMEVENTD_PIDFILE"],
|
|
[Path to dmeventd pidfile.])
|
|
fi
|
|
|
|
if test "$BUILD_DMEVENTD" = yes; then
|
|
AC_ARG_WITH(dmeventd-path,
|
|
AC_HELP_STRING([--with-dmeventd-path=PATH],
|
|
[dmeventd path [[EPREFIX/sbin/dmeventd]]]),
|
|
DMEVENTD_PATH=$withval,
|
|
DMEVENTD_PATH="$lvm_exec_prefix/sbin/dmeventd")
|
|
AC_DEFINE_UNQUOTED(DMEVENTD_PATH, ["$DMEVENTD_PATH"],
|
|
[Path to dmeventd binary.])
|
|
fi
|
|
|
|
################################################################################
|
|
dnl -- various defaults
|
|
dnl -- FIXME: need to switch to regular option here --sysconfdir
|
|
AC_ARG_WITH(default-system-dir,
|
|
AC_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,
|
|
AC_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,
|
|
AC_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,
|
|
AC_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,
|
|
AC_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.])
|
|
|
|
AC_ARG_WITH(default-locking-dir,
|
|
AC_HELP_STRING([--with-default-locking-dir=DIR],
|
|
[default locking directory [[/var/lock/lvm]]]),
|
|
DEFAULT_LOCK_DIR=$withval, DEFAULT_LOCK_DIR="/var/lock/lvm")
|
|
AC_DEFINE_UNQUOTED(DEFAULT_LOCK_DIR, ["$DEFAULT_LOCK_DIR"],
|
|
[Name of default locking directory.])
|
|
|
|
################################################################################
|
|
dnl -- Setup default data alignment
|
|
AC_ARG_WITH(default-data-alignment,
|
|
AC_HELP_STRING([--with-default-data-alignment=NUM],
|
|
[set the default data alignment in MiB [[1]]]),
|
|
DEFAULT_DATA_ALIGNMENT=$withval, DEFAULT_DATA_ALIGNMENT=1)
|
|
AC_DEFINE_UNQUOTED(DEFAULT_DATA_ALIGNMENT, [$DEFAULT_DATA_ALIGNMENT],
|
|
[Default data alignment.])
|
|
|
|
################################################################################
|
|
dnl -- which kernel interface to use (ioctl only)
|
|
AC_MSG_CHECKING(for kernel interface choice)
|
|
AC_ARG_WITH(interface,
|
|
AC_HELP_STRING([--with-interface=IFACE],
|
|
[choose kernel interface (ioctl) [[ioctl]]]),
|
|
interface=$withval, interface=ioctl)
|
|
if [[ "x$interface" != xioctl ]];
|
|
then
|
|
AC_MSG_ERROR(--with-interface=ioctl required. fs no longer supported.)
|
|
fi
|
|
AC_MSG_RESULT($interface)
|
|
|
|
################################################################################
|
|
DM_LIB_VERSION="\"`cat "$srcdir"/VERSION_DM 2>/dev/null || echo Unknown`\""
|
|
AC_DEFINE_UNQUOTED(DM_LIB_VERSION, $DM_LIB_VERSION, [Library version])
|
|
|
|
DM_LIB_PATCHLEVEL=`cat "$srcdir"/VERSION_DM | $AWK -F '[[-. ]]' '{printf "%s.%s.%s",$1,$2,$3}'`
|
|
|
|
LVM_VERSION="\"`cat "$srcdir"/VERSION 2>/dev/null || echo Unknown`\""
|
|
|
|
VER=`cat "$srcdir"/VERSION`
|
|
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_SUBST(APPLIB)
|
|
AC_SUBST(AWK)
|
|
AC_SUBST(BLKID_PC)
|
|
AC_SUBST(BLKID_WIPING)
|
|
AC_SUBST(BUILD_CMIRRORD)
|
|
AC_SUBST(BUILD_DMEVENTD)
|
|
AC_SUBST(BUILD_LVMETAD)
|
|
AC_SUBST(CACHE)
|
|
AC_SUBST(CFLAGS)
|
|
AC_SUBST(CFLOW_CMD)
|
|
AC_SUBST(CLDFLAGS)
|
|
AC_SUBST(CLDNOWHOLEARCHIVE)
|
|
AC_SUBST(CLDWHOLEARCHIVE)
|
|
AC_SUBST(CLUSTER)
|
|
AC_SUBST(CLVMD)
|
|
AC_SUBST(CLVMD_CMANAGERS)
|
|
AC_SUBST(CLVMD_PATH)
|
|
AC_SUBST(CMAN_CFLAGS)
|
|
AC_SUBST(CMAN_LIBS)
|
|
AC_SUBST(CMAP_CFLAGS)
|
|
AC_SUBST(CMAP_LIBS)
|
|
AC_SUBST(CMDLIB)
|
|
AC_SUBST(CONFDB_CFLAGS)
|
|
AC_SUBST(CONFDB_LIBS)
|
|
AC_SUBST(CONFDIR)
|
|
AC_SUBST(COPTIMISE_FLAG)
|
|
AC_SUBST(CPG_CFLAGS)
|
|
AC_SUBST(CPG_LIBS)
|
|
AC_SUBST(CSCOPE_CMD)
|
|
AC_SUBST(DEBUG)
|
|
AC_SUBST(DEFAULT_SYS_DIR)
|
|
AC_SUBST(DEFAULT_ARCHIVE_SUBDIR)
|
|
AC_SUBST(DEFAULT_BACKUP_SUBDIR)
|
|
AC_SUBST(DEFAULT_CACHE_SUBDIR)
|
|
AC_SUBST(DEFAULT_PROFILE_SUBDIR)
|
|
AC_SUBST(DEFAULT_DATA_ALIGNMENT)
|
|
AC_SUBST(DEFAULT_LOCK_DIR)
|
|
AC_SUBST(DEFAULT_DM_RUN_DIR)
|
|
AC_SUBST(DEFAULT_RUN_DIR)
|
|
AC_SUBST(DEVMAPPER)
|
|
AC_SUBST(DLM_CFLAGS)
|
|
AC_SUBST(DLM_LIBS)
|
|
AC_SUBST(DL_LIBS)
|
|
AC_SUBST(DMEVENTD)
|
|
AC_SUBST(DMEVENTD_PATH)
|
|
AC_SUBST(DM_COMPAT)
|
|
AC_SUBST(DM_DEVICE_GID)
|
|
AC_SUBST(DM_DEVICE_MODE)
|
|
AC_SUBST(DM_DEVICE_UID)
|
|
AC_SUBST(DM_IOCTLS)
|
|
AC_SUBST(DM_LIB_VERSION)
|
|
AC_SUBST(DM_LIB_PATCHLEVEL)
|
|
AC_SUBST(ELDFLAGS)
|
|
AC_SUBST(FSADM)
|
|
AC_SUBST(BLKDEACTIVATE)
|
|
AC_SUBST(HAVE_LIBDL)
|
|
AC_SUBST(HAVE_REALTIME)
|
|
AC_SUBST(INTL)
|
|
AC_SUBST(INTL_PACKAGE)
|
|
AC_SUBST(JOBS)
|
|
AC_SUBST(LDDEPS)
|
|
AC_SUBST(LIBS)
|
|
AC_SUBST(LIB_SUFFIX)
|
|
AC_SUBST(LOCALEDIR)
|
|
AC_SUBST(LVM1)
|
|
AC_SUBST(LVM1_FALLBACK)
|
|
AC_SUBST(LVM_VERSION)
|
|
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(MIRRORS)
|
|
AC_SUBST(MSGFMT)
|
|
AC_SUBST(OCF)
|
|
AC_SUBST(OCFDIR)
|
|
AC_SUBST(PKGCONFIG)
|
|
AC_SUBST(POOL)
|
|
AC_SUBST(PTHREAD_LIBS)
|
|
AC_SUBST(PYTHON)
|
|
AC_SUBST(PYTHON_BINDINGS)
|
|
AC_SUBST(PYTHON_INCDIRS)
|
|
AC_SUBST(PYTHON_LIBDIRS)
|
|
AC_SUBST(QUORUM_CFLAGS)
|
|
AC_SUBST(QUORUM_LIBS)
|
|
AC_SUBST(RAID)
|
|
AC_SUBST(READLINE_LIBS)
|
|
AC_SUBST(REPLICATORS)
|
|
AC_SUBST(SACKPT_CFLAGS)
|
|
AC_SUBST(SACKPT_LIBS)
|
|
AC_SUBST(SALCK_CFLAGS)
|
|
AC_SUBST(SALCK_LIBS)
|
|
AC_SUBST(SELINUX_LIBS)
|
|
AC_SUBST(SELINUX_PC)
|
|
AC_SUBST(SNAPSHOTS)
|
|
AC_SUBST(STATICDIR)
|
|
AC_SUBST(STATIC_LINK)
|
|
AC_SUBST(TESTING)
|
|
AC_SUBST(THIN)
|
|
AC_SUBST(THIN_CHECK_CMD)
|
|
AC_SUBST(THIN_DUMP_CMD)
|
|
AC_SUBST(THIN_REPAIR_CMD)
|
|
AC_SUBST(UDEV_PC)
|
|
AC_SUBST(UDEV_RULES)
|
|
AC_SUBST(UDEV_SYNC)
|
|
AC_SUBST(UDEV_SYSTEMD_BACKGROUND_JOBS)
|
|
AC_SUBST(UDEV_RULE_EXEC_DETECTION)
|
|
AC_SUBST(UDEV_HAS_BUILTIN_BLKID)
|
|
AC_SUBST(WRITE_INSTALL)
|
|
AC_SUBST(DMEVENTD_PIDFILE)
|
|
AC_SUBST(LVMETAD_PIDFILE)
|
|
AC_SUBST(CLVMD_PIDFILE)
|
|
AC_SUBST(CMIRRORD_PIDFILE)
|
|
AC_SUBST(interface)
|
|
AC_SUBST(kerneldir)
|
|
AC_SUBST(missingkernel)
|
|
AC_SUBST(kernelvsn)
|
|
AC_SUBST(tmpdir)
|
|
AC_SUBST(udev_prefix)
|
|
AC_SUBST(udevdir)
|
|
AC_SUBST(systemdsystemunitdir)
|
|
AC_SUBST(systemdutildir)
|
|
AC_SUBST(tmpfilesdir)
|
|
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
|
|
daemons/Makefile
|
|
daemons/clvmd/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/lvmetad/Makefile
|
|
conf/Makefile
|
|
conf/example.conf
|
|
conf/default.profile
|
|
include/.symlinks
|
|
include/Makefile
|
|
lib/Makefile
|
|
lib/format1/Makefile
|
|
lib/format_pool/Makefile
|
|
lib/locking/Makefile
|
|
lib/mirror/Makefile
|
|
lib/replicator/Makefile
|
|
lib/misc/lvm-version.h
|
|
lib/raid/Makefile
|
|
lib/snapshot/Makefile
|
|
lib/thin/Makefile
|
|
lib/cache_segtype/Makefile
|
|
libdaemon/Makefile
|
|
libdaemon/client/Makefile
|
|
libdaemon/server/Makefile
|
|
libdm/Makefile
|
|
libdm/libdevmapper.pc
|
|
liblvm/Makefile
|
|
liblvm/liblvm2app.pc
|
|
man/Makefile
|
|
po/Makefile
|
|
python/Makefile
|
|
python/setup.py
|
|
scripts/blkdeactivate.sh
|
|
scripts/blk_availability_init_red_hat
|
|
scripts/blk_availability_systemd_red_hat.service
|
|
scripts/lvm2_cluster_activation_red_hat.sh
|
|
scripts/lvm2_cluster_activation_systemd_red_hat.service
|
|
scripts/clvmd_init_red_hat
|
|
scripts/lvm2_clvmd_systemd_red_hat.service
|
|
scripts/cmirrord_init_red_hat
|
|
scripts/lvm2_cmirrord_systemd_red_hat.service
|
|
scripts/lvm2_lvmetad_init_red_hat
|
|
scripts/lvm2_lvmetad_systemd_red_hat.socket
|
|
scripts/lvm2_lvmetad_systemd_red_hat.service
|
|
scripts/lvm2_pvscan_systemd_red_hat@.service
|
|
scripts/lvm2_monitoring_init_red_hat
|
|
scripts/dm_event_systemd_red_hat.socket
|
|
scripts/dm_event_systemd_red_hat.service
|
|
scripts/lvm2_monitoring_systemd_red_hat.service
|
|
scripts/lvm2_tmpfiles_red_hat.conf
|
|
scripts/Makefile
|
|
test/Makefile
|
|
test/api/Makefile
|
|
test/unit/Makefile
|
|
tools/Makefile
|
|
udev/Makefile
|
|
unit-tests/datastruct/Makefile
|
|
unit-tests/regex/Makefile
|
|
unit-tests/mm/Makefile
|
|
])
|
|
AC_OUTPUT
|
|
|
|
test -n "$THIN_CONFIGURE_WARN" && AC_MSG_WARN([Support for thin provisioning is limited since some thin provisioning tools are missing!])
|
|
|
|
test -n "$THIN_CHECK_VERSION_WARN" && AC_MSG_WARN(You should also install thin_check vsn 0.3.2 (or later) to use lvm2 thin provisioning)
|
|
|
|
if test x$ODIRECT != xyes; then
|
|
AC_MSG_WARN(O_DIRECT disabled: low-memory pvmove may lock up)
|
|
fi
|