| ############################################################################### |
| ## Copyright (C) 2000-2004 Sistina Software, Inc. All rights reserved. |
| ## Copyright (C) 2004-2016 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 |
| 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"]) |
| case "$host_os" in |
| linux*) |
| 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 |
| BUILD_LVMETAD=no |
| BUILD_LVMPOLLD=no |
| LOCKDSANLOCK=no |
| LOCKDDLM=no |
| ODIRECT=yes |
| DM_IOCTLS=yes |
| SELINUX=yes |
| CLUSTER=internal |
| FSADM=yes |
| BLKDEACTIVATE=yes |
| ;; |
| darwin*) |
| CFLAGS="$CFLAGS -no-cpp-precomp -fno-common" |
| 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 |
| save_CFLAGS=$CFLAGS |
| save_CXXFLAGS=$CXXFLAGS |
| AC_PROG_CC |
| AC_PROG_CXX |
| CFLAGS=$save_CFLAGS |
| CXXFLAGS=$save_CXXFLAGS |
| |
| 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_TOOL(CFLOW_CMD, cflow) |
| AC_PATH_TOOL(CSCOPE_CMD, cscope) |
| AC_PATH_TOOL(CHMOD, chmod) |
| |
| ################################################################################ |
| dnl -- Check for header files. |
| AC_HEADER_DIRENT |
| AC_HEADER_MAJOR |
| AC_HEADER_STDBOOL |
| AC_HEADER_STDC |
| AC_HEADER_SYS_WAIT |
| AC_HEADER_TIME |
| |
| 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 linux/magic.h linux/fiemap.h) |
| |
| 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 |
| |
| ################################################################################ |
| 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_TM |
| 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 |
| |
| ################################################################################ |
| dnl -- Check for functions |
| AC_CHECK_FUNCS([ftruncate gethostname getpagesize gettimeofday localtime_r \ |
| memchr memset mkdir mkfifo munmap nl_langinfo realpath rmdir setenv \ |
| setlocale strcasecmp strchr strcspn strdup strerror strncasecmp strndup \ |
| strrchr strspn strstr strtol strtoul uname], , [AC_MSG_ERROR(bailing out)]) |
| 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, |
| AC_HELP_STRING([--disable-dependency-tracking], |
| [speeds up one-time build.]), |
| USE_TRACKING=$enableval, USE_TRACKING=yes) |
| AC_MSG_RESULT($USE_TRACKING) |
| |
| ################################################################################ |
| 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) |
| if test "$prefix" = NONE; then |
| datarootdir=${ac_default_prefix}/share |
| fi |
| |
| ################################################################################ |
| 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) |
| test -n "$OWNER" && INSTALL="$INSTALL -o $OWNER" |
| |
| ################################################################################ |
| 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) |
| test -n "$GROUP" && INSTALL="$INSTALL -g $GROUP" |
| |
| ################################################################################ |
| 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) |
| 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, |
| 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) |
| 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, |
| 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_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, |
| 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 [auto]]), |
| MANGLING=$withval, MANGLING=auto) |
| case "$MANGLING" in |
| auto) mangling=DM_STRING_MANGLING_AUTO;; |
| none|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 "$LVM1_FALLBACK" = yes; then |
| DEFAULT_FALLBACK_TO_LVM1=1 |
| 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]) |
| else |
| DEFAULT_FALLBACK_TO_LVM1=0 |
| fi |
| AC_DEFINE_UNQUOTED(DEFAULT_FALLBACK_TO_LVM1, [$DEFAULT_FALLBACK_TO_LVM1], |
| [Fall back to LVM1 by default if device-mapper is missing from the kernel.]) |
| |
| ################################################################################ |
| 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 [internal]]), |
| LVM1=$withval, LVM1=internal) |
| |
| AC_MSG_RESULT($LVM1) |
| |
| case "$LVM1" in |
| none|shared) ;; |
| internal) AC_DEFINE([LVM1_INTERNAL], 1, |
| [Define to 1 to include built-in support for LVM1 metadata.]) ;; |
| *) AC_MSG_ERROR([--with-lvm1 parameter invalid]) ;; |
| esac |
| |
| ################################################################################ |
| 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 [internal]]), |
| POOL=$withval, POOL=internal) |
| AC_MSG_RESULT($POOL) |
| |
| case "$POOL" in |
| none|shared) ;; |
| internal) AC_DEFINE([POOL_INTERNAL], 1, |
| [Define to 1 to include built-in support for GFS pool metadata.]) ;; |
| *) AC_MSG_ERROR([--with-pool parameter invalid]) |
| esac |
| |
| ################################################################################ |
| 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 [internal]]), |
| CLUSTER=$withval) |
| AC_MSG_RESULT($CLUSTER) |
| |
| case "$CLUSTER" in |
| none|shared) ;; |
| internal) AC_DEFINE([CLUSTER_LOCKING_INTERNAL], 1, |
| [Define to 1 to include built-in support for clustered LVM locking.]) ;; |
| *) AC_MSG_ERROR([--with-cluster parameter invalid]) ;; |
| esac |
| |
| ################################################################################ |
| 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 [internal]]), |
| SNAPSHOTS=$withval, SNAPSHOTS=internal) |
| AC_MSG_RESULT($SNAPSHOTS) |
| |
| case "$SNAPSHOTS" in |
| 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]) ;; |
| esac |
| |
| ################################################################################ |
| 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 [internal]]), |
| MIRRORS=$withval, MIRRORS=internal) |
| AC_MSG_RESULT($MIRRORS) |
| |
| case "$MIRRORS" in |
| 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]) ;; |
| esac |
| |
| ################################################################################ |
| 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 [internal]]), |
| RAID=$withval, RAID=internal) |
| AC_MSG_RESULT($RAID) |
| |
| AC_ARG_WITH(default-mirror-segtype, |
| AC_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, |
| AC_HELP_STRING([--with-default-raid10-segtype=TYPE], |
| [default mirror segtype: raid10/mirror [raid10]]), |
| DEFAULT_RAID10_SEGTYPE=$withval, DEFAULT_RAID10_SEGTYPE="raid10") |
| case "$RAID" in |
| none) test "$DEFAULT_MIRROR_SEGTYPE" = "raid1" && DEFAULT_MIRROR_SEGTYPE="mirror" |
| test "$DEFAULT_RAID10_SEGTYPE" = "raid10" && DEFAULT_RAID10_SEGTYPE="mirror" ;; |
| shared) ;; |
| internal) AC_DEFINE([RAID_INTERNAL], 1, |
| [Define to 1 to include built-in support for raid.]) ;; |
| *) AC_MSG_ERROR([--with-raid parameter invalid]) ;; |
| esac |
| |
| 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.]) |
| |
| ################################################################################ |
| 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 [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 |
| |
| |
| AC_ARG_WITH(default-sparse-segtype, |
| AC_HELP_STRING([--with-default-sparse-segtype=TYPE], |
| [default sparse segtype: thin/snapshot [thin]]), |
| DEFAULT_SPARSE_SEGTYPE=$withval, DEFAULT_SPARSE_SEGTYPE="thin") |
| |
| ################################################################################ |
| 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 [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_ARG_WITH(thin-restore, |
| AC_HELP_STRING([--with-thin-restore=PATH], |
| [thin_restore tool: [autodetect]]), |
| THIN_RESTORE_CMD=$withval, THIN_RESTORE_CMD="autodetect") |
| |
| AC_MSG_RESULT($THIN) |
| |
| case "$THIN" in |
| 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)]) ;; |
| esac |
| |
| 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, |
| 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) |
| |
| # 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 |
| fi |
| fi |
| if test "$THIN_CHECK_NEEDS_CHECK" = yes; 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([$THIN_CHECK_CMD: Bad version "$THIN_CHECK_VSN" found]) |
| THIN_CHECK_VERSION_WARN=y |
| THIN_CHECK_NEEDS_CHECK=no |
| elif test "$THIN_CHECK_VSN_MAJOR" -eq 0 -a "$THIN_CHECK_VSN_MINOR" -lt 3; then |
| AC_MSG_WARN([$THIN_CHECK_CMD: Old version "$THIN_CHECK_VSN" found]) |
| THIN_CHECK_VERSION_WARN=y |
| THIN_CHECK_NEEDS_CHECK=no |
| fi |
| fi |
| # Empty means a config way to ignore thin dumping |
| 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 repairing |
| 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 |
| # Empty means a config way to ignore thin restoring |
| if test "$THIN_RESTORE_CMD" = "autodetect"; then |
| AC_PATH_TOOL(THIN_RESTORE_CMD, thin_restore) |
| test -z "$THIN_RESTORE_CMD" && { |
| AC_MSG_WARN(thin_restore not found in path $PATH) |
| THIN_RESTORE_CMD=/usr/sbin/thin_restore |
| THIN_CONFIGURE_WARN=y |
| } |
| fi |
| |
| AC_MSG_CHECKING([whether thin_check supports the needs-check flag]) |
| AC_MSG_RESULT([$THIN_CHECK_NEEDS_CHECK]) |
| if test "$THIN_CHECK_NEEDS_CHECK" = yes; 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 |
| |
| ;; |
| 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.]) |
| |
| 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, |
| AC_HELP_STRING([--with-cache=TYPE], |
| [cache support: internal/shared/none [internal]]), |
| CACHE=$withval, CACHE="internal") |
| AC_ARG_WITH(cache-check, |
| AC_HELP_STRING([--with-cache-check=PATH], |
| [cache_check tool: [autodetect]]), |
| CACHE_CHECK_CMD=$withval, CACHE_CHECK_CMD="autodetect") |
| AC_ARG_WITH(cache-dump, |
| AC_HELP_STRING([--with-cache-dump=PATH], |
| [cache_dump tool: [autodetect]]), |
| CACHE_DUMP_CMD=$withval, CACHE_DUMP_CMD="autodetect") |
| AC_ARG_WITH(cache-repair, |
| AC_HELP_STRING([--with-cache-repair=PATH], |
| [cache_repair tool: [autodetect]]), |
| CACHE_REPAIR_CMD=$withval, CACHE_REPAIR_CMD="autodetect") |
| AC_ARG_WITH(cache-restore, |
| AC_HELP_STRING([--with-cache-restore=PATH], |
| [cache_restore tool: [autodetect]]), |
| CACHE_RESTORE_CMD=$withval, CACHE_RESTORE_CMD="autodetect") |
| AC_MSG_RESULT($CACHE) |
| |
| case "$CACHE" in |
| 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]) ;; |
| esac |
| |
| dnl -- cache_check needs-check flag |
| AC_ARG_ENABLE(cache_check_needs_check, |
| AC_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 |
| case "$CACHE" in |
| internal|shared) |
| # Empty means a config way to ignore cache checking |
| if test "$CACHE_CHECK_CMD" = "autodetect"; then |
| AC_PATH_TOOL(CACHE_CHECK_CMD, cache_check) |
| if test -z "$CACHE_CHECK_CMD"; then |
| AC_MSG_WARN([cache_check not found in path $PATH]) |
| CACHE_CHECK_CMD=/usr/sbin/cache_check |
| CACHE_CONFIGURE_WARN=y |
| fi |
| fi |
| if test "$CACHE_CHECK_NEEDS_CHECK" = yes; then |
| $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 |
| if test -z "$CACHE_CHECK_VSN_MAJOR" \ |
| || test -z "$CACHE_CHECK_VSN_MINOR" \ |
| || test -z "$CACHE_CHECK_VSN_PATCH"; then |
| AC_MSG_WARN([$CACHE_CHECK_CMD: Bad version "$CACHE_CHECK_VSN" found]) |
| CACHE_CHECK_VERSION_WARN=y |
| CACHE_CHECK_NEEDS_CHECK=no |
| elif test "$CACHE_CHECK_VSN_MAJOR" -eq 0 ; then |
| if test "$CACHE_CHECK_VSN_MINOR" -lt 5 \ |
| || test "$CACHE_CHECK_VSN_MINOR" -eq 5 -a "$CACHE_CHECK_VSN_PATCH" -lt 4; then |
| AC_MSG_WARN([$CACHE_CHECK_CMD: Old version "$CACHE_CHECK_VSN" found]) |
| CACHE_CHECK_VERSION_WARN=y |
| CACHE_CHECK_NEEDS_CHECK=no |
| fi |
| fi |
| fi |
| # Empty means a config way to ignore cache dumping |
| if test "$CACHE_DUMP_CMD" = "autodetect"; then |
| AC_PATH_TOOL(CACHE_DUMP_CMD, cache_dump) |
| test -z "$CACHE_DUMP_CMD" && { |
| AC_MSG_WARN(cache_dump not found in path $PATH) |
| CACHE_DUMP_CMD=/usr/sbin/cache_dump |
| CACHE_CONFIGURE_WARN=y |
| } |
| fi |
| # Empty means a config way to ignore cache repairing |
| if test "$CACHE_REPAIR_CMD" = "autodetect"; then |
| AC_PATH_TOOL(CACHE_REPAIR_CMD, cache_repair) |
| test -z "$CACHE_REPAIR_CMD" && { |
| AC_MSG_WARN(cache_repair not found in path $PATH) |
| CACHE_REPAIR_CMD=/usr/sbin/cache_repair |
| CACHE_CONFIGURE_WARN=y |
| } |
| fi |
| # Empty means a config way to ignore cache restoring |
| if test "$CACHE_RESTORE_CMD" = "autodetect"; then |
| AC_PATH_TOOL(CACHE_RESTORE_CMD, cache_restore) |
| test -z "$CACHE_RESTORE_CMD" && { |
| AC_MSG_WARN(cache_restore not found in path $PATH) |
| CACHE_RESTORE_CMD=/usr/sbin/cache_restore |
| CACHE_CONFIGURE_WARN=y |
| } |
| fi |
| |
| AC_MSG_CHECKING([whether cache_check supports the needs-check flag]) |
| AC_MSG_RESULT([$CACHE_CHECK_NEEDS_CHECK]) |
| if test "$CACHE_CHECK_NEEDS_CHECK" = yes; then |
| AC_DEFINE([CACHE_CHECK_NEEDS_CHECK], 1, [Define to 1 if the external 'cache_check' tool requires the --clear-needs-check-flag option]) |
| fi |
| ;; |
| esac |
| |
| 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 -- 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([--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, |
| 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 [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() { |
| if test "$PKGCONFIG_INIT" != 1; then |
| PKG_CHECK_MODULES(PKGCONFIGINIT, pkgconfiginit, [], |
| [AC_MSG_RESULT([pkg-config initialized])]) |
| PKGCONFIG_INIT=1 |
| fi |
| } |
| |
| ################################################################################ |
| AC_MSG_CHECKING(for default run directory) |
| RUN_DIR="/run" |
| test -d "/run" || 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, |
| AC_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, |
| AC_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, |
| AC_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 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) |
| [[none]]], |
| CLVMD=$withval, CLVMD=none) |
| test "$CLVMD" = yes && CLVMD=all |
| AC_MSG_RESULT($CLVMD) |
| |
| dnl -- If clvmd enabled without cluster locking, automagically include it |
| test "$CLVMD" != none -a "$CLUSTER" = none && CLUSTER=internal |
| |
| dnl -- init pkgconfig if required |
| test "$CLVMD" != none && pkg_config_init |
| |
| 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 |
| test "$CLVMD_NEEDS_QDISKD" != no && CLVMD_CMANAGERS="$CLVMD_CMANAGERS qdiskd" |
| |
| 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 do not 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 "$CLVMD" = all; 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 "$BUILDCMAN" = yes; 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 is 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 "$BUILDCOROSYNC" = yes -o "$BUILDOPENAIS" = yes; then |
| PKG_CHECK_MODULES(COROSYNC, corosync, [HAVE_COROSYNC=yes], $bailout) |
| CHECKCONFDB=yes |
| CHECKCMAP=yes |
| fi |
| |
| dnl -- Look for corosync libraries if required. |
| if test "$BUILDCOROSYNC" = yes; then |
| PKG_CHECK_MODULES(QUORUM, libquorum, [HAVE_QUORUM=yes], $bailout) |
| CHECKCPG=yes |
| CHECKDLM=yes |
| fi |
| |
| dnl -- Look for openais libraries if required. |
| if test "$BUILDOPENAIS" = yes; 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 "$CHECKCONFDB" = yes; 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 "$HAVE_CONFDB" != yes -a "$HAVE_CONFDB_H" = yes; 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 "$CHECKCMAP" = yes; 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 "$HAVE_CMAP" != yes -a "$HAVE_CMAP_H" = yes; 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 "$BUILDCOROSYNC" = yes -a \ |
| "$HAVE_CMAP" != yes -a "$HAVE_CONFDB" != yes -a "$CLVMD" != all; then |
| AC_MSG_ERROR([bailing out... cmap (corosync >= 2.0) or confdb (corosync < 2.0) library is required]) |
| fi |
| |
| dnl -- Check cpg library. |
| if test "$CHECKCPG" = yes; then |
| PKG_CHECK_MODULES(CPG, libcpg, [HAVE_CPG=yes], [$bailout]) |
| fi |
| |
| dnl -- Check dlm library. |
| if test "$CHECKDLM" = yes; 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 "$CLVMD" = all; then |
| CLVMD=none |
| CLVMD_CMANAGERS="" |
| CLVMD_NEEDS_QDISKD=no |
| if test "$HAVE_CMAN" = yes -a \ |
| "$HAVE_DLM" = yes; then |
| AC_MSG_RESULT([Enabling clvmd cman cluster manager]) |
| CLVMD="$CLVMD,cman" |
| CLVMD_CMANAGERS="$CLVMD_CMANAGERS cman" |
| CLVMD_NEEDS_QDISKD=yes |
| fi |
| if test "$HAVE_COROSYNC" = yes -a \ |
| "$HAVE_QUORUM" = yes -a \ |
| "$HAVE_CPG" = yes -a \ |
| "$HAVE_DLM" = yes; then |
| if test "$HAVE_CONFDB" = yes -o "$HAVE_CMAP" = yes; then |
| AC_MSG_RESULT([Enabling clvmd corosync cluster manager]) |
| CLVMD="$CLVMD,corosync" |
| CLVMD_CMANAGERS="$CLVMD_CMANAGERS corosync" |
| fi |
| fi |
| if test "$HAVE_COROSYNC" = yes -a \ |
| "$HAVE_CPG" = yes -a \ |
| "$HAVE_SALCK" = yes; then |
| AC_MSG_RESULT([Enabling clvmd openais cluster manager]) |
| CLVMD="$CLVMD,openais" |
| CLVMD_CMANAGERS="$CLVMD_CMANAGERS openais" |
| fi |
| test "$CLVMD_NEEDS_QDISKD" != no && CLVMD_CMANAGERS="$CLVMD_CMANAGERS qdiskd" |
| test "$CLVMD" = none && AC_MSG_RESULT([Disabling clvmd build. No cluster manager detected.]) |
| 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 |
| test "$HAVE_CMAP" = yes && CLVMD_CMANAGERS="$CLVMD_CMANAGERS dlm" |
| fi |
| |
| ################################################################################ |
| dnl -- clvmd pidfile |
| if test "$CLVMD" != none; 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 "$BUILD_CMIRRORD" = yes; 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 [[ "$BUILD_CMIRRORD" = yes ]]; then |
| pkg_config_init |
| |
| 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 "$HAVE_CPG" != yes; 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 "$DEBUG" = yes; 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) |
| 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, |
| 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 "$PROFILING" = yes; then |
| COPTIMISE_FLAG="$COPTIMISE_FLAG -fprofile-arcs -ftest-coverage" |
| AC_PATH_TOOL(LCOV, lcov) |
| AC_PATH_TOOL(GENHTML, genhtml) |
| test -z "$LCOV" -o -z "$GENHTML" && AC_MSG_ERROR([lcov and genhtml are required for profiling]) |
| AC_PATH_TOOL(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 |
| pkg_config_init |
| PKG_CHECK_MODULES(CUNIT, cunit >= 2.0) |
| fi |
| |
| ################################################################################ |
| 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, |
| AC_HELP_STRING([--enable-valgrind-pool], |
| [enable valgrind awareness of pools]), |
| VALGRIND_POOL=$enableval, VALGRIND_POOL=no) |
| AC_MSG_RESULT($VALGRIND_POOL) |
| |
| pkg_config_init |
| PKG_CHECK_MODULES(VALGRIND, valgrind, [HAVE_VALGRIND=yes], [if test x$VALGRIND_POOL = xyes; then AC_MSG_ERROR(bailing out); fi]) |
| AC_SUBST(VALGRIND_CFLAGS) |
| |
| if test x$HAVE_VALGRIND = xyes; then |
| AC_DEFINE([HAVE_VALGRIND], 1, [valgrind.h found]) |
| fi |
| |
| if test x$VALGRIND_POOL = xyes; then |
| AC_DEFINE([VALGRIND_POOL], 1, [Enable a valgrind aware build of pool]) |
| 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 "$DEVMAPPER" = yes; 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) |
| test -n "$LVMETAD" && BUILD_LVMETAD=$LVMETAD |
| AC_MSG_RESULT($BUILD_LVMETAD) |
| |
| ################################################################################ |
| dnl -- Build lvmpolld |
| AC_MSG_CHECKING(whether to build lvmpolld) |
| AC_ARG_ENABLE(lvmpolld, |
| AC_HELP_STRING([--enable-lvmpolld], |
| [enable the LVM Polling Daemon]), |
| LVMPOLLD=$enableval) |
| test -n "$LVMPOLLD" && BUILD_LVMPOLLD=$LVMPOLLD |
| AC_MSG_RESULT($BUILD_LVMPOLLD) |
| |
| ################################################################################ |
| BUILD_LVMLOCKD=no |
| |
| dnl -- Build lockdsanlock |
| AC_MSG_CHECKING(whether to build lockdsanlock) |
| AC_ARG_ENABLE(lockd-sanlock, |
| AC_HELP_STRING([--enable-lockd-sanlock], |
| [enable the LVM lock daemon using sanlock]), |
| LOCKDSANLOCK=$enableval) |
| AC_MSG_RESULT($LOCKDSANLOCK) |
| |
| BUILD_LOCKDSANLOCK=$LOCKDSANLOCK |
| |
| dnl -- Look for sanlock libraries |
| if test "$BUILD_LOCKDSANLOCK" = yes; then |
| PKG_CHECK_MODULES(LOCKD_SANLOCK, libsanlock_client >= 3.3.0, [HAVE_LOCKD_SANLOCK=yes], $bailout) |
| AC_DEFINE([LOCKDSANLOCK_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd sanlock option.]) |
| BUILD_LVMLOCKD=yes |
| fi |
| |
| ################################################################################ |
| dnl -- Build lockddlm |
| AC_MSG_CHECKING(whether to build lockddlm) |
| AC_ARG_ENABLE(lockd-dlm, |
| AC_HELP_STRING([--enable-lockd-dlm], |
| [enable the LVM lock daemon using dlm]), |
| LOCKDDLM=$enableval) |
| AC_MSG_RESULT($LOCKDDLM) |
| |
| BUILD_LOCKDDLM=$LOCKDDLM |
| |
| dnl -- Look for dlm libraries |
| if test "$BUILD_LOCKDDLM" = yes; then |
| PKG_CHECK_MODULES(LOCKD_DLM, libdlm, [HAVE_LOCKD_DLM=yes], $bailout) |
| AC_DEFINE([LOCKDDLM_SUPPORT], 1, [Define to 1 to include code that uses lvmlockd dlm option.]) |
| BUILD_LVMLOCKD=yes |
| fi |
| |
| ################################################################################ |
| dnl -- Build lvmlockd |
| AC_MSG_CHECKING(whether to build lvmlockd) |
| AC_MSG_RESULT($BUILD_LVMLOCKD) |
| |
| if test "$BUILD_LVMLOCKD" = yes; then |
| AS_IF([test "$LVMPOLLD" = no], [AC_MSG_ERROR([cannot build lvmlockd with --disable-lvmpolld.])]) |
| AS_IF([test "$LVMETAD" = no], [AC_MSG_ERROR([cannot build lvmlockd with --disable-lvmetad.])]) |
| AS_IF([test "$BUILD_LVMPOLLD" = no], [BUILD_LVMPOLLD=yes; AC_MSG_WARN([Enabling lvmpolld - required by lvmlockd.])]) |
| AS_IF([test "$BUILD_LVMETAD" = no], [BUILD_LVMETAD=yes; AC_MSG_WARN([Enabling lvmetad - required by lvmlockd.])]) |
| AC_MSG_CHECKING([defaults for use_lvmlockd]) |
| AC_ARG_ENABLE(use_lvmlockd, |
| AC_HELP_STRING([--disable-use-lvmlockd], |
| [disable usage of LVM lock daemon]), |
| [case ${enableval} in |
| yes) DEFAULT_USE_LVMLOCKD=1 ;; |
| *) DEFAULT_USE_LVMLOCKD=0 ;; |
| esac], 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, |
| AC_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.]) |
| else |
| DEFAULT_USE_LVMLOCKD=0 |
| fi |
| AC_DEFINE_UNQUOTED(DEFAULT_USE_LVMLOCKD, [$DEFAULT_USE_LVMLOCKD], |
| [Use lvmlockd by default.]) |
| |
| ################################################################################ |
| dnl -- Check lvmetad |
| if test "$BUILD_LVMETAD" = yes; then |
| AC_MSG_CHECKING([defaults for use_lvmetad]) |
| AC_ARG_ENABLE(use_lvmetad, |
| AC_HELP_STRING([--disable-use-lvmetad], |
| [disable usage of LVM Metadata Daemon]), |
| [case ${enableval} in |
| yes) DEFAULT_USE_LVMETAD=1 ;; |
| *) DEFAULT_USE_LVMETAD=0 ;; |
| esac], DEFAULT_USE_LVMETAD=1) |
| AC_MSG_RESULT($DEFAULT_USE_LVMETAD) |
| 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.]) |
| else |
| DEFAULT_USE_LVMETAD=0 |
| fi |
| AC_DEFINE_UNQUOTED(DEFAULT_USE_LVMETAD, [$DEFAULT_USE_LVMETAD], |
| [Use lvmetad by default.]) |
| |
| ################################################################################ |
| dnl -- Check lvmpolld |
| if test "$BUILD_LVMPOLLD" = yes; then |
| AC_MSG_CHECKING([defaults for use_lvmpolld]) |
| AC_ARG_ENABLE(use_lvmpolld, |
| AC_HELP_STRING([--disable-use-lvmpolld], |
| [disable usage of LVM Poll Daemon]), |
| [case ${enableval} in |
| yes) DEFAULT_USE_LVMPOLLD=1 ;; |
| *) DEFAULT_USE_LVMPOLLD=0 ;; |
| esac], 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, |
| AC_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.]) |
| else |
| DEFAULT_USE_LVMPOLLD=0 |
| fi |
| AC_DEFINE_UNQUOTED(DEFAULT_USE_LVMPOLLD, [$DEFAULT_USE_LVMPOLLD], |
| [Use lvmpolld by default.]) |
| |
| ################################################################################ |
| dnl -- Build notifydbus |
| AC_MSG_CHECKING(whether to build notifydbus) |
| AC_ARG_ENABLE(notify-dbus, |
| AC_HELP_STRING([--enable-notify-dbus], |
| [enable LVM notification using dbus]), |
| NOTIFYDBUS=$enableval) |
| AC_MSG_RESULT($NOTIFYDBUS) |
| |
| BUILD_NOTIFYDBUS=$NOTIFYDBUS |
| |
| if test "$BUILD_NOTIFYDBUS" = yes; then |
| AC_DEFINE([NOTIFYDBUS_SUPPORT], 1, [Define to 1 to include code that uses dbus notification.]) |
| LIBS="-lsystemd $LIBS" |
| fi |
| |
| ################################################################################ |
| dnl -- Look for dbus libraries |
| if test "$BUILD_NOTIFYDBUS" = yes; then |
| PKG_CHECK_MODULES(NOTIFY_DBUS, systemd >= 221, [HAVE_NOTIFY_DBUS=yes], $bailout) |
| 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 "$BLKID_WIPING" != no; then |
| pkg_config_init |
| PKG_CHECK_MODULES(BLKID, blkid >= 2.24, |
| [test "$BLKID_WIPING" = maybe && BLKID_WIPING=yes], |
| [if test "$BLKID_WIPING" = maybe; then |
| BLKID_WIPING=no |
| else |
| AC_MSG_ERROR([bailing out... blkid library >= 2.24 is required]) |
| fi]) |
| if test "$BLKID_WIPING" = yes; then |
| BLKID_PC="blkid" |
| DEFAULT_USE_BLKID_WIPING=1 |
| AC_DEFINE([BLKID_WIPING_SUPPORT], 1, [Define to 1 to use libblkid detection of signatures when wiping.]) |
| else |
| DEFAULT_USE_BLKID_WIPING=0 |
| fi |
| else |
| DEFAULT_USE_BLKID_WIPING=0 |
| fi |
| AC_DEFINE_UNQUOTED(DEFAULT_USE_BLKID_WIPING, [$DEFAULT_USE_BLKID_WIPING], |
| [Use blkid wiping by default.]) |
| |
| ################################################################################ |
| dnl -- Enable udev-systemd protocol to instantiate a service for background jobs |
| dnl -- Requires systemd version 205 at least (including support for systemd-run) |
| 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=maybe) |
| AC_MSG_RESULT($UDEV_SYSTEMD_BACKGROUND_JOBS) |
| |
| if test "$UDEV_SYSTEMD_BACKGROUND_JOBS" != no; then |
| pkg_config_init |
| PKG_CHECK_MODULES(SYSTEMD, systemd >= 205, |
| [test "$UDEV_SYSTEMD_BACKGROUND_JOBS" = maybe && UDEV_SYSTEMD_BACKGROUND_JOBS=yes], |
| [if test "$UDEV_SYSTEMD_BACKGROUND_JOBS" = maybe; then |
| UDEV_SYSTEMD_BACKGROUND_JOBS=no |
| else |
| AC_MSG_ERROR([bailing out... systemd >= 205 is required]) |
| fi]) |
| fi |
| |
| ################################################################################ |
| 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 "$UDEV_SYNC" = yes; then |
| pkg_config_init |
| PKG_CHECK_MODULES(UDEV, libudev >= 143, [UDEV_PC="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 |
| 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 |
| if test "$UDEV_RULE" != no ; then |
| AC_MSG_CHECKING(whether udev supports built-in blkid) |
| 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) |
| fi |
| |
| ################################################################################ |
| 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) |
| |
| AS_IF([test "$DM_COMPAT" = yes], |
| [AC_DEFINE([DM_COMPAT], 1, [Define to enable compat protocol]) |
| 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.])]) |
| |
| ################################################################################ |
| 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 "$UNITS_COMPAT" = yes; 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-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, |
| AC_HELP_STRING([--disable-o_direct], [disable O_DIRECT]), |
| ODIRECT=$enableval) |
| AC_MSG_RESULT($ODIRECT) |
| |
| if test "$ODIRECT" = yes; 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 "$APPLIB" = yes \ |
| && 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 "$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, |
| AC_HELP_STRING([--enable-dbus-service], [install D-Bus support]), |
| BUILD_LVMDBUSD=$enableval, BUILD_LVMDBUSD=no) |
| AC_MSG_RESULT($BUILD_LVMDBUSD) |
| |
| ################################################################################ |
| 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 default Python applib bindings]), |
| PYTHON_BINDINGS=$enableval, PYTHON_BINDINGS=no) |
| AC_MSG_RESULT($PYTHON_BINDINGS) |
| |
| AC_MSG_CHECKING(whether to build Python2 wrapper for liblvm2app.so) |
| AC_ARG_ENABLE(python2_bindings, |
| AC_HELP_STRING([--enable-python2_bindings], [build Python2 applib bindings]), |
| PYTHON2_BINDINGS=$enableval, PYTHON2_BINDINGS=no) |
| AC_MSG_RESULT($PYTHON2_BINDINGS) |
| |
| |
| AC_MSG_CHECKING(whether to build Python3 wrapper for liblvm2app.so) |
| AC_ARG_ENABLE(python3_bindings, |
| AC_HELP_STRING([--enable-python3_bindings], [build Python3 applib bindings]), |
| PYTHON3_BINDINGS=$enableval, PYTHON3_BINDINGS=no) |
| AC_MSG_RESULT($PYTHON3_BINDINGS) |
| |
| if test "$PYTHON_BINDINGS" = yes; then |
| AC_MSG_ERROR([--enable-python-bindings is replaced by --enable-python2-bindings and --enable-python3-bindings]) |
| fi |
| |
| if test "$PYTHON2_BINDINGS" = yes; then |
| AM_PATH_PYTHON([2]) |
| AC_PATH_TOOL(PYTHON2, python2) |
| test -z "$PYTHON2" && AC_MSG_ERROR([python2 is required for --enable-python2_bindings but cannot be found]) |
| AC_PATH_TOOL(PYTHON2_CONFIG, python2-config) |
| test -z "$PYTHON2_CONFIG" && AC_PATH_TOOL(PYTHON2_CONFIG, python-config) |
| test -z "$PYTHON2_CONFIG" && AC_MSG_ERROR([python headers are required for --enable-python2_bindings but cannot be found]) |
| PYTHON2_INCDIRS=`"$PYTHON2_CONFIG" --includes` |
| PYTHON2_LIBDIRS=`"$PYTHON2_CONFIG" --libs` |
| PYTHON2DIR=$pythondir |
| PYTHON_BINDINGS=yes |
| fi |
| |
| if test "$PYTHON3_BINDINGS" = yes -o "$BUILD_LVMDBUSD" = yes; then |
| unset PYTHON PYTHON_CONFIG |
| 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 |
| AM_PATH_PYTHON([3]) |
| PYTHON3=$PYTHON |
| 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) |
| test -z "$PYTHON3_CONFIG" && AC_MSG_ERROR([python3 headers are required for --enable-python3_bindings or --enable-dbus-service but cannot be found]) |
| PYTHON3_INCDIRS=`"$PYTHON3_CONFIG" --includes` |
| PYTHON3_LIBDIRS=`"$PYTHON3_CONFIG" --libs` |
| PYTHON3DIR=$pythondir |
| PYTHON_BINDINGS=yes |
| fi |
| |
| if test "$BUILD_LVMDBUSD" = yes; then |
| # To get this macro, install autoconf-archive package then run autoreconf |
| AC_PYTHON_MODULE([pyudev], [Required], python3) |
| AC_PYTHON_MODULE([dbus], [Required], python3) |
| fi |
| |
| if test "$PYTHON_BINDINGS" = yes -o "$PYTHON2_BINDINGS" = yes -o "$PYTHON3_BINDINGS" = yes; then |
| test "$APPLIB" != yes && AC_MSG_ERROR([Python_bindings require --enable-applib]) |
| 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 "$DMEVENTD" = yes; then |
| if test "$MIRRORS" != internal; then |
| AC_MSG_ERROR([--enable-dmeventd currently requires --with-mirrors=internal]) |
| fi |
| if test "$CMDLIB" = no; then |
| AC_MSG_ERROR([--enable-dmeventd requires --enable-cmdlib to be used as well]) |
| fi |
| |
| 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 |
| test "$exec_prefix" = NONE -a "$prefix" = NONE && exec_prefix="" |
| |
| ################################################################################ |
| 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 [[ \( "$LVM1" = shared -o "$POOL" = shared -o "$CLUSTER" = shared \ |
| -o "$SNAPSHOTS" = shared -o "$MIRRORS" = shared \ |
| -o "$RAID" = shared -o "$CACHE" = shared \ |
| \) -a "$STATIC_LINK" = yes ]]; then |
| AC_MSG_ERROR([Features cannot be 'shared' when building statically]) |
| fi |
| |
| ################################################################################ |
| 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, |
| AC_HELP_STRING([--disable-selinux], [disable selinux support]), |
| SELINUX=$enableval) |
| AC_MSG_RESULT($SELINUX) |
| |
| ################################################################################ |
| dnl -- Check for selinux |
| if test "$SELINUX" = yes; 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 "$REALTIME" = yes; then |
| AC_CHECK_LIB(rt, clock_gettime, HAVE_REALTIME=yes, HAVE_REALTIME=no) |
| |
| if test "$HAVE_REALTIME" = yes; then |
| AC_DEFINE([HAVE_REALTIME], 1, [Define to 1 to include support for realtime clock.]) |
| LIBS="-lrt $LIBS" |
| RT_LIB="-lrt" |
| else |
| AC_MSG_WARN(Disabling realtime clock) |
| fi |
| fi |
| |
| 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 <sys/stat.h> |
| 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 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 "$INTL" = yes; then |
| # 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, |
| AC_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]) |
| 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_DEFINE_UNQUOTED(DEFAULT_ETC_DIR, ["$CONFDIR"], |
| [Default system configuration directory.]) |
| |
| 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, |
| pkg_config_init |
| pkg_systemdsystemunitdir=$("$PKG_CONFIG" --variable=systemdsystemunitdir systemd)) |
| |
| test -n "$pkg_systemdsystemunitdir" && systemdsystemunitdir=$pkg_systemdsystemunitdir |
| test -z "$systemdsystemunitdir" && systemdsystemunitdir='${exec_prefix}/lib/systemd/system'; |
| |
| systemdutildir=$("$PKG_CONFIG" --variable=systemdutildir systemd) |
| test -z "$systemdutildir" && systemdutildir='${exec_prefix}/lib/systemd'; |
| |
| ################################################################################ |
| 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 "$READLINE" = yes; then |
| AC_CHECK_HEADERS(readline/readline.h readline/history.h,,hard_bailout) |
| fi |
| |
| if test "$BUILD_CMIRRORD" = yes; then |
| AC_CHECK_FUNCS(atexit,,hard_bailout) |
| fi |
| |
| if test "$BUILD_LVMLOCKD" = yes; then |
| AC_CHECK_FUNCS(clock_gettime strtoull,,hard_bailout) |
| fi |
| |
| if test "$BUILD_LVMPOLLD" = yes; then |
| AC_CHECK_FUNCS(strpbrk,,hard_bailout) |
| AC_FUNC_STRERROR_R |
| fi |
| |
| if test "$CLVMD" != none; 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,,hard_bailout) |
| AC_FUNC_GETMNTENT |
| AC_FUNC_SELECT_ARGTYPES |
| fi |
| |
| if test "$CLUSTER" != none; then |
| AC_CHECK_HEADERS(sys/socket.h sys/un.h,,hard_bailout) |
| AC_CHECK_FUNCS(socket,,hard_bailout) |
| fi |
| |
| if test "$DMEVENTD" = yes; then |
| AC_CHECK_HEADERS(arpa/inet.h,,hard_bailout) |
| fi |
| |
| if test "$HAVE_LIBDL" = yes; then |
| AC_CHECK_HEADERS(dlfcn.h,,hard_bailout) |
| fi |
| |
| if test "$INTL" = yes; then |
| AC_CHECK_HEADERS(libintl.h,,hard_bailout) |
| fi |
| |
| if test "$UDEV_SYNC" = yes; then |
| AC_CHECK_HEADERS(sys/ipc.h sys/sem.h,,hard_bailout) |
| fi |
| |
| ################################################################################ |
| AC_PATH_TOOL(MODPROBE_CMD, modprobe) |
| |
| if test -n "$MODPROBE_CMD"; 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.]) |
| |
| clvmd_prefix=$ac_default_prefix |
| test "$prefix" != NONE && clvmd_prefix=$prefix |
| CLVMD_PATH="$clvmd_prefix/sbin/clvmd" |
| AC_DEFINE_UNQUOTED(CLVMD_PATH, ["$CLVMD_PATH"], [Path to clvmd binary.]) |
| |
| ################################################################################ |
| 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 [autodetect_lock_dir/lvm]]), |
| DEFAULT_LOCK_DIR=$withval, |
| [AC_MSG_CHECKING(for default lock directory) |
| DEFAULT_LOCK_DIR="$RUN_DIR/lock/lvm" |
| test -d "$RUN_DIR/lock" || DEFAULT_LOCK_DIR="/var/lock/lvm" |
| AC_MSG_RESULT($DEFAULT_LOCK_DIR)]) |
| 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) |
| 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=`cat "$srcdir"/VERSION_DM | $AWK -F '[[-. ]]' '{printf "%s.%s.%s",$1,$2,$3}'` |
| |
| 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_SUBST(APPLIB) |
| AC_SUBST(AWK) |
| AC_SUBST(BLKID_PC) |
| AC_SUBST(BUILD_CMIRRORD) |
| AC_SUBST(BUILD_DMEVENTD) |
| AC_SUBST(BUILD_LVMDBUSD) |
| AC_SUBST(BUILD_LVMETAD) |
| AC_SUBST(BUILD_LVMPOLLD) |
| AC_SUBST(BUILD_LVMLOCKD) |
| AC_SUBST(BUILD_LOCKDSANLOCK) |
| AC_SUBST(BUILD_LOCKDDLM) |
| AC_SUBST(BUILD_NOTIFYDBUS) |
| AC_SUBST(CACHE) |
| AC_SUBST(CFLAGS) |
| AC_SUBST(CFLOW_CMD) |
| AC_SUBST(CHMOD) |
| 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_ARCHIVE_SUBDIR) |
| AC_SUBST(DEFAULT_BACKUP_SUBDIR) |
| AC_SUBST(DEFAULT_CACHE_SUBDIR) |
| AC_SUBST(DEFAULT_DATA_ALIGNMENT) |
| AC_SUBST(DEFAULT_DM_RUN_DIR) |
| AC_SUBST(DEFAULT_LOCK_DIR) |
| AC_SUBST(DEFAULT_FALLBACK_TO_LVM1) |
| 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_USE_BLKID_WIPING) |
| AC_SUBST(DEFAULT_USE_LVMETAD) |
| AC_SUBST(DEFAULT_USE_LVMPOLLD) |
| AC_SUBST(DEFAULT_USE_LVMLOCKD) |
| 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_LIB_PATCHLEVEL) |
| AC_SUBST(ELDFLAGS) |
| AC_SUBST(FSADM) |
| AC_SUBST(BLKDEACTIVATE) |
| AC_SUBST(HAVE_LIBDL) |
| AC_SUBST(HAVE_REALTIME) |
| AC_SUBST(HAVE_VALGRIND) |
| AC_SUBST(INTL) |
| AC_SUBST(JOBS) |
| AC_SUBST(LDDEPS) |
| AC_SUBST(LIBS) |
| AC_SUBST(LIB_SUFFIX) |
| 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(localedir) |
| AC_SUBST(MANGLING) |
| AC_SUBST(MIRRORS) |
| AC_SUBST(MSGFMT) |
| AC_SUBST(OCF) |
| AC_SUBST(OCFDIR) |
| AC_SUBST(PKGCONFIG) |
| AC_SUBST(POOL) |
| AC_SUBST(M_LIBS) |
| AC_SUBST(PTHREAD_LIBS) |
| AC_SUBST(PYTHON2) |
| AC_SUBST(PYTHON3) |
| AC_SUBST(PYTHON_BINDINGS) |
| AC_SUBST(PYTHON2_BINDINGS) |
| AC_SUBST(PYTHON3_BINDINGS) |
| AC_SUBST(PYTHON2_INCDIRS) |
| AC_SUBST(PYTHON3_INCDIRS) |
| AC_SUBST(PYTHON2_LIBDIRS) |
| AC_SUBST(PYTHON3_LIBDIRS) |
| AC_SUBST(PYTHON2DIR) |
| AC_SUBST(PYTHON3DIR) |
| AC_SUBST(QUORUM_CFLAGS) |
| AC_SUBST(QUORUM_LIBS) |
| AC_SUBST(RAID) |
| AC_SUBST(RT_LIB) |
| 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(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(CACHE_CHECK_CMD) |
| AC_SUBST(CACHE_DUMP_CMD) |
| AC_SUBST(CACHE_REPAIR_CMD) |
| AC_SUBST(CACHE_RESTORE_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(USE_TRACKING) |
| AC_SUBST(VALGRIND_POOL) |
| AC_SUBST(WRITE_INSTALL) |
| AC_SUBST(DMEVENTD_PIDFILE) |
| AC_SUBST(LVMETAD_PIDFILE) |
| AC_SUBST(LVMPOLLD_PIDFILE) |
| AC_SUBST(LVMLOCKD_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/lvmdbusd/Makefile |
| daemons/lvmdbusd/path.py |
| daemons/lvmetad/Makefile |
| 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/.symlinks |
| include/Makefile |
| lib/Makefile |
| lib/format1/Makefile |
| lib/format_pool/Makefile |
| lib/locking/Makefile |
| lib/mirror/Makefile |
| lib/replicator/Makefile |
| include/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/clvmd_init_red_hat |
| 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_cluster_activation_red_hat.sh |
| scripts/lvm2_cluster_activation_systemd_red_hat.service |
| scripts/lvm2_clvmd_systemd_red_hat.service |
| scripts/lvm2_cmirrord_systemd_red_hat.service |
| scripts/lvm2_lvmdbusd_systemd_red_hat.service |
| scripts/lvm2_lvmetad_init_red_hat |
| scripts/lvm2_lvmetad_systemd_red_hat.service |
| scripts/lvm2_lvmetad_systemd_red_hat.socket |
| scripts/lvm2_lvmpolld_init_red_hat |
| scripts/lvm2_lvmpolld_systemd_red_hat.service |
| scripts/lvm2_lvmpolld_systemd_red_hat.socket |
| scripts/lvm2_lvmlockd_systemd_red_hat.service |
| scripts/lvm2_lvmlocking_systemd_red_hat.service |
| scripts/lvm2_monitoring_init_red_hat |
| scripts/lvm2_monitoring_systemd_red_hat.service |
| scripts/lvm2_pvscan_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 |
| |
| 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 thin_check vsn 0.3.2 (or later) to use 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 "$ODIRECT" != yes], |
| [AC_MSG_WARN([O_DIRECT disabled: low-memory pvmove may lock up])]) |