+# LB_PATH_LUSTREIOKIT
+#
+# Handle internal/external lustre-iokit
+#
+AC_DEFUN([LB_PATH_LUSTREIOKIT],
+[AC_ARG_WITH([lustre-iokit],
+ AC_HELP_STRING([--with-lustre-iokit=path],
+ [set path to lustre-iokit source (default is included lustre-iokit)]),
+ [],[
+ with_lustre_iokit='yes'
+ ])
+AC_MSG_CHECKING([location of lustre-iokit])
+enable_lustre_iokit="$with_lustre_iokit"
+case x$with_lustre_iokit in
+ xyes)
+ AC_MSG_RESULT([internal])
+ LB_CHECK_FILE([$srcdir/lustre-iokit/ior-survey/ior-survey],[],[
+ AC_MSG_ERROR([A complete internal lustre-iokit was not found.])
+ ])
+ LUSTREIOKIT_SUBDIR="lustre-iokit"
+ LUSTREIOKIT="$PWD/lustre-iokit"
+ ;;
+ xno)
+ AC_MSG_RESULT([disabled])
+ ;;
+ *)
+ AC_MSG_RESULT([$with_lustre_iokit])
+ LB_CHECK_FILE([$with_lustre_iokit/ior-survey/ior_survey],[],[
+ AC_MSG_ERROR([A complete (built) external lustre-iokit was not found.])
+ ])
+ LUSTREIOKIT="$with_lustre_iokit"
+ with_lustre_iokit="yes"
+ ;;
+esac
+AC_SUBST(LUSTREIOKIT_SUBDIR)
+# We have to configure even if we don't build here for make dist to work
+AC_CONFIG_SUBDIRS(lustre-iokit)
+])
+
+#
+# LB_PATH_LDISKFS
+#
+# Handle internal/external ldiskfs
+#
+AC_DEFUN([LB_PATH_LDISKFS],
+[AC_ARG_WITH([ldiskfs],
+ AC_HELP_STRING([--with-ldiskfs=path],
+ [set path to ldiskfs source (default is included ldiskfs)]),
+ [],[
+ if test x$linux25$enable_server = xyesyes ; then
+ with_ldiskfs=yes
+ else
+ with_ldiskfs=no
+ fi
+ ])
+AC_ARG_WITH([ldiskfs-inkernel],
+ AC_HELP_STRING([--with-ldiskfs-inkernel],
+ [use ldiskfs built in to the kernel]),
+ [with_ldiskfs=inkernel], [])
+AC_MSG_CHECKING([location of ldiskfs])
+case x$with_ldiskfs in
+ xyes)
+ AC_MSG_RESULT([internal])
+ LB_CHECK_FILE([$srcdir/ldiskfs/lustre-ldiskfs.spec.in],[],[
+ AC_MSG_ERROR([A complete internal ldiskfs was not found.])
+ ])
+ LDISKFS_SUBDIR="ldiskfs"
+ LDISKFS_DIR="$PWD/ldiskfs"
+ ;;
+ xno)
+ AC_MSG_RESULT([disabled])
+ ;;
+ xinkernel)
+ AC_MSG_RESULT([inkernel])
+ LB_CHECK_FILE([$LINUX/fs/ldiskfs/inode.c],[],[
+ AC_MSG_ERROR([ldiskfs was not found in $LINUX/fs/ldiskfs/inode.c])
+ ])
+ ;;
+ *)
+ AC_MSG_RESULT([$with_ldiskfs])
+ LB_CHECK_FILE([$with_ldiskfs/ldiskfs/inode.c],[],[
+ AC_MSG_ERROR([A complete (built) external ldiskfs was not found.])
+ ])
+ LDISKFS_DIR=$with_ldiskfs
+ ;;
+esac
+AC_SUBST(LDISKFS_DIR)
+AC_SUBST(LDISKFS_SUBDIR)
+AM_CONDITIONAL(LDISKFS_ENABLED, test x$with_ldiskfs != xno)
+AM_CONDITIONAL(LDISKFS_IN_KERNEL, test x$with_ldiskfs = xinkernel)
+
+if test x$enable_ext4 = xyes ; then
+ AC_DEFINE(HAVE_EXT4_LDISKFS, 1, [build ext4 based ldiskfs])
+fi
+
+# We have to configure even if we don't build here for make dist to work
+AC_CONFIG_SUBDIRS(ldiskfs)
+])
+
+AC_DEFUN([LC_KERNEL_WITH_EXT4],
+[if test -f $LINUX/fs/ext4/ext4.h ; then
+$1
+else
+$2
+fi
+])
+
+#
+# LB_HAVE_EXT4_ENABLED
+#
+AC_DEFUN([LB_HAVE_EXT4_ENABLED],
+[
+if test x$RHEL_KERNEL = xyes; then
+ AC_ARG_ENABLE([ext4],
+ AC_HELP_STRING([--enable-ext4],
+ [enable building of ldiskfs based on ext4]),
+ [],
+ [
+ if test x$ldiskfs_is_ext4 = xyes; then
+ enable_ext4=yes
+ else
+ enable_ext4=no
+ fi
+ ])
+else
+ case $LINUXRELEASE in
+ # ext4 was in 2.6.22-2.6.26 but not stable enough to use
+ 2.6.2[[0-9]]*) enable_ext4='no' ;;
+ *) LC_KERNEL_WITH_EXT4([enable_ext4='yes'],
+ [enable_ext4='no']) ;;
+ esac
+fi
+if test x$enable_ext4 = xyes; then
+ ac_configure_args="$ac_configure_args --enable-ext4"
+fi
+AC_MSG_CHECKING([whether to build ldiskfs based on ext4])
+AC_MSG_RESULT([$enable_ext4])
+])
+
+# Define no libcfs by default.
+AC_DEFUN([LB_LIBCFS_DIR],
+[
+case x$libcfs_is_module in
+ xyes)
+ LIBCFS_INCLUDE_DIR="libcfs/include"
+ LIBCFS_SUBDIR="libcfs"
+ ;;
+ x*)
+ LIBCFS_INCLUDE_DIR="lnet/include"
+ LIBCFS_SUBDIR=""
+ ;;
+esac
+AC_SUBST(LIBCFS_SUBDIR)
+AC_SUBST(LIBCFS_INCLUDE_DIR)
+])
+
+#
+# LB_DEFINE_LDISKFS_OPTIONS
+#
+# Enable config options related to ldiskfs. These are used both by ldiskfs
+# and lvfs (which includes ldiskfs headers.)
+#
+AC_DEFUN([LB_DEFINE_LDISKFS_OPTIONS],
+[
+ AC_DEFINE(CONFIG_LDISKFS_FS_MODULE, 1, [build ldiskfs as a module])
+ AC_DEFINE(CONFIG_LDISKFS_FS_XATTR, 1, [enable extended attributes for ldiskfs])
+ AC_DEFINE(CONFIG_LDISKFS_FS_POSIX_ACL, 1, [enable posix acls for ldiskfs])
+ AC_DEFINE(CONFIG_LDISKFS_FS_SECURITY, 1, [enable fs security for ldiskfs])
+ AC_DEFINE(CONFIG_LDISKFSDEV_FS_POSIX_ACL, 1, [enable posix acls for ldiskfs])
+ AC_DEFINE(CONFIG_LDISKFSDEV_FS_XATTR, 1, [enable extented attributes for ldiskfs])
+ AC_DEFINE(CONFIG_LDISKFSDEV_FS_SECURITY, 1, [enable fs security for ldiskfs])
+])
+
+#
+# LB_DEFINE_E2FSPROGS_NAMES
+#
+# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package.
+#
+AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES],
+[AC_ARG_WITH([ldiskfsprogs],
+ AC_HELP_STRING([--with-ldiskfsprogs],
+ [use alternate names for ldiskfs-enabled e2fsprogs]),
+ [],[withval='no'])
+
+AC_MSG_CHECKING([whether to use alternate names for e2fsprogs])
+if test x$withval = xyes ; then
+ AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package])
+ E2FSPROGS="ldiskfsprogs"
+ MKE2FS="mkfs.ldiskfs"
+ DEBUGFS="debugfs.ldiskfs"
+ TUNE2FS="tunefs.ldiskfs"
+ E2LABEL="label.ldiskfs"
+ DUMPE2FS="dumpfs.ldiskfs"
+ E2FSCK="fsck.ldiskfs"
+ AC_MSG_RESULT([enabled])
+else
+ E2FSPROGS="e2fsprogs"
+ MKE2FS="mke2fs"
+ DEBUGFS="debugfs"
+ TUNE2FS="tune2fs"
+ E2LABEL="e2label"
+ DUMPE2FS="dumpe2fs"
+ E2FSCK="e2fsck"
+ AC_MSG_RESULT([disabled])
+fi
+ AC_DEFINE_UNQUOTED(E2FSPROGS, "$E2FSPROGS", [name of ldiskfs e2fsprogs package])
+ AC_DEFINE_UNQUOTED(MKE2FS, "$MKE2FS", [name of ldiskfs mkfs program])
+ AC_DEFINE_UNQUOTED(DEBUGFS, "$DEBUGFS", [name of ldiskfs debug program])
+ AC_DEFINE_UNQUOTED(TUNE2FS, "$TUNE2FS", [name of ldiskfs tune program])
+ AC_DEFINE_UNQUOTED(E2LABEL, "$E2LABEL", [name of ldiskfs label program])
+ AC_DEFINE_UNQUOTED(DUMPE2FS,"$DUMPE2FS", [name of ldiskfs dump program])
+ AC_DEFINE_UNQUOTED(E2FSCK, "$E2FSCK", [name of ldiskfs fsck program])
+])
+
+#