-AC_DEFUN([LDISKFS_LINUX_SERIES],
-[
+#
+# LDISKFS_LINUX_SERIES
+#
+AC_DEFUN([LDISKFS_LINUX_SERIES], [
LDISKFS_SERIES=
AC_MSG_CHECKING([which ldiskfs series to use])
-
-SER=
AS_IF([test x$RHEL_KERNEL = xyes], [
AS_VERSION_COMPARE([$RHEL_KERNEL_VERSION],[2.6.32-431],[
AS_VERSION_COMPARE([$RHEL_KERNEL_VERSION],[2.6.32-343],[
AS_VERSION_COMPARE([$RHEL_KERNEL_VERSION],[2.6.32],[],
- [SER="2.6-rhel6.series"],[SER="2.6-rhel6.series"])],
- [SER="2.6-rhel6.4.series"],[SER="2.6-rhel6.4.series"])],
- [SER="2.6-rhel6.5.series"],[SER="2.6-rhel6.5.series"])
+ [LDISKFS_SERIES="2.6-rhel6.series"], [LDISKFS_SERIES="2.6-rhel6.series"])],
+ [LDISKFS_SERIES="2.6-rhel6.4.series"],[LDISKFS_SERIES="2.6-rhel6.4.series"])],
+ [LDISKFS_SERIES="2.6-rhel6.5.series"],[LDISKFS_SERIES="2.6-rhel6.5.series"])
], [test x$SUSE_KERNEL = xyes], [
AS_VERSION_COMPARE([$LINUXRELEASE],[3.0.0],[
- AS_VERSION_COMPARE([$LINUXRELEASE],[2.6.32],[],
- [SER="2.6-sles11.series"],[SER="2.6-sles11.series"])],
- [SER="3.0-sles11.series"],[
+ AS_VERSION_COMPARE([$LINUXRELEASE],[2.6.32], [],
+ [LDISKFS_SERIES="2.6-sles11.series"],[LDISKFS_SERIES="2.6-sles11.series"])],
+ [LDISKFS_SERIES="3.0-sles11.series"],[
PLEV=$(grep PATCHLEVEL /etc/SuSE-release | sed -e 's/.*= *//')
case $PLEV in
- 2) SER="3.0-sles11.series"
+ 2) LDISKFS_SERIES="3.0-sles11.series"
;;
- 3) SER="3.0-sles11sp3.series"
+ 3) LDISKFS_SERIES="3.0-sles11sp3.series"
;;
esac
])
])
-LDISKFS_SERIES=$SER
-
AS_IF([test -z "$LDISKFS_SERIES"],
[AC_MSG_WARN([Unknown kernel version $LDISKFS_VERSIONRELEASE])])
AC_MSG_RESULT([$LDISKFS_SERIES])
-
AC_SUBST(LDISKFS_SERIES)
-])
+]) # LDISKFS_LINUX_SERIES
#
+# LB_EXT_FREE_BLOCKS_WITH_BUFFER_HEAD
+#
# 2.6.32-rc7 ext4_free_blocks requires struct buffer_head
#
-AC_DEFUN([LB_EXT_FREE_BLOCKS_WITH_BUFFER_HEAD],
-[AC_MSG_CHECKING([if ext4_free_blocks needs struct buffer_head])
- LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LB_EXT_FREE_BLOCKS_WITH_BUFFER_HEAD], [
+LB_CHECK_COMPILE([if 'ext4_free_blocks' needs 'struct buffer_head'],
+ext4_free_blocks_with_buffer_head, [
#include <linux/fs.h>
#include "$EXT4_SRC_DIR/ext4.h"
],[
ext4_free_blocks(NULL, NULL, NULL, 0, 0, 0);
],[
- AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_EXT_FREE_BLOCK_WITH_BUFFER_HEAD, 1,
- [ext4_free_blocks do not require struct buffer_head])
-],[
- AC_MSG_RESULT([no])
-])
+ [ext4_free_blocks do not require struct buffer_head])
])
+]) # LB_EXT_FREE_BLOCKS_WITH_BUFFER_HEAD
#
+# LB_EXT_PBLOCK
+#
# 2.6.35 renamed ext_pblock to ext4_ext_pblock(ex)
#
-AC_DEFUN([LB_EXT_PBLOCK],
-[AC_MSG_CHECKING([if kernel has ext_pblocks])
- LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LB_EXT_PBLOCK], [
+LB_CHECK_COMPILE([if Linux kernel has 'ext_pblock'],
+ext_pblock, [
#include <linux/fs.h>
#include "$EXT4_SRC_DIR/ext4_extents.h"
],[
ext_pblock(NULL);
],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_EXT_PBLOCK, 1,
- [kernel has ext_pblocks])
-],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_EXT_PBLOCK, 1, [Linux kernel has ext_pblock])
])
+]) # LB_EXT_PBLOCK
#
# LDISKFS_AC_PATCH_PROGRAM
AC_MSG_ERROR([*** Need "quilt" or "patch" command])
])
])
-])
+]) # LDISKFS_AC_PATCH_PROGRAM
#
-# LB_CONDITIONAL_LDISKFS
+# LB_CONFIG_LDISKFS
#
-AC_DEFUN([LB_CONFIG_LDISKFS],
-[
+AC_DEFUN([LB_CONFIG_LDISKFS], [
# --with-ldiskfs is deprecated now that ldiskfs is fully merged with lustre.
# However we continue to support this option through Lustre 2.5.
AC_ARG_WITH([ldiskfs],
The ldiskfs option is deprecated,
and no longer supports paths to external ldiskfs source
])])
- ]
-)
+])
AC_ARG_ENABLE([ldiskfs],
[AS_HELP_STRING([--disable-ldiskfs],
[AS_IF([test "${with_ldiskfs+set}" = set],
[enable_ldiskfs=$with_ldiskfs],
[enable_ldiskfs=maybe])
- ]
-)
+])
AS_IF([test x$enable_server = xno],
[AS_CASE([$enable_ldiskfs],
[maybe], [enable_ldiskfs=no],
[yes], [AC_MSG_ERROR([cannot build ldiskfs when servers are disabled])]
- )]
-)
+ )])
AS_IF([test x$enable_ldiskfs != xno],[
# In the future, we chould change enable_ldiskfs from maybe to
AC_MSG_RESULT([$enable_ldiskfs])
AM_CONDITIONAL([LDISKFS_ENABLED], [test x$enable_ldiskfs = xyes])
-])
+]) # LB_CONFIG_LDISKFS
#
# LB_VALIDATE_EXT4_SRC_DIR
# Detecting this at configure time allows us to avoid a potential build
# failure and provide a useful error message to explain what is wrong.
#
-AC_DEFUN([LB_VALIDATE_EXT4_SRC_DIR],
-[
-if test x$EXT4_SRC_DIR = x; then
- enable_ldiskfs_build='no'
-else
+AC_DEFUN([LB_VALIDATE_EXT4_SRC_DIR], [
+enable_ldiskfs_build="no"
+AS_IF([test -n "$EXT4_SRC_DIR"], [
+ enable_ldiskfs_build="yes"
LB_CHECK_FILE([$EXT4_SRC_DIR/dir.c], [], [
- enable_ldiskfs_build='no'
- AC_MSG_WARN([ext4 must exist for ldiskfs build])])
+ enable_ldiskfs_build="no"
+ AC_MSG_WARN([ext4 must exist for ldiskfs build])
+ ])
LB_CHECK_FILE([$EXT4_SRC_DIR/file.c], [], [
- enable_ldiskfs_build='no'
- AC_MSG_WARN([ext4 must exist for ldiskfs build])])
+ enable_ldiskfs_build="no"
+ AC_MSG_WARN([ext4 must exist for ldiskfs build])
+ ])
LB_CHECK_FILE([$EXT4_SRC_DIR/inode.c], [], [
- enable_ldiskfs_build='no'
- AC_MSG_WARN([ext4 must exist for ldiskfs build])])
+ enable_ldiskfs_build="no"
+ AC_MSG_WARN([ext4 must exist for ldiskfs build])
+ ])
LB_CHECK_FILE([$EXT4_SRC_DIR/super.c], [], [
- enable_ldiskfs_build='no'
- AC_MSG_WARN([ext4 must exist for ldiskfs build])])
-fi
+ enable_ldiskfs_build="no"
+ AC_MSG_WARN([ext4 must exist for ldiskfs build])
+ ])
+])
-if test x$enable_ldiskfs_build = xno; then
- enable_ldiskfs='no'
+AS_IF([test "x$enable_ldiskfs_build" = xno], [
+ enable_ldiskfs="no"
AC_MSG_WARN([
server support then ensure that the matching kernel-debuginfo-common
and kernel-debuginfo-common-<arch> packages are installed.
])
-
-fi
])
+]) # LB_VALIDATE_EXT4_SRC_DIR
#
# LB_EXT4_SRC_DIR
# Determine the location of the ext4 source code. It it required
# for several configure tests and to build ldiskfs.
#
-AC_DEFUN([LB_EXT4_SRC_DIR],
-[
+AC_DEFUN([LB_EXT4_SRC_DIR], [
+AC_MSG_CHECKING([ext4 source directory])
# Kernel ext source located with devel headers
linux_src=$LINUX
-if test -e "$linux_src/fs/ext4/super.c"; then
- EXT4_SRC_DIR=$linux_src/fs/ext4
-else
+AS_IF([test -e "$linux_src/fs/ext4/super.c"], [
+ EXT4_SRC_DIR="$linux_src/fs/ext4"
+], [
# Kernel ext source provided by kernel-debuginfo-common package
linux_src=$(ls -1d /usr/src/debug/*/linux-$LINUXRELEASE \
2>/dev/null | tail -1)
- if test -e "$linux_src/fs/ext4/super.c"; then
- EXT4_SRC_DIR=$linux_src/fs/ext4
- else
- EXT4_SRC_DIR=
- fi
-fi
-
-AC_MSG_CHECKING([ext4 source directory])
+ AS_IF([test -e "$linux_src/fs/ext4/super.c"],
+ [EXT4_SRC_DIR="$linux_src/fs/ext4"],
+ [EXT4_SRC_DIR=""])
+])
AC_MSG_RESULT([$EXT4_SRC_DIR])
AC_SUBST(EXT4_SRC_DIR)
LB_VALIDATE_EXT4_SRC_DIR
-])
+]) # LB_EXT4_SRC_DIR
#
# LB_DEFINE_E2FSPROGS_NAMES
#
# Enable the use of alternate naming of ldiskfs-enabled e2fsprogs package.
#
-AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES],
-[
+AC_DEFUN([LB_DEFINE_E2FSPROGS_NAMES], [
+AC_MSG_CHECKING([whether to use alternate names for e2fsprogs])
AC_ARG_WITH([ldiskfsprogs],
- AC_HELP_STRING([--with-ldiskfsprogs],
- [use alternate names for ldiskfs-enabled e2fsprogs]),
- [],[withval='no'])
+ 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
+AS_IF([test "x$withval" = xyes], [
+ AC_MSG_RESULT([enabled])
AC_DEFINE(HAVE_LDISKFSPROGS, 1, [enable use of ldiskfsprogs package])
E2FSPROGS="ldiskfsprogs"
MKE2FS="mkfs.ldiskfs"
DUMPE2FS="dumpfs.ldiskfs"
E2FSCK="fsck.ldiskfs"
PFSCK="pfsck.ldiskfs"
- AC_MSG_RESULT([enabled])
-else
+], [
+ AC_MSG_RESULT([disabled])
E2FSPROGS="e2fsprogs"
MKE2FS="mke2fs"
DEBUGFS="debugfs"
DUMPE2FS="dumpe2fs"
E2FSCK="e2fsck"
PFSCK="fsck"
- 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_SUBST([DUMPE2FS], [$DUMPE2FS])
AC_SUBST([E2FSCK], [$E2FSCK])
AC_SUBST([PFSCK], [$PFSCK])
-])
+]) # LB_DEFINE_E2FSPROGS_NAMES
#
# Set things accordingly for a linux kernel
#
-AC_DEFUN([LB_LINUX_VERSION],[
+AC_DEFUN([LB_LINUX_VERSION], [
KMODEXT=".ko"
+AC_SUBST(KMODEXT)
-MODULE_TARGET="SUBDIRS"
makerule="$PWD/build"
-AC_MSG_CHECKING([for external module build support])
+AC_CACHE_CHECK([for external module build target], lb_cv_module_target, [
+lb_cv_module_target=""
+MODULE_TARGET="SUBDIRS"
rm -f build/conftest.i
-LB_LINUX_TRY_MAKE([],[],
+LB_LINUX_TRY_MAKE([], [],
[$makerule LUSTRE_KERNEL_TEST=conftest.i],
[test -s build/conftest.i],
- [
- AC_MSG_RESULT([no])
- ],[
- makerule="_module_$makerule"
+ [lb_cv_module_target="SUBDIRS"], [
MODULE_TARGET="M"
- LB_LINUX_TRY_MAKE([],[],
+ makerule="_module_$PWD/build"
+ LB_LINUX_TRY_MAKE([], [],
[$makerule LUSTRE_KERNEL_TEST=conftest.i],
[test -s build/conftest.i],
- [
- AC_MSG_RESULT([yes])
- ],[
+ [lb_cv_module_target="M"], [
AC_MSG_ERROR([unknown; check config.log for details])
])
])
-
+])
+AS_IF([test -z "$lb_cv_module_target"],
+ [AC_MSG_ERROR([unknown external module build target])],
+[test "x$lb_cv_module_target" = "xM"],
+ [makerule="_module_$PWD/build"])
+MODULE_TARGET=$lb_cv_module_target
AC_SUBST(MODULE_TARGET)
-AC_SUBST(KMODEXT)
])
#
# Determine the Linux kernel version string from the utsrelease
#
AC_DEFUN([LB_LINUX_UTSRELEASE], [
- AC_MSG_CHECKING([kernel source version])
-
- utsrelease1=${LINUX_OBJ}/include/generated/utsrelease.h
- utsrelease2=${LINUX_OBJ}/include/linux/utsrelease.h
- utsrelease3=${LINUX_OBJ}/include/linux/version.h
- AS_IF([test -r ${utsrelease1} && fgrep -q UTS_RELEASE ${utsrelease1}], [
- utsrelease=${utsrelease1}
- ], [test -r ${utsrelease2} && fgrep -q UTS_RELEASE ${utsrelease2}], [
- utsrelease=${utsrelease2}
- ], [test -r ${utsrelease3} && fgrep -q UTS_RELEASE ${utsrelease3}], [
- utsrelease=${utsrelease3}
- ])
-
- AS_IF([test ! -z "${utsrelease}"], [
- UTS_RELEASE=$(awk -F \" '/ UTS_RELEASE / { print [$]2 }' \
- ${utsrelease})
- AS_IF([test -z "$UTS_RELEASE"], [
- AC_MSG_RESULT([Not found])
- AC_MSG_ERROR([Cannot determine kernel version.])
- ])
- ], [
- AC_MSG_RESULT([Not found])
- AC_MSG_ERROR([
+AC_CACHE_CHECK([for Linux kernel utsrelease], lb_cv_utsrelease, [
+lb_cv_utsrelease=""
+utsrelease1=$LINUX_OBJ/include/generated/utsrelease.h
+utsrelease2=$LINUX_OBJ/include/linux/utsrelease.h
+utsrelease3=$LINUX_OBJ/include/linux/version.h
+AS_IF([test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1],
+ [utsrelease=$utsrelease1],
+[test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2],
+ [utsrelease=$utsrelease2],
+[test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3],
+ [utsrelease=$utsrelease3])
+AS_IF([test -n "$utsrelease"],
+ [lb_cv_utsrelease=$(awk -F \" '/ UTS_RELEASE / { print [$]2 }' $utsrelease)],
+ [AC_MSG_ERROR([
Cannot find UTS_RELEASE definition.
This is often provided by the kernel-devel package.
])
])
-
- AC_MSG_RESULT([${UTS_RELEASE}])
-
- LINUX_VERSION=${UTS_RELEASE}
- AC_SUBST(LINUX_VERSION)
- LINUXRELEASE=${UTS_RELEASE}
- AC_SUBST(LINUXRELEASE)
])
-
+AS_IF([test -z "$lb_cv_utsrelease"],
+ [AC_MSG_ERROR([Cannot determine Linux kernel version.])])
+LINUXRELEASE=$lb_cv_utsrelease
+AC_SUBST(LINUXRELEASE)
+])
#
# LB_LINUX_RELEASE
#
# get the release version of linux
#
-AC_DEFUN([LB_LINUX_RELEASE],
-[
+AC_DEFUN([LB_LINUX_RELEASE], [
LB_LINUX_UTSRELEASE
# ------------ RELEASE --------------------------------
AC_MSG_CHECKING([for Lustre release])
AC_ARG_WITH([release],
AC_HELP_STRING([--with-release=string],
- [set the release string (default=$kvers_YYYYMMDDhhmm)]),
- [RELEASE=$withval],[
+ [set the release string (default=$kvers_YYYYMMDDhhmm)]),
+ [RELEASE=$withval], [
RELEASE=""
- if test -n "$DOWNSTREAM_RELEASE"; then
- RELEASE="${DOWNSTREAM_RELEASE}_"
- fi
- RELEASE="$RELEASE`echo ${LINUXRELEASE} | tr '-' '_'`_$BUILDID"])
+ AS_IF([test "$DOWNSTREAM_RELEASE"], [RELEASE="${DOWNSTREAM_RELEASE}_"])
+ RELEASE="$RELEASE$(echo $LINUXRELEASE | tr '-' '_')_$BUILDID"])
AC_MSG_RESULT($RELEASE)
AC_SUBST(RELEASE)
# check if the kernel is one from RHEL or SUSE
-AC_MSG_CHECKING([for RedHat kernel version])
- AS_IF([fgrep -q RHEL_RELEASE ${LINUX_OBJ}/include/$VERSION_HDIR/version.h], [
- RHEL_KERNEL="yes"
- RHEL_RELEASE=$(expr 0$(awk -F \" '/ RHEL_RELEASE / { print [$]2 }' \
- ${LINUX_OBJ}/include/$VERSION_HDIR/version.h) + 1)
- KERNEL_VERSION=$(sed -e 's/\(@<:@23@:>@\.@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/' <<< ${LINUXRELEASE})
- RHEL_KERNEL_VERSION=${KERNEL_VERSION}-${RHEL_RELEASE}
- AC_SUBST(RHEL_KERNEL_VERSION)
- AC_MSG_RESULT([${RHEL_KERNEL_VERSION}])
- ], [
- AC_MSG_RESULT([not found])
- LB_LINUX_CONFIG([SUSE_KERNEL],[SUSE_KERNEL="yes"],[])
- ])
+AC_CACHE_CHECK([for RedHat kernel version], lb_cv_rhel_kernel_version, [
+lb_cv_rhel_kernel_version=""
+AS_IF([fgrep -q RHEL_RELEASE $LINUX_OBJ/include/$VERSION_HDIR/version.h],
+ [RHEL_RELEASE=$(expr 0$(awk -F \" '/ RHEL_RELEASE / { print [$]2 }' \
+ $LINUX_OBJ/include/$VERSION_HDIR/version.h) + 1)
+ KERNEL_VERSION=$(sed -e 's/\(@<:@23@:>@\.@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/' <<< $LINUXRELEASE)
+ lb_cv_rhel_kernel_version=${KERNEL_VERSION}-${RHEL_RELEASE}])
+])
+AS_IF([test -n "$lb_cv_rhel_kernel_version"], [
+ RHEL_KERNEL="yes"
+ RHEL_KERNEL_VERSION=$lb_cv_rhel_kernel_version
+], [
+ RHEL_KERNEL="no"
+ LB_CHECK_CONFIG([SUSE_KERNEL], [SUSE_KERNEL="yes"], [SUSE_KERNEL="no"])
+])
-AC_MSG_CHECKING([for kernel module package directory])
+AC_MSG_CHECKING([for Linux kernel module package directory])
AC_ARG_WITH([kmp-moddir],
AC_HELP_STRING([--with-kmp-moddir=string],
- [set the kmod updates or extra directory]),
+ [set the kmod updates or extra directory]),
[KMP_MODDIR=$withval],[
AS_IF([test x$RHEL_KERNEL = xyes], [KMP_MODDIR="extra"],
[test x$SUSE_KERNEL = xyes], [KMP_MODDIR="updates"])])
-
AC_MSG_RESULT($KMP_MODDIR)
AC_SUBST(KMP_MODDIR)
modulenetdir='$(moduledir)/net/$(PACKAGE)'
AC_SUBST(modulenetdir)
+])
+
+#
+# LB_LINUX_SYMVERFILE
+#
+# SLES 9 uses a different name for this file - unsure about vanilla kernels
+# around this version, but it matters for servers only.
+AC_DEFUN([LB_LINUX_SYMVERFILE], [
+AC_CACHE_CHECK([for the name of module symbol version file], lb_cv_module_symvers, [
+AS_IF([grep -q Modules.symvers $LINUX/scripts/Makefile.modpost],
+ [lb_cv_module_symvers=Modules.symvers],
+ [lb_cv_module_symvers=Module.symvers])
+])
+SYMVERFILE=$lb_cv_module_symvers
+AC_SUBST(SYMVERFILE)
+])
+#
+# LB_LINUX_CROSS
+#
+# check for cross compilation
+#
+AC_DEFUN([LB_LINUX_CROSS], [
+AC_CACHE_CHECK([for cross compilation], lb_cv_cross, [
+lb_cv_cross="no"
+AS_IF([test "x$cross_compiling" = xyes],
+ [AS_CASE([$host_vendor],
+ [k1om | mpss], [
+ # The K1OM architecture is an extension of the x86 architecture
+ # and in MPSS 2.1 it's defined in $host_vendor. But in MPSS 3.x
+ # it's defined in $host_arch. So, try to support both case.
+ lb_cv_cross=$($CC -v 2>&1 | grep Target: | sed -e 's/Target: //')
+ AS_IF([test "$lb_cv_cross" != x86_64-k1om-linux -a \
+ "$lb_cv_cross" != k1om-mpss-linux], [
+ AC_MSG_ERROR([Cross compiler not found in PATH.])
+ ])
+ ])
+ ])
+])
+AS_IF([test "$lb_cv_cross" = x86_64-k1om-linux -o \
+ "$lb_cv_cross" = k1om-mpss-linux], [
+ CROSS_VARS="ARCH=k1om CROSS_COMPILE=${lb_cv_cross}-"
+ CROSS_PATH="${CROSS_PATH:=/opt/lustre/$VERSION/$lb_cv_cross}"
+ CCAS=$CC
+ # need to produce special section for debuginfo extraction
+ LDFLAGS="$LDFLAGS -Wl,--build-id"
+ EXTRA_KLDFLAGS="$EXTRA_KLDFLAGS -Wl,--build-id"
+ AS_IF([test "x$enable_server" != xno], [
+ AC_MSG_WARN([Disabling server (not supported for $lb_cv_cross).])
+ enable_server="no"
+ ])
+])
+AC_SUBST(CROSS_VARS)
+AC_SUBST(CROSS_PATH)
])
+#
# LB_ARG_REPLACE_PATH(PACKAGE, PATH)
-AC_DEFUN([LB_ARG_REPLACE_PATH],[
- new_configure_args=
- eval "set x $ac_configure_args"
- shift
- for arg; do
- case $arg in
- --with-[$1]=*)
- arg=--with-[$1]=[$2]
- ;;
- *\'*)
- arg=$(printf %s\n ["$arg"] | \
- sed "s/'/'\\\\\\\\''/g")
- ;;
- esac
- dnl AS_VAR_APPEND([new_configure_args], [" '$arg'"])
- new_configure_args="$new_configure_args \"$arg\""
- done
- ac_configure_args=$new_configure_args
+#
+AC_DEFUN([LB_ARG_REPLACE_PATH], [
+new_configure_args=
+eval set -- $ac_configure_args
+for arg; do
+ case $arg in
+ --with-[$1]=*)
+ arg=--with-[$1]=[$2] ;;
+ *\'*)
+ arg=$(printf %s\n ["$arg"] | sed "s/'/'\\\\\\\\''/g") ;;
+ esac
+ dnl AS_VAR_APPEND([new_configure_args], [" '$arg'"])
+ new_configure_args="$new_configure_args '$arg'"
+done
+ac_configure_args=$new_configure_args
])
+#
+# __LB_ARG_CANON_PATH
+#
# this is the work-horse of the next function
+#
AC_DEFUN([__LB_ARG_CANON_PATH], [
[$3]=$(readlink -f $with_$2)
LB_ARG_REPLACE_PATH([$1], $[$3])
])
+#
+# LB_ARG_CANON_PATH
+#
# a front-end for the above function that transforms - and . in the
# PACKAGE portion of --with-PACKAGE into _ suitable for variable names
+#
AC_DEFUN([LB_ARG_CANON_PATH], [
__LB_ARG_CANON_PATH([$1], m4_translit([$1], [-.], [__]), [$2])
])
#
-#
# LB_LINUX_PATH
#
# Find paths for linux, handling kernel-source rpms
#
-AC_DEFUN([LB_LINUX_PATH],
-[# prep some default values
+AC_DEFUN([LB_LINUX_PATH], [
for DEFAULT_LINUX in /lib/modules/$(uname -r)/{source,build} /usr/src/linux; do
- if readlink -q -e $DEFAULT_LINUX; then
- break
- fi
+ AS_IF([readlink -q -e $DEFAULT_LINUX >/dev/null], [break])
done
if test "$DEFAULT_LINUX" = "/lib/modules/$(uname -r)/source"; then
PATHS="/lib/modules/$(uname -r)/build"
fi
PATHS+=" $DEFAULT_LINUX"
for DEFAULT_LINUX_OBJ in $PATHS; do
- if readlink -q -e $DEFAULT_LINUX_OBJ; then
- break
- fi
+ AS_IF([readlink -q -e $DEFAULT_LINUX_OBJ >/dev/null], [break])
done
+
AC_MSG_CHECKING([for Linux sources])
AC_ARG_WITH([linux],
AC_HELP_STRING([--with-linux=path],
AC_SUBST(LINUX)
# -------- check for linux --------
-LB_CHECK_FILE([$LINUX],[],
+LB_CHECK_FILE([$LINUX], [],
[AC_MSG_ERROR([Kernel source $LINUX could not be found.])])
# -------- linux objects (for 2.6) --
-AC_MSG_CHECKING([for Linux objects dir])
+AC_MSG_CHECKING([for Linux objects])
AC_ARG_WITH([linux-obj],
AC_HELP_STRING([--with-linux-obj=path],
- [set path to Linux objects dir (default=/lib/modules/$(uname -r)/build,/usr/src/linux)]),
+ [set path to Linux objects (default=/lib/modules/$(uname -r)/build,/usr/src/linux)]),
[LB_ARG_CANON_PATH([linux-obj], [LINUX_OBJ])],
[LINUX_OBJ=$DEFAULT_LINUX_OBJ])
-
AC_MSG_RESULT([$LINUX_OBJ])
AC_SUBST(LINUX_OBJ)
[set path to Linux .conf (default=$LINUX_OBJ/.config)])],
[LB_ARG_CANON_PATH([linux-config], [LINUX_CONFIG])],
[LINUX_CONFIG=$LINUX_OBJ/.config])
+
+# -------- check if .config exists --
+LB_CHECK_FILE([$LINUX_CONFIG], [],
+ [AC_MSG_ERROR([
+
+Kernel config could not be found.
+
+If you are building from a kernel-source rpm consult build/README.kernel-source
+])
+])
AC_SUBST(LINUX_CONFIG)
LB_CHECK_FILE([/boot/kernel.h],
[Use a different kernel version header. Consult build/README.kernel-source for details.]),
[LB_ARG_CANON_PATH([kernel-source-header], [KERNEL_SOURCE_HEADER])])
-# ------------ .config exists ----------------
-LB_CHECK_FILE([$LINUX_CONFIG],[],
- [AC_MSG_ERROR([
-
-Kernel config could not be found.
-
-If you are building from a kernel-source rpm consult build/README.kernel-source
-])
-])
-
# ----------- make dep run? ------------------
# at 2.6.19 # $LINUX/include/linux/config.h is removed
-# and at more old has only one line
-# include <autoconf.h>
-LB_CHECK_FILE([$LINUX_OBJ/include/generated/autoconf.h],[AUTOCONF_HDIR=generated],
- [LB_CHECK_FILE([$LINUX_OBJ/include/linux/autoconf.h],[AUTOCONF_HDIR=linux],
- [AC_MSG_ERROR([Run make config in $LINUX.])])])
- AC_SUBST(AUTOCONF_HDIR)
-LB_CHECK_FILE([$LINUX_OBJ/include/linux/version.h], [VERSION_HDIR=linux],
+# and at more old has only one line include <autoconf.h>
+#
+LB_CHECK_FILE([$LINUX_OBJ/include/generated/autoconf.h],
+ [AUTOCONF_HDIR=generated],
+ [LB_CHECK_FILE([$LINUX_OBJ/include/linux/autoconf.h],
+ [AUTOCONF_HDIR=linux],
+ [AC_MSG_ERROR([Run make config in $LINUX.])])])
+AC_SUBST(AUTOCONF_HDIR)
+
+LB_CHECK_FILE([$LINUX_OBJ/include/linux/version.h],
+ [VERSION_HDIR=linux],
[LB_CHECK_FILE([$LINUX_OBJ/include/generated/uapi/linux/version.h],
[VERSION_HDIR=generated/uapi/linux],
- [AC_MSG_ERROR([Run make config in $LINUX.])])
- ])
- AC_SUBST(VERSION_HDIR)
+ [AC_MSG_ERROR([Run make config in $LINUX.])])])
+AC_SUBST(VERSION_HDIR)
# ----------- kconfig.h exists ---------------
# kernel 3.1, $LINUX/include/linux/kconfig.h is added
# see kernel commit 2a11c8ea20bf850b3a2c60db8c2e7497d28aba99
+#
LB_CHECK_FILE([$LINUX_OBJ/include/linux/kconfig.h],
[CONFIG_INCLUDE=include/linux/kconfig.h],
[CONFIG_INCLUDE=include/$AUTOCONF_HDIR/autoconf.h])
- AC_SUBST(CONFIG_INCLUDE)
+AC_SUBST(CONFIG_INCLUDE)
# ------------ rhconfig.h includes runtime-generated bits --
-# red hat kernel-source checks
+# RedHat kernel-source checks
# we know this exists after the check above. if the user
# tarred up the tree and ran make dep etc. in it, then
# version.h gets overwritten with a standard linux one.
-if grep rhconfig $LINUX_OBJ/include/$VERSION_HDIR/version.h >/dev/null ; then
+AS_IF([grep rhconfig $LINUX_OBJ/include/$VERSION_HDIR/version.h >/dev/null], [
# This is a clean kernel-source tree, we need to
- # enable extensive workarounds to get this to build
- # modules
- LB_CHECK_FILE([$KERNEL_SOURCE_HEADER],
- [if test $KERNEL_SOURCE_HEADER = '/boot/kernel.h' ; then
- AC_MSG_WARN([
+ # enable extensive workarounds to get this to build modules
+ LB_CHECK_FILE([$KERNEL_SOURCE_HEADER], [
+ AS_IF([test $KERNEL_SOURCE_HEADER = '/boot/kernel.h'],
+ [AC_MSG_WARN([
Using /boot/kernel.h from RUNNING kernel.
If this is not what you want, use --with-kernel-source-header.
Consult build/README.kernel-source for details.
])
- fi],
- [AC_MSG_ERROR([$KERNEL_SOURCE_HEADER not found. Consult build/README.kernel-source for details.])])
+ ])],
+ [AC_MSG_ERROR([
+
+$KERNEL_SOURCE_HEADER not found.
+
+Consult build/README.kernel-source for details.
+])
+ ])
EXTRA_KCFLAGS="-include $KERNEL_SOURCE_HEADER $EXTRA_KCFLAGS"
-fi
+])
# this is needed before we can build modules
LB_LINUX_CROSS
LB_LINUX_VERSION
# --- check that we can build modules at all
-AC_MSG_CHECKING([that modules can be built at all])
-LB_LINUX_TRY_COMPILE([],[],[
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
+LB_CHECK_COMPILE([that modules can be built at all], build_modules,
+ [], [], [], [
AC_MSG_ERROR([
Kernel modules cannot be built. Consult config.log for details.
LB_LINUX_RELEASE
]) # end of LB_LINUX_PATH
-# LB_LINUX_SYMVERFILE
-# SLES 9 uses a different name for this file - unsure about vanilla kernels
-# around this version, but it matters for servers only.
-AC_DEFUN([LB_LINUX_SYMVERFILE],
- [AC_MSG_CHECKING([name of module symbol version file])
- if grep -q Modules.symvers $LINUX/scripts/Makefile.modpost ; then
- SYMVERFILE=Modules.symvers
- else
- SYMVERFILE=Module.symvers
- fi
- AC_MSG_RESULT($SYMVERFILE)
- AC_SUBST(SYMVERFILE)
+#
+# LC_MODULE_LOADING
+#
+# after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains
+# so we test if request_module is implemented or not
+AC_DEFUN([LC_MODULE_LOADING], [
+AC_CACHE_CHECK([if Linux kernel module loading is possible], lb_cv_module_loading, [
+LB_LINUX_TRY_MAKE([
+ #include <linux/kmod.h>
+], [
+ int myretval=ENOSYS ;
+ return myretval;
+], [
+ $makerule LUSTRE_KERNEL_TEST=conftest.i
+], [dnl
+ grep request_module build/conftest.i |dnl
+ grep -v `grep "int myretval=" build/conftest.i |dnl
+ cut -d= -f2 | cut -d" " -f1`dnl
+ >/dev/null dnl
+], [lb_cv_module_loading="yes"], [lb_cv_module_loading="no"])
+])
+AS_IF([test "$lb_cv_module_loading" = yes],
+ [AC_DEFINE(HAVE_MODULE_LOADING_SUPPORT, 1,
+ [kernel module loading is possible])],
+ [AC_MSG_WARN([
+
+Kernel module loading support is highly recommended.
+
+])
+ ])
])
#
-# LB_LINUX_CROSS
+# LB_PROG_LINUX
#
-# check for cross compilation
+# linux tests
#
-AC_DEFUN([LB_LINUX_CROSS],
- [AC_MSG_CHECKING([for cross compilation])
-AS_IF([test "x$cross_compiling" = xno], [AC_MSG_RESULT([no])],
- [case $host_vendor in
- # The K1OM architecture is an extension of the x86 architecture
- # and in MPSS 2.1 it's defined in $host_vendor. But in MPSS 3.x
- # it's defined in $host_arch. So, try to support both case.
- k1om | mpss)
- AC_MSG_RESULT([Intel(R) Xeon Phi(TM)])
- CC_TARGET_ARCH=`$CC -v 2>&1 | grep Target: | sed -e 's/Target: //'`
- AC_SUBST(CC_TARGET_ARCH)
- if test \( $CC_TARGET_ARCH != x86_64-k1om-linux \
- -a $CC_TARGET_ARCH != k1om-mpss-linux \)
- then
- AC_MSG_ERROR([Cross compiler not found in PATH.])
- fi
- CROSS_VARS="ARCH=k1om CROSS_COMPILE=${CC_TARGET_ARCH}-"
- CROSS_PATH="${CROSS_PATH:=/opt/lustre/${VERSION}/${CC_TARGET_ARCH}}"
- CCAS=$CC
- # need to produce special section for debuginfo extraction
- LDFLAGS="${LDFLAGS} -Wl,--build-id"
- EXTRA_KLDFLAGS="${EXTRA_KLDFLAGS} -Wl,--build-id"
- if test x$enable_server != xno ; then
- AC_MSG_WARN([Disabling server (not supported for k1om architecture).])
- enable_server='no'
- fi
- ;;
- *)
- AC_MSG_RESULT([yes, but no changes])
- ;;
- esac
+AC_DEFUN([LB_PROG_LINUX], [
+LB_LINUX_PATH
+LB_LINUX_SYMVERFILE
+
+LB_CHECK_CONFIG([MODULES], [], [
+ AC_MSG_ERROR([
+
+module support is required to build Lustre kernel modules.
+])
])
-AC_SUBST(CROSS_VARS)
-AC_SUBST(CROSS_PATH)
+
+LB_CHECK_CONFIG([MODVERSIONS])
+
+LB_CHECK_CONFIG([KALLSYMS], [], [
+ AC_MSG_ERROR([
+
+Lustre requires that CONFIG_KALLSYMS is enabled in your kernel.
+])
+ ])
+
+# 2.6.28
+LC_MODULE_LOADING
+])
+
+#
+# LB_USES_DPKG
+#
+# Determine if the target is a dpkg system or rpm
+#
+AC_DEFUN([LB_USES_DPKG], [
+AC_CACHE_CHECK([if this distro uses dpkg], lb_cv_uses_dpkg, [
+lb_cv_uses_dpkg="no"
+AS_CASE([$(lsb_release -i -s 2>/dev/null)],
+ [Ubuntu | Debian], [lb_cv_uses_dpkg="yes"])
+])
+uses_dpkg=$lb_cv_uses_dpkg
+])
+
+#
+# LB_CHECK_EXPORT
+#
+# check symbol exported or not
+# $1 - symbol
+# $2 - file(s) for find.
+# $3 - do 'yes'
+# $4 - do 'no'
+#
+# 2.6 based kernels - put modversion info into $LINUX/Module.modvers or check
+#
+AC_DEFUN([LB_CHECK_EXPORT], [
+AS_VAR_PUSHDEF([lb_export], [lb_cv_export_$1])dnl
+AC_CACHE_CHECK([if Linux kernel exports '$1'], lb_export, [
+AS_VAR_SET([lb_export], [no])
+AS_IF([grep -q -E '[[[:space:]]]$1[[[:space:]]]' $LINUX_OBJ/$SYMVERFILE 2>/dev/null],
+ [AS_VAR_SET([lb_export], [yes])],
+ [for file in $2; do
+ AS_IF([grep -q -E "EXPORT_SYMBOL.*\($1\)" "$LINUX/$file" 2>/dev/null], [
+ AS_VAR_SET([lb_export], [yes])
+ break
+ ])
+ done])
])
+AS_VAR_IF([lb_export], [yes], [$3], [$4])[]dnl
+AS_VAR_POPDEF([lb_export])dnl
+]) # LB_CHECK_EXPORT
+
+#
+# LB_CHECK_CONFIG
+#
+# check if a given config option is defined
+# $1 - CONFIG_<name>
+# $2 - do 'yes'
+# $3 - do 'no'
+#
+AC_DEFUN([LB_CHECK_CONFIG], [
+LB_CHECK_COMPILE([if Linux kernel was built with CONFIG_$1],
+config_$1, [
+ #include <$AUTOCONF_HDIR/autoconf.h>
+], [
+ #ifndef CONFIG_$1
+ #error CONFIG_$1 not #defined
+ #endif
+], [$2], [$3])
+]) # LB_CHECK_CONFIG
+#
+# LB_CHECK_CONFIG_IM
+#
+# check if a given config option is builtin or as module
+# $1 - CONFIG_<name> or CONFIG_<name>_MODULE
+# $2 - do 'yes'
+# $3 - do 'no'
+#
+AC_DEFUN([LB_CHECK_CONFIG_IM], [
+LB_CHECK_COMPILE([if Linux kernel was built with CONFIG_$1 in or as module],
+config_im_$1, [
+ #include <$AUTOCONF_HDIR/autoconf.h>
+], [
+ #if !(defined(CONFIG_$1) || defined(CONFIG_$1_MODULE))
+ #error CONFIG_$1 and CONFIG_$1_MODULE not #defined
+ #endif
+], [$2], [$3])
+]) # LB_CHECK_CONFIG_IM
+
+#
# these are like AC_TRY_COMPILE, but try to build modules against the
# kernel, inside the build directory
+#
+#
# LB_LANG_PROGRAM(C)([PROLOGUE], [BODY])
# --------------------------------------
+#
m4_define([LB_LANG_PROGRAM],
[
#include <linux/kernel.h>
#
# like AC_COMPILE_IFELSE
#
+# $1 - AC_LANG_SOURCE()
+# $2 - make target
+# $3 - check command
+# $4 - do 'yes'
+# $5 - do 'no'
+#
AC_DEFUN([LB_LINUX_COMPILE_IFELSE],
[m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl
rm -f build/conftest.o build/conftest.mod.c build/conftest.ko
#
# like AC_TRY_COMPILE
#
-AC_DEFUN([LB_LINUX_TRY_COMPILE],
-[LB_LINUX_COMPILE_IFELSE(
+AC_DEFUN([LB_LINUX_TRY_COMPILE], [
+LB_LINUX_COMPILE_IFELSE(
[AC_LANG_SOURCE([LB_LANG_PROGRAM([[$1]], [[$2]])])],
- [modules],
- [test -s build/conftest.o],
- [$3], [$4])])
-
-#
-# LB_LINUX_CONFIG
-#
-# check if a given config option is defined
-#
-AC_DEFUN([LB_LINUX_CONFIG],[
- AC_MSG_CHECKING([if Linux was built with CONFIG_$1])
- LB_LINUX_TRY_COMPILE([
- #include <$AUTOCONF_HDIR/autoconf.h>
- ],[
- #ifndef CONFIG_$1
- #error CONFIG_$1 not #defined
- #endif
- ],[
- AC_MSG_RESULT([yes])
- $2
- ],[
- AC_MSG_RESULT([no])
- $3
- ])
-])
-
-#
-# LB_LINUX_CONFIG_IM
-#
-# check if a given config option is builtin or as module
-#
-AC_DEFUN([LB_LINUX_CONFIG_IM],[
- AC_MSG_CHECKING([if Linux was built with CONFIG_$1 in or as module])
- LB_LINUX_TRY_COMPILE([
- #include <$AUTOCONF_HDIR/autoconf.h>
- ],[
- #if !(defined(CONFIG_$1) || defined(CONFIG_$1_MODULE))
- #error CONFIG_$1 and CONFIG_$1_MODULE not #defined
- #endif
- ],[
- AC_MSG_RESULT([yes])
- $2
- ],[
- AC_MSG_RESULT([no])
- $3
- ])
+ [modules], [test -s build/conftest.o],
+ [$3], [$4])
])
#
#
# like LB_LINUX_TRY_COMPILE, but with different arguments
#
-AC_DEFUN([LB_LINUX_TRY_MAKE],
- [LB_LINUX_COMPILE_IFELSE(
- [AC_LANG_SOURCE([LB_LANG_PROGRAM([[$1]], [[$2]])])],
- [$3], [$4], [$5], [$6]
- )]
-)
-
-# LC_MODULE_LOADING
-# after 2.6.28 CONFIG_KMOD is removed, and only CONFIG_MODULES remains
-# so we test if request_module is implemented or not
-AC_DEFUN([LC_MODULE_LOADING],
-[AC_MSG_CHECKING([if kernel module loading is possible])
-LB_LINUX_TRY_MAKE([
- #include <linux/kmod.h>
-],[
- int myretval=ENOSYS ;
- return myretval;
-],[
- $makerule LUSTRE_KERNEL_TEST=conftest.i
-],[dnl
- grep request_module build/conftest.i |dnl
- grep -v `grep "int myretval=" build/conftest.i |dnl
- cut -d= -f2 | cut -d" " -f1`dnl
- >/dev/null dnl
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_MODULE_LOADING_SUPPORT, 1,
- [kernel module loading is possible])
-],[
- AC_MSG_RESULT(no)
- AC_MSG_WARN([
-
-Kernel module loading support is highly recommended.
-])
-])
+AC_DEFUN([LB_LINUX_TRY_MAKE], [
+LB_LINUX_COMPILE_IFELSE(
+ [AC_LANG_SOURCE([LB_LANG_PROGRAM([[$1]], [[$2]])])],
+ [$3], [$4], [$5], [$6])
])
#
-# LB_PROG_LINUX
-#
-# linux tests
-#
-AC_DEFUN([LB_PROG_LINUX],
-[LB_LINUX_PATH
-LB_LINUX_SYMVERFILE
-
-
-LB_LINUX_CONFIG([MODULES],[],[
- AC_MSG_ERROR([
-
-module support is required to build Lustre kernel modules.
-])
-])
-
-LB_LINUX_CONFIG([MODVERSIONS])
-
-LB_LINUX_CONFIG([KALLSYMS],[],[
- AC_MSG_ERROR([
-
-Lustre requires that CONFIG_KALLSYMS is enabled in your kernel.
-])
-])
-
-# 2.6.28
-LC_MODULE_LOADING
+# LB_CHECK_COMPILE
+# $1 - checking message
+# $2 - variable name
+# $3 - header
+# $4 - body
+# $5 - do 'yes'
+# $6 - do 'no'
+#
+AC_DEFUN([LB_CHECK_COMPILE], [
+AS_VAR_PUSHDEF([lb_compile], [lb_cv_compile_$2])dnl
+AC_CACHE_CHECK([$1], lb_compile, [
+ LB_LINUX_TRY_COMPILE([$3], [$4],
+ [AS_VAR_SET([lb_compile], [yes])],
+ [AS_VAR_SET([lb_compile], [no])])
])
+AS_VAR_IF([lb_compile], [yes], [$5], [$6])[]dnl
+AS_VAR_POPDEF([lb_compile])dnl
+]) # LB_CHECK_COMPILE
#
-# LB_CHECK_SYMBOL_EXPORT
-# check symbol exported or not
-# $1 - symbol
-# $2 - file(s) for find.
-# $3 - do 'yes'
-# $4 - do 'no'
-#
-# 2.6 based kernels - put modversion info into $LINUX/Module.modvers
-# or check
-AC_DEFUN([LB_CHECK_SYMBOL_EXPORT],
-[AC_MSG_CHECKING([if Linux was built with symbol $1 exported])
-grep -q -E '[[[:space:]]]$1[[[:space:]]]' $LINUX_OBJ/$SYMVERFILE 2>/dev/null
-rc=$?
-if test $rc -ne 0; then
- export=0
- for file in $2; do
- grep -q -E "EXPORT_SYMBOL.*\($1\)" "$LINUX/$file" 2>/dev/null
- rc=$?
- if test $rc -eq 0; then
- export=1
- break;
- fi
- done
- if test $export -eq 0; then
- AC_MSG_RESULT([no])
- $4
- else
- AC_MSG_RESULT([yes])
- $3
- fi
-else
- AC_MSG_RESULT([yes])
- $3
-fi
-])
-
+# LB_CHECK_LINUX_HEADER
#
# Like AC_CHECK_HEADER but checks for a kernel-space header
#
-m4_define([LB_CHECK_LINUX_HEADER],
-[AS_VAR_PUSHDEF([ac_Header], [ac_cv_header_$1])dnl
-AC_CACHE_CHECK([for $1], ac_Header,
- [LB_LINUX_COMPILE_IFELSE([LB_LANG_PROGRAM([@%:@include <$1>])],
- [modules],
- [test -s build/conftest.o],
- [AS_VAR_SET(ac_Header, [yes])],
- [AS_VAR_SET(ac_Header, [no])])])
-AS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnl
-AS_VAR_POPDEF([ac_Header])dnl
-])
-
-#
-# LB_USES_DPKG
-#
-# Determine if the target is a dpkg system or rpm
-#
-AC_DEFUN([LB_USES_DPKG],
-[
-AC_MSG_CHECKING([if this distro uses dpkg])
-case `lsb_release -i -s 2>/dev/null` in
- Ubuntu | Debian)
- AC_MSG_RESULT([yes])
- uses_dpkg=yes
- ;;
- *)
- AC_MSG_RESULT([no])
- uses_dpkg=no
- ;;
-esac
+m4_define([LB_CHECK_LINUX_HEADER], [
+AS_VAR_PUSHDEF([lb_header], [lb_cv_header_$1])dnl
+AC_CACHE_CHECK([for $1], lb_header, [
+ LB_LINUX_COMPILE_IFELSE([LB_LANG_PROGRAM([@%:@include <$1>])],
+ [modules], [test -s build/conftest.o],
+ [AS_VAR_SET([lb_header], [yes])],
+ [AS_VAR_SET([lb_header], [no])])
])
+AS_VAR_IF([lb_header], [yes], [$2], [$3])[]dnl
+AS_VAR_POPDEF([lb_header])dnl
+]) # LB_CHECK_LINUX_HEADER
])
])
- AS_IF([test x$enable_zfs = xyes], [
- AC_MSG_CHECKING([if zfs defines dsl_pool_config_enter/exit])
- LB_LINUX_TRY_COMPILE([
+ AS_IF([test "x$enable_zfs" = xyes], [
+ LB_CHECK_COMPILE([if zfs defines dsl_pool_config_enter/exit],
+ dsl_pool_config_enter, [
#include <sys/dsl_pool.h>
],[
dsl_pool_config_enter(NULL, FTAG);
],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_DSL_POOL_CONFIG, 1,
- [Have dsl_pool_config_enter/exit in ZFS])
- ],[
- AC_MSG_RESULT([no])
+ AC_DEFINE(HAVE_DSL_POOL_CONFIG, 1,
+ [Have dsl_pool_config_enter/exit in ZFS])
])
])
- AM_CONDITIONAL(ZFS_ENABLED, test x$enable_zfs = xyes)
+ AM_CONDITIONAL(ZFS_ENABLED, [test "x$enable_zfs" = xyes])
])
#
# Verify that LUSTRE_VERSION was defined properly
#
-AC_DEFUN([LB_CHECK_VERSION],
-[if test "LUSTRE_VERSION" = "LUSTRE""_VERSION" ; then
- AC_MSG_ERROR([This script was not built with a version number.])
-fi
-])
+AC_DEFUN([LB_CHECK_VERSION], [
+AS_IF([test "LUSTRE_VERSION" = "LUSTRE""_VERSION"],
+ [AC_MSG_ERROR([This script was not built with a version number.])])
+]) # LB_CHECK_VERSION
#
# LB_CANONICAL_SYSTEM
#
# fixup $target_os for use in other places
#
-AC_DEFUN([LB_CANONICAL_SYSTEM],
-[case $target_os in
+AC_DEFUN([LB_CANONICAL_SYSTEM], [
+case $target_os in
linux*)
lb_target_os="linux"
;;
;;
esac
AC_SUBST(lb_target_os)
-])
+]) # LB_CANONICAL_SYSTEM
#
# LB_DOWNSTREAM_RELEASE
AC_DEFUN([LB_DOWNSTREAM_RELEASE],
[AC_ARG_WITH([downstream-release],
AC_HELP_STRING([--with-downstream-release=string],
- [set a string in the BUILD_VERSION and RPM Release: (default is nothing)]),
+ [set a string in the BUILD_VERSION and RPM Release: (default is nothing)]),
[DOWNSTREAM_RELEASE=$with_downstream_release],
- [
- # if not specified, see if it's in the META file
- if test -f META; then
- DOWNSTREAM_RELEASE=$(sed -ne '/^LOCAL_VERSION =/s/.*= *//p' META)
- fi
+ [ # if not specified, see if it's in the META file
+ AS_IF([test -f META],
+ [DOWNSTREAM_RELEASE=$(sed -ne '/^LOCAL_VERSION =/s/.*= *//p' META)])
])
AC_SUBST(DOWNSTREAM_RELEASE)
-])
+]) # LB_DOWNSTREAM_RELEASE
#
# LB_BUILDID
# is if we are in a valid git repository, the other is if we are in a
# non-git source tree of some form. Building the latter from the former
# will be handled here.
-AC_DEFUN([LB_BUILDID],
-[
-AC_MSG_CHECKING([for buildid])
-BUILDID=""
-if git branch >/dev/null 2>&1; then
+AC_DEFUN([LB_BUILDID], [
+AC_CACHE_CHECK([for buildid], [lb_cv_buildid], [
+lb_cv_buildid=""
+AS_IF([git branch >/dev/null 2>&1], [
ffw=0
hash=""
ver=$(git describe --match v[[0-9]]_*_[[0-9]]* --tags)
fi
if test "$ffw" != "0"; then
- BUILDID="$hash"
- msg="$BUILDID (ahead by $ffw commits)"
- AC_MSG_RESULT([$msg])
- else
- AC_MSG_RESULT([none... congratulations, you must be on a tag])
+ lb_cv_buildid="$hash"
fi
-elif test -f META; then
- BUILDID=$(sed -ne '/^BUILDID =/s/.*= *//p' META)
- msg="$BUILDID (from META file)"
- AC_MSG_RESULT([$msg])
-else
- AC_MSG_RESULT([none])
+], [test -f META], [
+ lb_cv_buildid=$(sed -ne '/^BUILDID =/s/.*= *//p' META)
+])
+])
+AS_IF([test -z "$lb_cv_buildid"], [
AC_MSG_WARN([
FIXME: I don't know how to deal with source trees outside of git that
don't have a META file. Not setting a buildid.
])
-fi
-AC_SUBST(BUILDID)
])
+BUILDID=$lb_cv_buildid
+AC_SUBST(BUILDID)
+]) # LB_BUILDID
#
# LB_CHECK_FILE
#
# Check for file existance even when cross compiling
-#
-AC_DEFUN([LB_CHECK_FILE],
-[AS_VAR_PUSHDEF([lb_File], [lb_cv_file_$1])dnl
-AC_CACHE_CHECK([for $1], lb_File,
-[if test -r "$1"; then
- AS_VAR_SET(lb_File, yes)
-else
- AS_VAR_SET(lb_File, no)
-fi])
-AS_IF([test AS_VAR_GET(lb_File) = yes], [$2], [$3])[]dnl
-AS_VAR_POPDEF([lb_File])dnl
-])# LB_CHECK_FILE
-
+# $1 - file to check
+# $2 - do 'yes'
+# $3 - do 'no'
+#
+AC_DEFUN([LB_CHECK_FILE], [
+AS_VAR_PUSHDEF([lb_file], [lb_cv_file_$1])dnl
+AC_CACHE_CHECK([for $1], lb_file, [
+AS_IF([test -r "$1"],
+ [AS_VAR_SET(lb_file, [yes])],
+ [AS_VAR_SET(lb_file, [no])])
+])
+AS_VAR_IF([lb_file], [yes], [$2], [$3])[]dnl
+AS_VAR_POPDEF([lb_file])dnl
+]) # LB_CHECK_FILE
#
# LB_ARG_LIBS_INCLUDES
# support for --with-foo, --with-foo-includes, and --with-foo-libs in
# a single magical macro
#
-AC_DEFUN([LB_ARG_LIBS_INCLUDES],
-[lb_pathvar="m4_bpatsubst([$2], -, _)"
+AC_DEFUN([LB_ARG_LIBS_INCLUDES], [
+lb_pathvar="m4_bpatsubst([$2], -, _)"
AC_MSG_CHECKING([for $1])
AC_ARG_WITH([$2],
AC_HELP_STRING([--with-$2=path],
[path to $1]),
- [],[withval=$4])
-
-if test x$withval = xyes ; then
- eval "$lb_pathvar='$3'"
-else
- eval "$lb_pathvar='$withval'"
-fi
+ [], [withval=$4])
+AS_IF([test "x$withval" = xyes],
+ [eval "$lb_pathvar='$3'"],
+ [eval "$lb_pathvar='$withval'"])
AC_MSG_RESULT([${!lb_pathvar:-no}])
-if test x${!lb_pathvar} != x -a x${!lb_pathvar} != xno ; then
+AS_IF([test "x${!lb_pathvar}" != x -a "x${!lb_pathvar}" != xno], [
AC_MSG_CHECKING([for $1 includes])
AC_ARG_WITH([$2-includes],
AC_HELP_STRING([--with-$2-includes=path],
[path to $1 includes]),
- [],[withval='yes'])
+ [], [withval="yes"])
lb_includevar="${lb_pathvar}_includes"
- if test x$withval = xyes ; then
- eval "${lb_includevar}='${!lb_pathvar}/include'"
- else
- eval "${lb_includevar}='$withval'"
- fi
+ AS_IF([test "x$withval" = xyes],
+ [eval "${lb_includevar}='${!lb_pathvar}/include'"],
+ [eval "${lb_includevar}='$withval'"])
AC_MSG_RESULT([${!lb_includevar}])
AC_MSG_CHECKING([for $1 libs])
AC_ARG_WITH([$2-libs],
AC_HELP_STRING([--with-$2-libs=path],
[path to $1 libs]),
- [],[withval='yes'])
+ [], [withval="yes"])
lb_libvar="${lb_pathvar}_libs"
- if test x$withval = xyes ; then
- eval "${lb_libvar}='${!lb_pathvar}/lib'"
- else
- eval "${lb_libvar}='$withval'"
- fi
+ AS_IF([test "x$withval" = xyes],
+ [eval "${lb_libvar}='${!lb_pathvar}/lib'"],
+ [eval "${lb_libvar}='$withval'"])
AC_MSG_RESULT([${!lb_libvar}])
-fi
-])
])
+]) # LB_ARG_LIBS_INCLUDES
#
# LB_PATH_LIBSYSIO
#
# Handle internal/external libsysio
#
-AC_DEFUN([LB_PATH_LIBSYSIO],
-[AC_ARG_WITH([sysio],
+AC_DEFUN([LB_PATH_LIBSYSIO], [
+AC_MSG_CHECKING([location of libsysio])
+AC_ARG_WITH([sysio],
AC_HELP_STRING([--with-sysio=path],
- [set path to libsysio source (default is included libsysio)]),
- [],[
- case $lb_target_os in
- linux)
- with_sysio='yes'
- ;;
- *)
- with_sysio='no'
- ;;
- esac
+ [set path to libsysio source (default is included libsysio)]),
+ [], [
+ AS_IF([test "x$lb_target_os" = xlinux],
+ [with_sysio="yes"],
+ [with_sysio="no"])
])
-AC_MSG_CHECKING([location of libsysio])
-enable_sysio="$with_sysio"
-case x$with_sysio in
- xyes)
+AS_IF([test "x$with_sysio" = xyes], [
AC_MSG_RESULT([internal])
- LB_CHECK_FILE([$srcdir/libsysio/src/rmdir.c],[],[
+ LB_CHECK_FILE([$srcdir/libsysio/src/rmdir.c], [], [
AC_MSG_ERROR([A complete internal libsysio was not found.])
])
LIBSYSIO_SUBDIR="libsysio"
SYSIO="$PWD/libsysio"
- ;;
- xno)
+ ], [test "x$with_sysio" = xno], [
AC_MSG_RESULT([disabled])
- ;;
- *)
+ ], [
AC_MSG_RESULT([$with_sysio])
- LB_CHECK_FILE([$with_sysio/lib/libsysio.a],[],[
+ LB_CHECK_FILE([$with_sysio/lib/libsysio.a], [], [
AC_MSG_ERROR([A complete (built) external libsysio was not found.])
])
+ LIBSYSIO_SUBDIR=""
SYSIO=$with_sysio
with_sysio="yes"
- ;;
-esac
-
+ ])
+enable_sysio=$with_sysio
# We have to configure even if we don't build here for make dist to work
AC_CONFIG_SUBDIRS([libsysio])
-])
+]) # LB_PATH_LIBSYSIO
#
# LB_PATH_LUSTREIOKIT
#
# We no longer handle external lustre-iokit
#
-AC_DEFUN([LB_PATH_LUSTREIOKIT],
-[AC_ARG_ENABLE([iokit],
+AC_DEFUN([LB_PATH_LUSTREIOKIT], [
+AC_MSG_CHECKING([whether to build iokit])
+AC_ARG_ENABLE([iokit],
AC_HELP_STRING([--disable-iokit],
[disable iokit (default is enable)]),
- [],[
- enable_iokit='yes'
- ])
-AC_MSG_CHECKING([whether to build iokit])
+ [], [enable_iokit="yes"])
AC_MSG_RESULT([$enable_iokit])
-AS_IF([test "x$enable_iokit" = xyes], [LUSTREIOKIT_SUBDIR="lustre-iokit"], [LUSTREIOKIT_SUBDIR=""])[]dnl
+AS_IF([test "x$enable_iokit" = xyes],
+ [LUSTREIOKIT_SUBDIR="lustre-iokit"],
+ [LUSTREIOKIT_SUBDIR=""])
AC_SUBST(LUSTREIOKIT_SUBDIR)
-AM_CONDITIONAL(BUILD_LUSTREIOKIT, [test "x$enable_iokit" = xyes])
-])
+AM_CONDITIONAL([BUILD_LUSTREIOKIT], [test "x$enable_iokit" = xyes])
+]) # LB_PATH_LUSTREIOKIT
# 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_DEFUN([LB_LIBCFS_DIR], [
+AS_IF([test "x$libcfs_is_module" = xyes], [
+ LIBCFS_INCLUDE_DIR="libcfs/include"
+ LIBCFS_SUBDIR="libcfs"
+ ], [
+ LIBCFS_INCLUDE_DIR="lnet/include"
+ LIBCFS_SUBDIR=""
+ ])
AC_SUBST(LIBCFS_INCLUDE_DIR)
-])
+AC_SUBST(LIBCFS_SUBDIR)
+]) # LB_LIBCFS_DIR
#
# LB_PATH_SNMP
#
# check for in-tree snmp support
#
-AC_DEFUN([LB_PATH_SNMP],
-[LB_CHECK_FILE([$srcdir/snmp/lustre-snmp.c],[SNMP_DIST_SUBDIR="snmp"])
+AC_DEFUN([LB_PATH_SNMP], [
+LB_CHECK_FILE([$srcdir/snmp/lustre-snmp.c], [SNMP_DIST_SUBDIR="snmp"])
AC_SUBST(SNMP_DIST_SUBDIR)
AC_SUBST(SNMP_SUBDIR)
-])
+]) # LB_PATH_SNMP
#
# LB_CONFIG_MODULES
#
# Build kernel modules?
#
-AC_DEFUN([LB_CONFIG_MODULES],
-[AC_MSG_CHECKING([whether to build kernel modules])
+AC_DEFUN([LB_CONFIG_MODULES], [
+AC_MSG_CHECKING([whether to build Linux kernel modules])
AC_ARG_ENABLE([modules],
AC_HELP_STRING([--disable-modules],
- [disable building of Lustre kernel modules]),
- [],[
- LC_TARGET_SUPPORTED([
- enable_modules='yes'
- ],[
- enable_modules='no'
- ])
+ [disable building of Lustre kernel modules]),
+ [], [
+ LC_TARGET_SUPPORTED([enable_modules="yes"],
+ [enable_modules="no"])
])
AC_MSG_RESULT([$enable_modules ($target_os)])
-if test x$enable_modules = xyes ; then
- case $target_os in
- linux*)
+AS_IF([test "x$enable_modules" = xyes], [
+ AS_CASE([$target_os],
+ [linux*], [
LB_PROG_LINUX
LIBCFS_PROG_LINUX
LN_PROG_LINUX
- if test x$enable_server != xno; then
- LB_EXT4_SRC_DIR
- fi
+ AS_IF([test "x$enable_server" != xno], [LB_EXT4_SRC_DIR])
LC_PROG_LINUX
- ;;
- darwin*)
+ ], [darwin*], [
LB_PROG_DARWIN
LIBCFS_PROG_DARWIN
- ;;
- *)
+ ], [*], [
# This is strange - Lustre supports a target we don't
AC_MSG_ERROR([Modules are not supported on $target_os])
- ;;
- esac
-fi
-])
+ ])
+ ])
+]) # LB_CONFIG_MODULES
#
# LB_CONFIG_UTILS
#
# Build utils?
#
-AC_DEFUN([LB_CONFIG_UTILS],
-[AC_MSG_CHECKING([whether to build utilities])
+AC_DEFUN([LB_CONFIG_UTILS], [
+AC_MSG_CHECKING([whether to build Lustre utilities])
AC_ARG_ENABLE([utils],
AC_HELP_STRING([--disable-utils],
- [disable building of Lustre utility programs]),
- [],[enable_utils='yes'])
+ [disable building of Lustre utility programs]),
+ [], [enable_utils="yes"])
AC_MSG_RESULT([$enable_utils])
-if test x$enable_utils = xyes ; then
- LB_CONFIG_INIT_SCRIPTS
-fi
-])
+AS_IF([test "x$enable_utils" = xyes], [LB_CONFIG_INIT_SCRIPTS])
+]) # LB_CONFIG_UTILS
#
# LB_CONFIG_TESTS
#
# Build tests?
#
-AC_DEFUN([LB_CONFIG_TESTS],
-[AC_MSG_CHECKING([whether to build Lustre tests])
+AC_DEFUN([LB_CONFIG_TESTS], [
+AC_MSG_CHECKING([whether to build Lustre tests])
AC_ARG_ENABLE([tests],
AC_HELP_STRING([--disable-tests],
- [disable building of Lustre tests]),
- [],
- [
- enable_tests='yes'
- ])
+ [disable building of Lustre tests]),
+ [], [enable_tests="yes"])
AC_MSG_RESULT([$enable_tests])
-])
+]) # LB_CONFIG_TESTS
#
# LB_CONFIG_DIST
# this simply re-adjusts some defaults, which of course can be overridden
# on the configure line after the --for-dist option
#
-AC_DEFUN([LB_CONFIG_DIST],
-[AC_MSG_CHECKING([whether to configure just enough for make dist])
+AC_DEFUN([LB_CONFIG_DIST], [
+AC_MSG_CHECKING([whether to configure just enough for make dist])
AC_ARG_ENABLE([dist],
AC_HELP_STRING([--enable-dist],
[only configure enough for make dist]),
- [enable_dist='yes'],[enable_dist='no'])
+ [], [enable_dist="no"])
AC_MSG_RESULT([$enable_dist])
-if test x$enable_dist != xno; then
- enable_modules='no'
- enable_utils='no'
- enable_liblustre='no'
- enable_doc='no'
- enable_tests='no'
-fi
+AS_IF([test "x$enable_dist" != xno], [
+ enable_doc="no"
+ enable_utils="no"
+ enable_tests="no"
+ enable_modules="no"
+ enable_liblustre="no"
])
+]) # LB_CONFIG_DIST
#
# LB_CONFIG_DOCS
#
# Build docs?
#
-AC_DEFUN([LB_CONFIG_DOCS],
-[AC_MSG_CHECKING([whether to build docs])
-AC_ARG_ENABLE(doc,
+AC_DEFUN([LB_CONFIG_DOCS], [
+AC_MSG_CHECKING([whether to build Lustre docs])
+AC_ARG_ENABLE([doc],
AC_HELP_STRING([--disable-doc],
[skip creation of pdf documentation]),
- [
- if test x$enable_doc = xyes ; then
- ENABLE_DOC=1
- else
- ENABLE_DOC=0
- fi
- ],[
- ENABLE_DOC=0
- enable_doc='no'
- ])
+ [], [enable_doc="no"])
AC_MSG_RESULT([$enable_doc])
+AS_IF([test "x$enable_doc" = xyes],
+ [ENABLE_DOC=1], [ENABLE_DOC=0])
AC_SUBST(ENABLE_DOC)
-])
+]) # LB_CONFIG_DOCS
#
# LB_CONFIG_INIT_SCRIPTS
#
# our init scripts only work on red hat linux
#
-AC_DEFUN([LB_CONFIG_INIT_SCRIPTS],
-[ENABLE_INIT_SCRIPTS=0
-if test x$enable_utils = xyes ; then
- AC_MSG_CHECKING([whether to install init scripts])
- # our scripts only work on red hat systems
- if test -f /etc/init.d/functions -a -f /etc/sysconfig/network ; then
- ENABLE_INIT_SCRIPTS=1
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
-fi
+AC_DEFUN([LB_CONFIG_INIT_SCRIPTS], [
+ENABLE_INIT_SCRIPTS=0
+AS_IF([test x$enable_utils = xyes], [
+ AC_CACHE_CHECK([whether to install init scripts], [lb_cv_enable_init_scripts], [
+ # our scripts only work on red hat systems
+ AS_IF([test -f /etc/init.d/functions -a -f /etc/sysconfig/network],
+ [lb_cv_enable_init_scripts="yes"],
+ [lb_cv_enable_init_scripts="no"])
+ ])
+ AS_IF([test "x$lb_cv_enable_init_scripts" = xyes],
+ [ENABLE_INIT_SCRIPTS=1])
+])
AC_SUBST(ENABLE_INIT_SCRIPTS)
])
#
# add -include config.h
#
-AC_DEFUN([LB_CONFIG_HEADERS],[
- AC_CONFIG_HEADERS([config.h])
- CPPFLAGS="-include $PWD/config.h $CPPFLAGS"
- EXTRA_KCFLAGS="-include $PWD/config.h $EXTRA_KCFLAGS"
- AC_SUBST(EXTRA_KCFLAGS)
-])
+AC_DEFUN([LB_CONFIG_HEADERS], [
+AC_CONFIG_HEADERS([config.h])
+CPPFLAGS="-include $PWD/config.h $CPPFLAGS"
+EXTRA_KCFLAGS="-include $PWD/config.h $EXTRA_KCFLAGS"
+AC_SUBST(EXTRA_KCFLAGS)
+]) # LB_CONFIG_HEADERS
#
# LB_INCLUDE_RULES
#
# defines for including the toplevel Rules
#
-AC_DEFUN([LB_INCLUDE_RULES],[
- INCLUDE_RULES="include $PWD/Rules"
- AC_SUBST(INCLUDE_RULES)
-])
+AC_DEFUN([LB_INCLUDE_RULES], [
+INCLUDE_RULES="include $PWD/Rules"
+AC_SUBST(INCLUDE_RULES)
+]) # LB_INCLUDE_RULES
#
# LB_PATH_DEFAULTS
#
# 'fixup' default paths
#
-AC_DEFUN([LB_PATH_DEFAULTS],
-[# directories for binaries
+AC_DEFUN([LB_PATH_DEFAULTS], [
+# directories for binaries
AC_PREFIX_DEFAULT([/usr])
sysconfdir='$(CROSS_PATH)/etc'
LIBCFS_PATH_DEFAULTS
LN_PATH_DEFAULTS
LC_PATH_DEFAULTS
-
-])
+]) # LB_PATH_DEFAULTS
#
# LB_PROG_CC
#
# checks on the C compiler
#
-AC_DEFUN([LB_PROG_CC],
-[AC_PROG_RANLIB
-AC_CHECK_TOOL(LD, ld, [no])
-AC_CHECK_TOOL(OBJDUMP, objdump, [no])
-AC_CHECK_TOOL(STRIP, strip, [no])
+AC_DEFUN([LB_PROG_CC], [
+AC_PROG_RANLIB
+AC_CHECK_TOOL(LD, [ld], [no])
+AC_CHECK_TOOL(OBJDUMP, [objdump], [no])
+AC_CHECK_TOOL(STRIP, [strip], [no])
# --------- unsigned long long sane? -------
AC_CHECK_SIZEOF(unsigned long long, 0)
-echo "---> size SIZEOF $SIZEOF_unsigned_long_long"
-echo "---> size SIZEOF $ac_cv_sizeof_unsigned_long_long"
-if test $ac_cv_sizeof_unsigned_long_long != 8 ; then
- AC_MSG_ERROR([** we assume that sizeof(long long) == 8.])
-fi
+AS_IF([test $ac_cv_sizeof_unsigned_long_long != 8],
+ [AC_MSG_ERROR([we assume that sizeof(unsigned long long) == 8.])])
-if test $target_cpu == "powerpc64"; then
+AS_IF([test $target_cpu = powerpc64], [
AC_MSG_WARN([set compiler with -m64])
CFLAGS="$CFLAGS -m64"
CC="$CC -m64"
-fi
+])
CPPFLAGS="-I$PWD/$LIBCFS_INCLUDE_DIR -I$PWD/lnet/include -I$PWD/lustre/include $CPPFLAGS"
# everyone builds against lnet and lustre
EXTRA_KCFLAGS="$EXTRA_KCFLAGS -g -I$PWD/$LIBCFS_INCLUDE_DIR -I$PWD/lnet/include -I$PWD/lustre/include"
AC_SUBST(EXTRA_KCFLAGS)
-])
+]) # LB_PROG_CC
#
-# LB_CONTITIONALS
+# LB_CONDITIONALS
#
# AM_CONDITIONAL instances for everything
# (so that portals/lustre can disable some if needed)
-AC_DEFUN([LB_CONDITIONALS],
-[AM_CONDITIONAL(MODULES, test x$enable_modules = xyes)
-AM_CONDITIONAL(UTILS, test x$enable_utils = xyes)
-AM_CONDITIONAL(TESTS, test x$enable_tests = xyes)
-AM_CONDITIONAL(DOC, test x$ENABLE_DOC = x1)
-AM_CONDITIONAL(INIT_SCRIPTS, test x$ENABLE_INIT_SCRIPTS = "x1")
-AM_CONDITIONAL(LINUX, test x$lb_target_os = "xlinux")
-AM_CONDITIONAL(DARWIN, test x$lb_target_os = "xdarwin")
-AM_CONDITIONAL(SUNOS, test x$lb_target_os = "xSunOS")
-AM_CONDITIONAL(USES_DPKG, test x$uses_dpkg = "xyes")
+#
+AC_DEFUN([LB_CONDITIONALS], [
+AM_CONDITIONAL([MODULES], [test x$enable_modules = xyes])
+AM_CONDITIONAL([UTILS], [test x$enable_utils = xyes])
+AM_CONDITIONAL([TESTS], [test x$enable_tests = xyes])
+AM_CONDITIONAL([DOC], [test x$ENABLE_DOC = x1])
+AM_CONDITIONAL([INIT_SCRIPTS], [test x$ENABLE_INIT_SCRIPTS = x1])
+AM_CONDITIONAL([LINUX], [test x$lb_target_os = xlinux])
+AM_CONDITIONAL([DARWIN], [test x$lb_target_os = xdarwin])
+AM_CONDITIONAL([SUNOS], [test x$lb_target_os = xSunOS])
+AM_CONDITIONAL([USES_DPKG], [test x$uses_dpkg = xyes])
AM_CONDITIONAL([USE_QUILT], [test x$use_quilt = xyes])
# Sanity check for PCLMULQDQ instruction availability
# codename Westmere. So, $target_cpu = x86_64 should have this instruction
# except MIC microarchitecture (k1om).
AM_CONDITIONAL(HAVE_PCLMULQDQ, test x$target_cpu = "xx86_64" -a x$target_vendor != "xk1om")
-if test x$target_cpu = "xx86_64" -a x$target_vendor != "xk1om" ; then
- AC_DEFINE(HAVE_PCLMULQDQ, 1, [have PCLMULQDQ instruction])
-fi
+AS_IF([test x$target_cpu = "xx86_64" -a x$target_vendor != "xk1om"],
+ [AC_DEFINE(HAVE_PCLMULQDQ, 1, [have PCLMULQDQ instruction])])
# this lets lustre cancel libsysio, per-branch or if liblustre is
# disabled
-if test "x$LIBSYSIO_SUBDIR" = xlibsysio ; then
- if test "x$with_sysio" != xyes ; then
+AS_IF([test "x$LIBSYSIO_SUBDIR" = xlibsysio], [
+ AS_IF([test "x$with_sysio" != xyes], [
SYSIO=""
LIBSYSIO_SUBDIR=""
- fi
-fi
+ ])
+])
AC_SUBST(LIBSYSIO_SUBDIR)
AC_SUBST(SYSIO)
LIBCFS_CONDITIONALS
LN_CONDITIONALS
LC_CONDITIONALS
-])
+]) # LB_CONTITIONALS
#
# LB_CONFIG_FILES
#
# build-specific config files
#
-AC_DEFUN([LB_CONFIG_FILES],
-[
+AC_DEFUN([LB_CONFIG_FILES], [
AC_CONFIG_FILES([
Makefile
autoMakefile]
#
# LB_CONFIG_SERVERS
#
-AC_DEFUN([LB_CONFIG_SERVERS],
-[
+AC_DEFUN([LB_CONFIG_SERVERS], [
AC_ARG_ENABLE([server],
AC_HELP_STRING([--disable-server],
- [disable Lustre server support]),
- [AS_IF([test x$enable_server != xyes -a x$enable_server != xno],
- [AC_MSG_ERROR([server valid options are "yes" or "no"])])
- AS_IF([test x$enable_server = xyes -a x$enable_dist = xyes],
- [AC_MSG_ERROR([--enable-server cannot be used with --enable-dist])])
- ],
- [AS_IF([test x$enable_dist = xyes],
- [enable_server=no],
- [enable_server=maybe])
- ]
-)
+ [disable Lustre server support]), [
+ AS_IF([test x$enable_server != xyes -a x$enable_server != xno],
+ [AC_MSG_ERROR([server valid options are "yes" or "no"])])
+ AS_IF([test x$enable_server = xyes -a x$enable_dist = xyes],
+ [AC_MSG_ERROR([--enable-server cannot be used with --enable-dist])])
+ ], [
+ AS_IF([test x$enable_dist = xyes],
+ [enable_server=no], [enable_server=maybe])
+ ])
# There are at least two good reasons why we should really run
# LB_CONFIG_MODULES elsewhere before the call to LB_CONFIG_SERVERS:
# before running, so until LB_CONFIG_MODULES can be reorganized, we
# call it here.
LB_CONFIG_MODULES
-AS_IF([test x$enable_modules = xno],[enable_server=no])
+AS_IF([test x$enable_modules = xno], [enable_server=no])
LB_CONFIG_LDISKFS
LB_CONFIG_ZFS
# If no backends were configured, and the user did not explicitly
# require servers to be enabled, we just disable servers.
-AS_IF([test x$enable_ldiskfs = xno -a x$enable_zfs = xno],
- [AS_CASE([$enable_server],
+AS_IF([test x$enable_ldiskfs = xno -a x$enable_zfs = xno], [
+ AS_CASE([$enable_server],
[maybe], [enable_server=no],
[yes], [AC_MSG_ERROR([cannot enable servers, no backends were configured])])
- ],
- [AS_IF([test x$enable_server = xmaybe], [enable_server=yes])]
-)
+ ], [
+ AS_IF([test x$enable_server = xmaybe], [enable_server=yes])
+ ])
AC_MSG_CHECKING([whether to build Lustre server support])
AC_MSG_RESULT([$enable_server])
AS_IF([test x$enable_server = xyes],
- [AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])]
-)
-])
-
+ [AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])])
+]) # LB_CONFIG_SERVERS
#
# LB_CONFIG_RPMBUILD_OPTIONS
# These strings can be passed to rpmbuild on the command line
# in the Make targets named "rpms" and "srpm".
#
-AC_DEFUN([LB_CONFIG_RPMBUILD_OPTIONS],[
- RPMBINARGS=
- RPMSRCARGS=
- CONFIGURE_ARGS=
- eval set -- $ac_configure_args
- for arg; do
- case $arg in
- --with-release=* ) ;;
- --with-kmp-moddir=* ) ;;
- --with-linux=* | --with-linux-obj=* ) ;;
- --enable-tests | --disable-tests ) ;;
- --enable-modules | --disable-modules ) ;;
- * ) CONFIGURE_ARGS="$CONFIGURE_ARGS '$arg'" ;;
- esac
- done
- if test -n "$CONFIGURE_ARGS" ; then
- RPMBINARGS="$RPMBINARGS --define \"configure_args $CONFIGURE_ARGS\""
- fi
- if test -n "$LINUX" ; then
- RPMBINARGS="$RPMBINARGS --define \"kdir $LINUX\""
- if test -n "$LINUX_OBJ" -a "$LINUX_OBJ" != x"$LINUX" ; then
- RPMBINARGS="$RPMBINARGS --define \"kobjdir $LINUX_OBJ\""
- fi
- fi
- if test -n "$KMP_MODDIR" ; then
- RPMBINARGS="$RPMBINARGS --define \"kmoddir $KMP_MODDIR\""
- fi
- if test -n "$CROSS_PATH" ; then
- if test x$enable_server = xyes ; then
- echo -e "\n"
- "*** Don't support cross compilation for the Intel(R) Xeon Phi(TM) card.\n"
- exit 1
- fi
- CROSS_SUFFIX="-mic"
- RPMBINARGS="$RPMBINARGS --define \"post_script build/gen_filelist.sh\""
- RPMBINARGS="$RPMBINARGS --define \"cross_path $CROSS_PATH\""
- RPMBINARGS="$RPMBINARGS --define \"rootdir %{cross_path}\""
- RPMBINARGS="$RPMBINARGS --define \"_prefix %{cross_path}/usr\""
- RPMBINARGS="$RPMBINARGS --define \"_mandir %{_prefix}/share/man\""
- RPMBINARGS="$RPMBINARGS --define \"_sysconfdir %{cross_path}/etc\""
- RPMBINARGS="$RPMBINARGS --define \"make_args $CROSS_VARS\""
- if test x$CC_TARGET_ARCH = x"x86_64-k1om-linux" ; then
- RPMBINARGS="$RPMBINARGS --define \"cross_requires intel-mic-gpl\""
- fi
- fi
- if test x$enable_modules != xyes ; then
- RPMBINARGS="$RPMBINARGS --without lustre_modules"
- fi
- if test x$enable_tests != xyes ; then
- RPMBINARGS="$RPMBINARGS --without lustre_tests"
- RPMSRCARGS="$RPMSRCARGS --without lustre_tests"
- fi
- if test x$enable_server != xyes ; then
- RPMBINARGS="$RPMBINARGS --without servers"
- if test -n "$CROSS_SUFFIX" ; then
- RPMBINARGS="$RPMBINARGS --define \"lustre_name lustre-client$CROSS_SUFFIX\""
- fi
+AC_DEFUN([LB_CONFIG_RPMBUILD_OPTIONS], [
+RPMBINARGS=
+RPMSRCARGS=
+CONFIGURE_ARGS=
+eval set -- $ac_configure_args
+for arg; do
+ case $arg in
+ --with-release=* ) ;;
+ --with-kmp-moddir=* ) ;;
+ --with-linux=* | --with-linux-obj=* ) ;;
+ --enable-tests | --disable-tests ) ;;
+ --enable-modules | --disable-modules ) ;;
+ * ) CONFIGURE_ARGS="$CONFIGURE_ARGS '$arg'" ;;
+ esac
+done
+if test -n "$CONFIGURE_ARGS" ; then
+ RPMBINARGS="$RPMBINARGS --define \"configure_args $CONFIGURE_ARGS\""
+fi
+if test -n "$LINUX" ; then
+ RPMBINARGS="$RPMBINARGS --define \"kdir $LINUX\""
+ if test -n "$LINUX_OBJ" -a "$LINUX_OBJ" != x"$LINUX" ; then
+ RPMBINARGS="$RPMBINARGS --define \"kobjdir $LINUX_OBJ\""
fi
- if test x$enable_ldiskfs != xyes ; then
- RPMBINARGS="$RPMBINARGS --without ldiskfs"
+fi
+if test -n "$KMP_MODDIR" ; then
+ RPMBINARGS="$RPMBINARGS --define \"kmoddir $KMP_MODDIR\""
+fi
+if test -n "$CROSS_PATH" ; then
+ if test x$enable_server = xyes ; then
+ echo -e "\n"
+ "*** Don't support cross compilation for the Intel(R) Xeon Phi(TM) card.\n"
+ exit 1
fi
- if test x$enable_zfs = xyes ; then
- RPMBINARGS="$RPMBINARGS --with zfs"
+ CROSS_SUFFIX="-mic"
+ RPMBINARGS="$RPMBINARGS --define \"post_script build/gen_filelist.sh\""
+ RPMBINARGS="$RPMBINARGS --define \"cross_path $CROSS_PATH\""
+ RPMBINARGS="$RPMBINARGS --define \"rootdir %{cross_path}\""
+ RPMBINARGS="$RPMBINARGS --define \"_prefix %{cross_path}/usr\""
+ RPMBINARGS="$RPMBINARGS --define \"_mandir %{_prefix}/share/man\""
+ RPMBINARGS="$RPMBINARGS --define \"_sysconfdir %{cross_path}/etc\""
+ RPMBINARGS="$RPMBINARGS --define \"make_args $CROSS_VARS\""
+ if test x$CC_TARGET_ARCH = x"x86_64-k1om-linux" ; then
+ RPMBINARGS="$RPMBINARGS --define \"cross_requires intel-mic-gpl\""
fi
- if test x$enable_iokit != xyes ; then
- RPMBINARGS="$RPMBINARGS --without lustre_iokit"
- RPMSRCARGS="$RPMSRCARGS --without lustre_iokit"
+fi
+if test x$enable_modules != xyes ; then
+ RPMBINARGS="$RPMBINARGS --without lustre_modules"
+fi
+if test x$enable_tests != xyes ; then
+ RPMBINARGS="$RPMBINARGS --without lustre_tests"
+ RPMSRCARGS="$RPMSRCARGS --without lustre_tests"
+fi
+if test x$enable_server != xyes ; then
+ RPMBINARGS="$RPMBINARGS --without servers"
+ if test -n "$CROSS_SUFFIX" ; then
+ RPMBINARGS="$RPMBINARGS --define \"lustre_name lustre-client$CROSS_SUFFIX\""
fi
+fi
+if test x$enable_ldiskfs != xyes ; then
+ RPMBINARGS="$RPMBINARGS --without ldiskfs"
+fi
+if test x$enable_zfs = xyes ; then
+ RPMBINARGS="$RPMBINARGS --with zfs"
+fi
+if test x$enable_iokit != xyes ; then
+ RPMBINARGS="$RPMBINARGS --without lustre_iokit"
+ RPMSRCARGS="$RPMSRCARGS --without lustre_iokit"
+fi
- RPMBUILD_BINARY_ARGS=$RPMBINARGS
- RPMBUILD_SOURCE_ARGS=$RPMSRCARGS
+RPMBUILD_BINARY_ARGS=$RPMBINARGS
+RPMBUILD_SOURCE_ARGS=$RPMSRCARGS
- AC_SUBST(RPMBUILD_BINARY_ARGS)
- AC_SUBST(RPMBUILD_SOURCE_ARGS)
-])
+AC_SUBST(RPMBUILD_BINARY_ARGS)
+AC_SUBST(RPMBUILD_SOURCE_ARGS)
+]) # LB_CONFIG_RPMBUILD_OPTIONS
#
# LB_CONFIGURE
#
# main configure steps
#
-AC_DEFUN([LB_CONFIGURE],
-[LB_CANONICAL_SYSTEM
+AC_DEFUN([LB_CONFIGURE], [
+AC_MSG_NOTICE([Lustre base checks
+==============================================================================])
+LB_CANONICAL_SYSTEM
LB_CONFIG_DIST
LC_CONFIG_LIBLUSTRE
LIBCFS_CONFIGURE
LN_CONFIGURE
-
LC_CONFIGURE
-
-if test "$SNMP_DIST_SUBDIR" ; then
- LS_CONFIGURE
-fi
-
+AS_IF([test -n "$SNMP_DIST_SUBDIR"], [LS_CONFIGURE])
LB_CONDITIONALS
LB_CONFIG_HEADERS
LB_CONFIG_FILES
LN_CONFIG_FILES
LC_CONFIG_FILES
-if test "$SNMP_DIST_SUBDIR" ; then
- LS_CONFIG_FILES
-fi
+AS_IF([test -n "$SNMP_DIST_SUBDIR"], [LS_CONFIG_FILES])
AC_SUBST(ac_configure_args)
Type 'make' to build Lustre.
_ACEOF
-])
+]) # LB_CONFIGURE
#
# whether to enable various libcfs debugs (CDEBUG, ENTRY/EXIT, LASSERT, etc.)
#
-AC_DEFUN([LN_CONFIG_CDEBUG],
-[
+AC_DEFUN([LN_CONFIG_CDEBUG], [
AC_MSG_CHECKING([whether to enable CDEBUG, CWARN])
AC_ARG_ENABLE([libcfs_cdebug],
AC_HELP_STRING([--disable-libcfs-cdebug],
- [disable libcfs CDEBUG, CWARN]),
- [],[enable_libcfs_cdebug='yes'])
+ [disable libcfs CDEBUG, CWARN]),
+ [], [enable_libcfs_cdebug="yes"])
AC_MSG_RESULT([$enable_libcfs_cdebug])
-if test x$enable_libcfs_cdebug = xyes; then
- AC_DEFINE(CDEBUG_ENABLED, 1, [enable libcfs CDEBUG, CWARN])
-fi
+AS_IF([test "x$enable_libcfs_cdebug" = xyes],
+ [AC_DEFINE(CDEBUG_ENABLED, 1, [enable libcfs CDEBUG, CWARN])])
AC_MSG_CHECKING([whether to enable ENTRY/EXIT])
AC_ARG_ENABLE([libcfs_trace],
AC_HELP_STRING([--disable-libcfs-trace],
- [disable libcfs ENTRY/EXIT]),
- [],[enable_libcfs_trace='yes'])
+ [disable libcfs ENTRY/EXIT]),
+ [], [enable_libcfs_trace="yes"])
AC_MSG_RESULT([$enable_libcfs_trace])
-if test x$enable_libcfs_trace = xyes; then
- AC_DEFINE(CDEBUG_ENTRY_EXIT, 1, [enable libcfs ENTRY/EXIT])
-fi
+AS_IF([test "x$enable_libcfs_trace" = xyes],
+ [AC_DEFINE(CDEBUG_ENTRY_EXIT, 1, [enable libcfs ENTRY/EXIT])])
AC_MSG_CHECKING([whether to enable LASSERT, LASSERTF])
AC_ARG_ENABLE([libcfs_assert],
AC_HELP_STRING([--disable-libcfs-assert],
- [disable libcfs LASSERT, LASSERTF]),
- [],[enable_libcfs_assert='yes'])
+ [disable libcfs LASSERT, LASSERTF]),
+ [], [enable_libcfs_assert="yes"])
AC_MSG_RESULT([$enable_libcfs_assert])
-if test x$enable_libcfs_assert = xyes; then
- AC_DEFINE(LIBCFS_DEBUG, 1, [enable libcfs LASSERT, LASSERTF])
-fi
-])
+AS_IF([test x$enable_libcfs_assert = xyes],
+ [AC_DEFINE(LIBCFS_DEBUG, 1, [enable libcfs LASSERT, LASSERTF])])
+]) # LN_CONFIG_CDEBUG
#
# LIBCFS_CONFIG_PANIC_DUMPLOG
#
# check if tunable panic_dumplog is wanted
#
-AC_DEFUN([LIBCFS_CONFIG_PANIC_DUMPLOG],
-[AC_MSG_CHECKING([for tunable panic_dumplog support])
+AC_DEFUN([LIBCFS_CONFIG_PANIC_DUMPLOG], [
+AC_MSG_CHECKING([whether to use tunable 'panic_dumplog' support])
AC_ARG_ENABLE([panic_dumplog],
- AC_HELP_STRING([--enable-panic_dumplog],
- [enable panic_dumplog]),
- [],[enable_panic_dumplog='no'])
-if test x$enable_panic_dumplog = xyes ; then
- AC_DEFINE(LNET_DUMP_ON_PANIC, 1, [use dumplog on panic])
- AC_MSG_RESULT([yes (by request)])
-else
- AC_MSG_RESULT([no])
-fi
-])
+ AC_HELP_STRING([--enable-panic_dumplog],
+ [enable panic_dumplog]),
+ [], [enable_panic_dumplog="no"])
+AC_MSG_RESULT([$enable_panic_dumplog])
+AS_IF([test "x$enable_panic_dumplog" = xyes],
+ [AC_DEFINE(LNET_DUMP_ON_PANIC, 1, [use dumplog on panic])])
+]) # LIBCFS_CONFIG_PANIC_DUMPLOG
+#
+# LIBCFS_U64_LONG_LONG_LINUX
+#
# check kernel __u64 type
-AC_DEFUN([LIBCFS_U64_LONG_LONG_LINUX],
-[
-AC_MSG_CHECKING([kernel __u64 is long long type])
+#
+AC_DEFUN([LIBCFS_U64_LONG_LONG_LINUX], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Werror"
-LB_LINUX_TRY_COMPILE([
+LB_CHECK_COMPILE([if Linux kernel '__u64' is 'long long' type],
+kernel_u64_long_long, [
#include <linux/types.h>
#include <linux/stddef.h>
],[
unsigned long long *data;
-
data = (__u64*)sizeof(data);
],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_KERN__U64_LONG_LONG, 1,
- [kernel __u64 is long long type])
-],[
- AC_MSG_RESULT([no])
+ AC_DEFINE(HAVE_KERN__U64_LONG_LONG, 1,
+ [Linux kernel __u64 is long long type])
])
EXTRA_KCFLAGS="$tmp_flags"
-])
+]) # LIBCFS_U64_LONG_LONG_LINUX
#
# LIBCFS_STACKTRACE_OPS_HAVE_WALK_STACK
#
# 2.6.32-30.el6 adds a new 'walk_stack' field in 'struct stacktrace_ops'
#
-AC_DEFUN([LIBCFS_STACKTRACE_OPS_HAVE_WALK_STACK],
-[AC_MSG_CHECKING([if 'struct stacktrace_ops' has 'walk_stack' field])
-LB_LINUX_TRY_COMPILE([
- #include <asm/stacktrace.h>
-],[
- ((struct stacktrace_ops *)0)->walk_stack(NULL, NULL, 0, NULL, NULL, NULL, NULL);
+AC_DEFUN([LIBCFS_STACKTRACE_OPS_HAVE_WALK_STACK], [
+LB_CHECK_COMPILE([if 'struct stacktrace_ops' has 'walk_stack' field],
+stacktrace_ops_walk_stack, [
+ #include <asm/stacktrace.h>
],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(STACKTRACE_OPS_HAVE_WALK_STACK, 1, ['struct stacktrace_ops' has 'walk_stack' field])
+ ((struct stacktrace_ops *)0)->walk_stack(NULL, NULL, 0, NULL, NULL, NULL, NULL);
],[
- AC_MSG_RESULT([no])
+ AC_DEFINE(STACKTRACE_OPS_HAVE_WALK_STACK, 1,
+ ['struct stacktrace_ops' has 'walk_stack' field])
])
+]) # LIBCFS_STACKTRACE_OPS_HAVE_WALK_STACK
+
+#
+# LIBCFS_STACKTRACE_WARNING
+#
+# 3.0 removes stacktrace_ops warning* functions
+#
+AC_DEFUN([LIBCFS_STACKTRACE_WARNING], [
+LB_CHECK_COMPILE([if 'stacktrace_ops.warning' is exist],
+stacktrace_ops_warning, [
+ struct task_struct;
+ struct pt_regs;
+ #include <asm/stacktrace.h>
+],[
+ ((struct stacktrace_ops *)0)->warning(NULL, NULL);
+],[
+ AC_DEFINE(HAVE_STACKTRACE_WARNING, 1,
+ [stacktrace_ops.warning is exist])
])
+]) # LIBCFS_STACKTRACE_WARNING
#
+# LC_SHRINKER_WANT_SHRINK_PTR
+#
# RHEL6/2.6.32 want to have pointer to shrinker self pointer in handler function
#
-AC_DEFUN([LC_SHRINKER_WANT_SHRINK_PTR],
-[AC_MSG_CHECKING([shrinker want self pointer in handler])
-LB_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-],[
- struct shrinker *tmp = NULL;
- tmp->shrink(tmp, 0, 0);
+AC_DEFUN([LC_SHRINKER_WANT_SHRINK_PTR], [
+LB_CHECK_COMPILE([if 'shrinker' want self pointer in handler],
+shrink_self_pointer, [
+ #include <linux/mm.h>
],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SHRINKER_WANT_SHRINK_PTR, 1,
- [shrinker want self pointer in handler])
+ struct shrinker *tmp = NULL;
+ tmp->shrink(tmp, 0, 0);
],[
- AC_MSG_RESULT(no)
-])
+ AC_DEFINE(HAVE_SHRINKER_WANT_SHRINK_PTR, 1,
+ [shrinker want self pointer in handler])
])
+]) # LC_SHRINKER_WANT_SHRINK_PTR
#
+# LIBCFS_SYSCTL_CTLNAME
+#
# 2.6.33 no longer has ctl_name & strategy field in struct ctl_table.
#
-AC_DEFUN([LIBCFS_SYSCTL_CTLNAME],
-[AC_MSG_CHECKING([if ctl_table has a ctl_name field])
-LB_LINUX_TRY_COMPILE([
- #include <linux/sysctl.h>
-],[
- struct ctl_table ct;
- ct.ctl_name = sizeof(ct);
+AC_DEFUN([LIBCFS_SYSCTL_CTLNAME], [
+LB_CHECK_COMPILE([if 'ctl_table' has a 'ctl_name' field],
+ctl_table_ctl_name, [
+ #include <linux/sysctl.h>
],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SYSCTL_CTLNAME, 1,
- [ctl_table has ctl_name field])
+ struct ctl_table ct;
+ ct.ctl_name = sizeof(ct);
],[
- AC_MSG_RESULT(no)
-])
+ AC_DEFINE(HAVE_SYSCTL_CTLNAME, 1,
+ [ctl_table has ctl_name field])
])
+]) # LIBCFS_SYSCTL_CTLNAME
#
# LIBCFS_ADD_WAIT_QUEUE_EXCLUSIVE
#
# 2.6.34 adds __add_wait_queue_exclusive
#
-AC_DEFUN([LIBCFS_ADD_WAIT_QUEUE_EXCLUSIVE],
-[AC_MSG_CHECKING([if __add_wait_queue_exclusive exists])
-LB_LINUX_TRY_COMPILE([
- #include <linux/wait.h>
-],[
- wait_queue_head_t queue;
- wait_queue_t wait;
-
- __add_wait_queue_exclusive(&queue, &wait);
+AC_DEFUN([LIBCFS_ADD_WAIT_QUEUE_EXCLUSIVE], [
+LB_CHECK_COMPILE([if '__add_wait_queue_exclusive' exists],
+__add_wait_queue_exclusive, [
+ #include <linux/wait.h>
],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE___ADD_WAIT_QUEUE_EXCLUSIVE, 1,
- [__add_wait_queue_exclusive exists])
+ wait_queue_head_t queue;
+ wait_queue_t wait;
+ __add_wait_queue_exclusive(&queue, &wait);
],[
- AC_MSG_RESULT(no)
-])
+ AC_DEFINE(HAVE___ADD_WAIT_QUEUE_EXCLUSIVE, 1,
+ [__add_wait_queue_exclusive exists])
])
+]) # LIBCFS_ADD_WAIT_QUEUE_EXCLUSIVE
#
+# LC_SK_SLEEP
+#
# 2.6.35 kernel has sk_sleep function
#
-AC_DEFUN([LC_SK_SLEEP],
-[AC_MSG_CHECKING([if kernel has sk_sleep])
-LB_LINUX_TRY_COMPILE([
- #include <net/sock.h>
-],[
- sk_sleep(NULL);
+AC_DEFUN([LC_SK_SLEEP], [
+LB_CHECK_COMPILE([if Linux kernel has 'sk_sleep'],
+sk_sleep, [
+ #include <net/sock.h>
],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SK_SLEEP, 1, [kernel has sk_sleep])
+ sk_sleep(NULL);
],[
- AC_MSG_RESULT(no)
-],[
-])
+ AC_DEFINE(HAVE_SK_SLEEP, 1,
+ [kernel has sk_sleep])
])
+]) # LC_SK_SLEEP
+#
+# LIBCFS_DUMP_TRACE_ADDRESS
+#
# 2.6.39 adds a base pointer address argument to dump_trace
-AC_DEFUN([LIBCFS_DUMP_TRACE_ADDRESS],
-[AC_MSG_CHECKING([dump_trace want address])
-LB_LINUX_TRY_COMPILE([
+#
+AC_DEFUN([LIBCFS_DUMP_TRACE_ADDRESS], [
+LB_CHECK_COMPILE([if 'dump_trace' want address],
+dump_trace_address, [
struct task_struct;
struct pt_regs;
#include <asm/stacktrace.h>
],[
dump_trace(NULL, NULL, NULL, 0, NULL, NULL);
],[
- AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_DUMP_TRACE_ADDRESS, 1,
[dump_trace want address argument])
-],[
- AC_MSG_RESULT(no)
-],[
-])
])
+]) # LIBCFS_DUMP_TRACE_ADDRESS
#
+# LC_SHRINK_CONTROL
+#
# FC15 2.6.40-5 backported the "shrink_control" parameter to the memory
# pressure shrinker from Linux 3.0
#
-AC_DEFUN([LC_SHRINK_CONTROL],
-[AC_MSG_CHECKING([shrink_control is present])
-LB_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-],[
- struct shrink_control tmp = {0};
- tmp.nr_to_scan = sizeof(tmp);
+AC_DEFUN([LC_SHRINK_CONTROL], [
+LB_CHECK_COMPILE([if 'shrink_control' is present],
+shrink_control, [
+ #include <linux/mm.h>
],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SHRINK_CONTROL, 1,
- [shrink_control is present])
+ struct shrink_control tmp = {0};
+ tmp.nr_to_scan = sizeof(tmp);
],[
- AC_MSG_RESULT(no)
-])
-])
-
-# 3.0 removes stacktrace_ops warning* functions
-AC_DEFUN([LIBCFS_STACKTRACE_WARNING],
-[AC_MSG_CHECKING([whether stacktrace_ops.warning is exist])
-LB_LINUX_TRY_COMPILE([
- struct task_struct;
- struct pt_regs;
- #include <asm/stacktrace.h>
-],[
- ((struct stacktrace_ops *)0)->warning(NULL, NULL);
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_STACKTRACE_WARNING, 1, [stacktrace_ops.warning is exist])
-],[
- AC_MSG_RESULT(no)
-],[
-])
+ AC_DEFINE(HAVE_SHRINK_CONTROL, 1,
+ [shrink_control is present])
])
+]) # LC_SHRINK_CONTROL
+#
+# LIBCFS_PROCESS_NAMESPACE
+#
# 3.4 introduced process namespace
-AC_DEFUN([LIBCFS_PROCESS_NAMESPACE],[
+AC_DEFUN([LIBCFS_PROCESS_NAMESPACE], [
LB_CHECK_LINUX_HEADER([linux/uidgid.h], [
- AC_DEFINE(HAVE_UIDGID_HEADER, 1, [uidgid.h is present])
-])
-])
+ AC_DEFINE(HAVE_UIDGID_HEADER, 1,
+ [uidgid.h is present])])
+]) # LIBCFS_PROCESS_NAMESPACE
#
+# LIBCFS_SOCK_ALLOC_FILE
+#
# FC18 3.7.2-201 unexport sock_map_fd() change to
# use sock_alloc_file().
# upstream commit 56b31d1c9f1e6a3ad92e7bfe252721e05d92b285
#
-AC_DEFUN([LIBCFS_SOCK_ALLOC_FILE],
-[LB_CHECK_SYMBOL_EXPORT([sock_alloc_file], [net/socket.c],[
- LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LIBCFS_SOCK_ALLOC_FILE], [
+LB_CHECK_EXPORT([sock_alloc_file], [net/socket.c], [
+ LB_CHECK_COMPILE([if 'sock_alloc_file' takes 3 arguments],
+ sock_alloc_file_3args, [
#include <linux/net.h>
],[
sock_alloc_file(NULL, 0, NULL);
AC_DEFINE(HAVE_SOCK_ALLOC_FILE, 1,
[sock_alloc_file is exported])
])
-],[
-])
])
+]) # LIBCFS_SOCK_ALLOC_FILE
-AC_DEFUN([LIBCFS_HAVE_CRC32],
-[LB_LINUX_CONFIG_IM([CRC32],
- [have_crc32=true],[have_crc32=false])
-if test x$have_crc32 = xtrue; then
- AC_DEFINE(HAVE_CRC32, 1, [kernel compiled with CRC32 functions])
-fi
-])
+#
+# LIBCFS_HAVE_CRC32
+#
+AC_DEFUN([LIBCFS_HAVE_CRC32], [
+LB_CHECK_CONFIG_IM([CRC32],
+ [have_crc32="yes"], [have_crc32="no"])
+AS_IF([test "x$have_crc32" = xyes],
+ [AC_DEFINE(HAVE_CRC32, 1,
+ [kernel compiled with CRC32 functions])])
+]) # LIBCFS_HAVE_CRC32
-AC_DEFUN([LIBCFS_ENABLE_CRC32_ACCEL],
-[LB_LINUX_CONFIG_IM([CRYPTO_CRC32_PCLMUL],
- [enable_crc32_crypto=false],[enable_crc32_crypto=true])
-if test x$have_crc32 = xtrue -a x$enable_crc32_crypto = xtrue; then
+#
+# LIBCFS_ENABLE_CRC32_ACCEL
+#
+AC_DEFUN([LIBCFS_ENABLE_CRC32_ACCEL], [
+LB_CHECK_CONFIG_IM([CRYPTO_CRC32_PCLMUL],
+ [enable_crc32_crypto="no"], [enable_crc32_crypto="yes"])
+AS_IF([test "x$have_crc32" = xyes -a "x$enable_crc32_crypto" = xyes], [
AC_DEFINE(NEED_CRC32_ACCEL, 1, [need pclmulqdq based crc32])
AC_MSG_WARN([
No crc32 pclmulqdq crypto api found, enable internal pclmulqdq based crc32
-])
-fi
-])
+])])
+]) # LIBCFS_ENABLE_CRC32_ACCEL
-AC_DEFUN([LIBCFS_ENABLE_CRC32C_ACCEL],
-[LB_LINUX_CONFIG_IM([CRYPTO_CRC32C_INTEL],
- [enable_crc32c_crypto=false],[enable_crc32c_crypto=true])
-if test x$enable_crc32c_crypto = xtrue; then
+#
+# LIBCFS_ENABLE_CRC32C_ACCEL
+#
+AC_DEFUN([LIBCFS_ENABLE_CRC32C_ACCEL], [
+LB_CHECK_CONFIG_IM([CRYPTO_CRC32C_INTEL],
+ [enable_crc32c_crypto="no"], [enable_crc32c_crypto="yes"])
+AS_IF([test "x$enable_crc32c_crypto" = xyes], [
AC_DEFINE(NEED_CRC32C_ACCEL, 1, [need pclmulqdq based crc32c])
AC_MSG_WARN([
No crc32c pclmulqdq crypto api found, enable internal pclmulqdq based crc32c
-])
-fi
-])
+])])
+]) # LIBCFS_ENABLE_CRC32C_ACCEL
#
# LIBCFS_PROG_LINUX
#
-# LNet linux kernel checks
+# LibCFS linux kernel checks
#
-AC_DEFUN([LIBCFS_PROG_LINUX],
-[
+AC_DEFUN([LIBCFS_PROG_LINUX], [
+AC_MSG_NOTICE([LibCFS kernel checks
+==============================================================================])
LIBCFS_CONFIG_PANIC_DUMPLOG
LIBCFS_U64_LONG_LONG_LINUX
LIBCFS_ENABLE_CRC32_ACCEL
# 3.10
LIBCFS_ENABLE_CRC32C_ACCEL
-])
+]) # LIBCFS_PROG_LINUX
#
# LIBCFS_PROG_DARWIN
#
# Darwin checks
#
-AC_DEFUN([LIBCFS_PROG_DARWIN],
-[LB_DARWIN_CHECK_FUNCS([get_preemption_level])
-])
+AC_DEFUN([LIBCFS_PROG_DARWIN], [
+LB_DARWIN_CHECK_FUNCS([get_preemption_level])
+]) # LIBCFS_PROG_DARWIN
#
# LIBCFS_PATH_DEFAULTS
#
# default paths for installed files
#
-AC_DEFUN([LIBCFS_PATH_DEFAULTS],
-[
-])
+AC_DEFUN([LIBCFS_PATH_DEFAULTS], [
+]) # LIBCFS_PATH_DEFAULTS
#
# LIBCFS_CONFIGURE
#
# other configure checks
#
-AC_DEFUN([LIBCFS_CONFIGURE],
-[# lnet/utils/portals.c
+AC_DEFUN([LIBCFS_CONFIGURE], [
+AC_MSG_NOTICE([LibCFS core checks
+==============================================================================])
+
+# lnet/utils/portals.c
AC_CHECK_HEADERS([asm/types.h endian.h sys/ioctl.h])
# lnet/utils/debug.c
[#include <asm/types.h>])
# check userland __u64 type
-AC_MSG_CHECKING([userspace __u64 is long long type])
tmp_flags="$CFLAGS"
CFLAGS="$CFLAGS -Werror"
+AC_CACHE_CHECK([if userspace '__u64' is 'long long' type],
+lb_cv_compile_userspace_u64_long_long, [
AC_COMPILE_IFELSE([
#include <stdio.h>
#include <linux/types.h>
int main(void) {
unsigned long long *data1;
__u64 *data2 = NULL;
-
data1 = data2;
data2 = data1;
return 0;
}
-],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_USER__U64_LONG_LONG, 1,
- [__u64 is long long type])
-],[
- AC_MSG_RESULT([no])
+],
+ [lb_cv_compile_userspace_u64_long_long="yes"],
+ [lb_cv_compile_userspace_u64_long_long="no"])
])
CFLAGS="$tmp_flags"
+AS_IF([test "x$lb_cv_compile_userspace_u64_long_long" = xyes],
+ [AC_DEFINE(HAVE_USER__U64_LONG_LONG, 1,
+ [__u64 is long long type])])
# -------- Check for required packages --------------
+AC_MSG_NOTICE([LibCFS required packages checks
+==============================================================================])
-AC_MSG_CHECKING([if efence debugging support is requested])
+AC_MSG_CHECKING([whether to enable 'efence' debugging support])
AC_ARG_ENABLE(efence,
AC_HELP_STRING([--enable-efence],
- [use efence library]),
- [],[enable_efence='no'])
+ [use efence library]),
+ [], [enable_efence="no"])
AC_MSG_RESULT([$enable_efence])
-if test "$enable_efence" = "yes" ; then
+AS_IF([test "$enable_efence" = yes], [
LIBEFENCE="-lefence"
AC_DEFINE(HAVE_LIBEFENCE, 1, [libefence support is requested])
-else
+], [
LIBEFENCE=""
-fi
+])
AC_SUBST(LIBEFENCE)
-
# -------- check for -lpthread support ----
+
+AC_MSG_CHECKING([whether to use libpthread for libcfs library])
AC_ARG_ENABLE([libpthread],
- AC_HELP_STRING([--disable-libpthread],
- [disable libpthread]),
- [],[enable_libpthread=yes])
-if test "$enable_libpthread" = "yes" ; then
+ AC_HELP_STRING([--disable-libpthread],
+ [disable libpthread]),
+ [], [enable_libpthread="yes"])
+AC_MSG_RESULT([$enable_libpthread])
+AS_IF([test "x$enable_libpthread" = xyes], [
AC_CHECK_LIB([pthread], [pthread_create],
[ENABLE_LIBPTHREAD="yes"],
[ENABLE_LIBPTHREAD="no"])
- AC_MSG_CHECKING([whether to use libpthread for libcfs library])
- AC_MSG_RESULT([$ENABLE_LIBPTHREAD])
- if test "$ENABLE_LIBPTHREAD" = "yes" ; then
+ AS_IF([test "$ENABLE_LIBPTHREAD" = yes], [
PTHREAD_LIBS="-lpthread"
AC_DEFINE([HAVE_LIBPTHREAD], 1, [use libpthread])
- else
+ ], [
PTHREAD_LIBS=""
- fi
+ ])
AC_SUBST(PTHREAD_LIBS)
-else
+], [
AC_MSG_WARN([Using libpthread for libcfs library is disabled explicitly])
ENABLE_LIBPTHREAD="no"
-fi
-AC_SUBST(ENABLE_LIBPTHREAD)
])
+AC_SUBST(ENABLE_LIBPTHREAD)
+]) # LIBCFS_CONFIGURE
#
# LIBCFS_CONDITIONALS
#
-# AM_CONDITOINAL defines for lnet
-#
-AC_DEFUN([LIBCFS_CONDITIONALS],
-[
-AM_CONDITIONAL(HAVE_CRC32, test x$have_crc32 = xtrue)
-AM_CONDITIONAL(NEED_PCLMULQDQ_CRC32, test x$have_crc32 = xtrue -a x$enable_crc32_crypto = xtrue)
-AM_CONDITIONAL(NEED_PCLMULQDQ_CRC32C, test x$enable_crc32c_crypto = xtrue)
-])
+AC_DEFUN([LIBCFS_CONDITIONALS], [
+AM_CONDITIONAL(HAVE_CRC32, [test "x$have_crc32" = xyes])
+AM_CONDITIONAL(NEED_PCLMULQDQ_CRC32, [test "x$have_crc32" = xyes -a "x$enable_crc32_crypto" = xyes])
+AM_CONDITIONAL(NEED_PCLMULQDQ_CRC32C, [test "x$enable_crc32c_crypto" = xyes])
+]) # LIBCFS_CONDITIONALS
#
# LIBCFS_CONFIG_FILES
#
# files that should be generated with AC_OUTPUT
#
-AC_DEFUN([LIBCFS_CONFIG_FILES],
-[AC_CONFIG_FILES([
+AC_DEFUN([LIBCFS_CONFIG_FILES], [
+AC_CONFIG_FILES([
libcfs/Kernelenv
libcfs/Makefile
libcfs/autoMakefile
libcfs/include/libcfs/darwin/Makefile
libcfs/libcfs/darwin/Makefile
])
-])
+]) # LIBCFS_CONFIG_FILES
#
# configure maximum payload
#
-AC_DEFUN([LN_CONFIG_MAX_PAYLOAD],
-[AC_MSG_CHECKING([for non-default maximum LNET payload])
+AC_DEFUN([LN_CONFIG_MAX_PAYLOAD], [
+AC_MSG_CHECKING([for non-default maximum LNET payload])
AC_ARG_WITH([max-payload-mb],
AC_HELP_STRING([--with-max-payload-mb=MBytes],
- [set maximum lnet payload in MBytes]),
- [
+ [set maximum lnet payload in MBytes]),
+ [
AC_MSG_RESULT([$with_max_payload_mb])
CONFIG_LNET_MAX_PAYLOAD_MB=$with_max_payload_mb
CONFIG_LNET_MAX_PAYLOAD="(($with_max_payload_mb)<<20)"
AC_MSG_RESULT([no])
CONFIG_LNET_MAX_PAYLOAD="LNET_MTU"
])
- AC_DEFINE_UNQUOTED(CONFIG_LNET_MAX_PAYLOAD, $CONFIG_LNET_MAX_PAYLOAD,
- [Max LNET payload])
-])
+AC_DEFINE_UNQUOTED(CONFIG_LNET_MAX_PAYLOAD, $CONFIG_LNET_MAX_PAYLOAD,
+ [Max LNET payload])
+]) # LN_CONFIG_MAX_PAYLOAD
#
# LN_CHECK_GCC_VERSION
#
# Check compiler version
#
-AC_DEFUN([LN_CHECK_GCC_VERSION],
-[AC_MSG_CHECKING([compiler version])
+AC_DEFUN([LN_CHECK_GCC_VERSION], [
+AC_MSG_CHECKING([compiler version])
PTL_CC_VERSION=`$CC --version | awk '/^gcc/{print $ 3}'`
PTL_MIN_CC_VERSION="3.2.2"
v2n() {
awk -F. '{printf "%d\n", (($ 1)*100+($ 2))*100+($ 3)}'
}
if test -z "$PTL_CC_VERSION" -o \
- `echo $PTL_CC_VERSION | v2n` -ge `echo $PTL_MIN_CC_VERSION | v2n`; then
+ $(echo $PTL_CC_VERSION | v2n) -ge $(echo $PTL_MIN_CC_VERSION | v2n); then
AC_MSG_RESULT([ok])
else
AC_MSG_RESULT([Buggy compiler found])
AC_MSG_ERROR([Need gcc version >= $PTL_MIN_CC_VERSION])
fi
-])
+]) # LN_CHECK_GCC_VERSION
#
# LN_FUNC_DEV_GET_BY_NAME_2ARG
#
-AC_DEFUN([LN_FUNC_DEV_GET_BY_NAME_2ARG],
-[AC_MSG_CHECKING([if dev_get_by_name has two args])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LN_FUNC_DEV_GET_BY_NAME_2ARG], [
+LB_CHECK_COMPILE([if 'dev_get_by_name' has two args],
+dev_get_by_name_2args, [
#include <linux/netdevice.h>
],[
- dev_get_by_name(NULL, NULL);
-],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_DEV_GET_BY_NAME_2ARG, 1, [dev_get_by_name has 2 args])
+ dev_get_by_name(NULL, NULL);
],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_DEV_GET_BY_NAME_2ARG, 1,
+ [dev_get_by_name has 2 args])
])
+]) # LN_FUNC_DEV_GET_BY_NAME_2ARG
#
# LN_CONFIG_AFFINITY
#
# check if cpu affinity is available/wanted
#
-AC_DEFUN([LN_CONFIG_AFFINITY],
-[AC_ARG_ENABLE([affinity],
+AC_DEFUN([LN_CONFIG_AFFINITY], [
+AC_MSG_CHECKING([whether to enable CPU affinity support])
+AC_ARG_ENABLE([affinity],
AC_HELP_STRING([--disable-affinity],
- [disable process/irq affinity]),
- [],[enable_affinity='yes'])
-
-AC_MSG_CHECKING([for CPU affinity support])
-if test x$enable_affinity = xno ; then
- AC_MSG_RESULT([no (by request)])
-else
- LB_LINUX_TRY_COMPILE([
+ [disable process/irq affinity]),
+ [], [enable_affinity="yes"])
+AC_MSG_RESULT([$enable_affinity])
+AS_IF([test "x$enable_affinity" = xyes], [
+ LB_CHECK_COMPILE([if Linux kernel has cpu affinity support],
+ set_cpus_allowed_ptr, [
#include <linux/sched.h>
],[
struct task_struct *t;
#if HAVE_CPUMASK_T
cpumask_t m;
- #else
- unsigned long m;
+ #else
+ unsigned long m;
#endif
set_cpus_allowed_ptr(t, &m);
],[
- AC_DEFINE(CPU_AFFINITY, 1, [kernel has cpu affinity support])
- AC_MSG_RESULT([yes])
- ],[
- AC_MSG_RESULT([no (no kernel support)])
+ AC_DEFINE(CPU_AFFINITY, 1,
+ [kernel has cpu affinity support])
])
-fi
])
+]) # LN_CONFIG_AFFINITY
#
# LN_CONFIG_BACKOFF
#
# check if tunable tcp backoff is available/wanted
#
-AC_DEFUN([LN_CONFIG_BACKOFF],
-[AC_MSG_CHECKING([for tunable backoff TCP support])
+AC_DEFUN([LN_CONFIG_BACKOFF], [
+AC_MSG_CHECKING([whether to enable tunable backoff TCP support])
AC_ARG_ENABLE([backoff],
- AC_HELP_STRING([--disable-backoff],
- [disable socknal tunable backoff]),
- [],[enable_backoff='yes'])
-if test x$enable_backoff = xno ; then
- AC_MSG_RESULT([no (by request)])
-else
- BOCD="`grep -c TCP_BACKOFF $LINUX/include/linux/tcp.h`"
- if test "$BOCD" != 0 ; then
- AC_DEFINE(SOCKNAL_BACKOFF, 1, [use tunable backoff TCP])
- AC_MSG_RESULT(yes)
- if grep rto_max $LINUX/include/linux/tcp.h|grep -q __u16; then
- AC_DEFINE(SOCKNAL_BACKOFF_MS, 1, [tunable backoff TCP in ms])
- fi
- else
- AC_MSG_RESULT([no (no kernel support)])
- fi
-fi
+ AC_HELP_STRING([--disable-backoff],
+ [disable socknal tunable backoff]),
+ [], [enable_backoff="yes"])
+AC_MSG_RESULT([$enable_backoff])
+AS_IF([test "x$enable_backoff" = xyes], [
+ AC_MSG_CHECKING([if Linux kernel has tunable backoff TCP support])
+ AS_IF([grep -c TCP_BACKOFF $LINUX/include/linux/tcp.h >/dev/null], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(SOCKNAL_BACKOFF, 1, [use tunable backoff TCP])
+ AS_IF([grep rto_max $LINUX/include/linux/tcp.h | grep -q __u16 >/dev/null],
+ [AC_DEFINE(SOCKNAL_BACKOFF_MS, 1,
+ [tunable backoff TCP in ms])])
+ ], [
+ AC_MSG_RESULT([no])
+ ])
])
+]) # LN_CONFIG_BACKOFF
#
# LN_CONFIG_USOCKLND
#
# configure support for userspace TCP/IP LND
#
-AC_DEFUN([LN_CONFIG_USOCKLND],
-[AC_MSG_CHECKING([whether to build usocklnd])
+AC_DEFUN([LN_CONFIG_USOCKLND], [
+AC_MSG_CHECKING([whether to enable usocklnd])
AC_ARG_ENABLE([usocklnd],
- AC_HELP_STRING([--disable-usocklnd],
- [disable usocklnd]),
- [],[enable_usocklnd='yes'])
-
-if test x$enable_usocklnd = xyes ; then
- if test "$ENABLE_LIBPTHREAD" = "yes" ; then
+ AC_HELP_STRING([--disable-usocklnd],
+ [disable usocklnd]),
+ [], [enable_usocklnd="yes"])
+AC_MSG_RESULT([$enable_usocklnd])
+USOCKLND=""
+AS_IF([test "x$enable_usocklnd" = xyes], [
+ AC_MSG_CHECKING([whether to build usocklnd])
+ AS_IF([test "$ENABLE_LIBPTHREAD" = yes], [
AC_MSG_RESULT([yes])
- USOCKLND="usocklnd"
- else
+ USOCKLND="usocklnd"
+ ], [
AC_MSG_RESULT([no (libpthread not present or disabled)])
- USOCKLND=""
- fi
-else
- AC_MSG_RESULT([no (disabled explicitly)])
- USOCKLND=""
-fi
-AC_SUBST(USOCKLND)
+ ])
])
+AC_SUBST(USOCKLND)
+]) # LN_CONFIG_USOCKLND
#
# LN_CONFIG_QUADRICS
#
# check if quadrics support is in this kernel
#
-AC_DEFUN([LN_CONFIG_QUADRICS],
-[AC_MSG_CHECKING([for QsNet sources])
+AC_DEFUN([LN_CONFIG_QUADRICS], [
+AC_MSG_CHECKING([for QsNet sources])
AC_ARG_WITH([qsnet],
AC_HELP_STRING([--with-qsnet=path],
- [set path to qsnet source (default=$LINUX)]),
- [QSNET=$with_qsnet],
- [QSNET=$LINUX])
+ [set path to qsnet source (default=$LINUX)]),
+ [QSNET=$with_qsnet], [QSNET=$LINUX])
AC_MSG_RESULT([$QSNET])
+QSWLND=""
+QSWCPPFLAGS=""
AC_MSG_CHECKING([if quadrics kernel headers are present])
-if test -d $QSNET/drivers/net/qsnet ; then
+AS_IF([test -d $QSNET/drivers/net/qsnet], [
AC_MSG_RESULT([yes])
QSWLND="qswlnd"
AC_MSG_CHECKING([for multirail EKC])
- if test -f $QSNET/include/elan/epcomms.h; then
- QSNET=$(readlink --canonicalize $QSNET)
+ AS_IF([test -f $QSNET/include/elan/epcomms.h], [
AC_MSG_RESULT([supported])
+ QSNET=$(readlink --canonicalize $QSNET)
QSWCPPFLAGS="-I$QSNET/include -DMULTIRAIL_EKC=1"
- else
+ ], [
AC_MSG_RESULT([not supported])
AC_MSG_ERROR([Need multirail EKC])
- fi
+ ])
- if test x$QSNET = x$LINUX ; then
- LB_LINUX_CONFIG([QSNET],[],[
- LB_LINUX_CONFIG([QSNET_MODULE],[],[
+ AS_IF([test x$QSNET = x$LINUX], [
+ LB_CHECK_CONFIG([QSNET], [], [
+ LB_CHECK_CONFIG([QSNET_MODULE], [], [
AC_MSG_WARN([QSNET is not enabled in this kernel; not building qswlnd.])
QSWLND=""
QSWCPPFLAGS=""
])
])
- fi
-else
+ ])
+], [
AC_MSG_RESULT([no])
- QSWLND=""
- QSWCPPFLAGS=""
-fi
-AC_SUBST(QSWCPPFLAGS)
-AC_SUBST(QSWLND)
])
-
+AC_SUBST(QSWLND)
+AC_SUBST(QSWCPPFLAGS)
+]) # LN_CONFIG_QUADRICS
#
# LN_CONFIG_MX
#
-AC_DEFUN([LN_CONFIG_MX],
-[AC_MSG_CHECKING([whether to enable Myrinet MX support])
+AC_DEFUN([LN_CONFIG_MX], [
# set default
MXPATH="/opt/mx"
+AC_MSG_CHECKING([whether to enable Myrinet MX support])
AC_ARG_WITH([mx],
- AC_HELP_STRING([--with-mx=path],
- [build mxlnd against path]),
- [
- case $with_mx in
- yes) ENABLEMX=2
- ;;
- no) ENABLEMX=0
- ;;
- *) MXPATH=$with_mx
- ENABLEMX=3
- ;;
- esac
- ],[
- ENABLEMX=1
- ])
-if test $ENABLEMX -eq 0; then
- AC_MSG_RESULT([disabled])
-elif test ! \( -f ${MXPATH}/include/myriexpress.h -a \
- -f ${MXPATH}/include/mx_kernel_api.h -a \
- -f ${MXPATH}/include/mx_pin.h \); then
- AC_MSG_RESULT([no])
- case $ENABLEMX in
- 1) ;;
- 2) AC_MSG_ERROR([Myrinet MX kernel headers not present]);;
- 3) AC_MSG_ERROR([bad --with-mx path]);;
- *) AC_MSG_ERROR([internal error]);;
- esac
-else
- MXPATH=$(readlink --canonicalize $MXPATH)
- MXCPPFLAGS="-I$MXPATH/include"
- EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
- EXTRA_KCFLAGS="$EXTRA_KCFLAGS $MXCPPFLAGS"
- MXLIBS="-L$MXPATH/lib"
- LB_LINUX_TRY_COMPILE([
- #define MX_KERNEL 1
- #include <mx_extensions.h>
- #include <myriexpress.h>
- ],[
- mx_endpoint_t end;
- mx_status_t status;
- mx_request_t request;
- int result;
-
- mx_init();
- mx_open_endpoint(MX_ANY_NIC, MX_ANY_ENDPOINT, 0, NULL, 0, &end);
- mx_register_unexp_handler(end, (mx_unexp_handler_t) NULL, NULL);
- mx_wait_any(end, MX_INFINITE, 0LL, 0LL, &status, &result);
- mx_iconnect(end, 0LL, 0, 0, 0, NULL, &request);
- return 0;
- ],[
- AC_MSG_RESULT([yes])
- MXLND="mxlnd"
- ],[
- AC_MSG_RESULT([no])
- case $ENABLEMX in
- 1) ;;
- 2) AC_MSG_ERROR([can't compile with Myrinet MX kernel headers]);;
- 3) AC_MSG_ERROR([can't compile with Myrinet MX headers under $MXPATH]);;
- *) AC_MSG_ERROR([internal error]);;
- esac
- MXLND=""
- MXCPPFLAGS=""
- ])
- EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
-fi
+ AC_HELP_STRING([--with-mx=path],
+ [build mxlnd against path]),
+ [
+ case $with_mx in
+ yes) ENABLEMX=2 ;;
+ no) ENABLEMX=0 ;;
+ *) ENABLEMX=3; MXPATH=$with_mx ;;
+ esac
+ ],[
+ ENABLEMX=1
+ ])
+AS_IF([test $ENABLEMX -eq 0], [
+ AC_MSG_RESULT([disabled])
+], [test ! \( -f ${MXPATH}/include/myriexpress.h -a \
+ -f ${MXPATH}/include/mx_kernel_api.h -a \
+ -f ${MXPATH}/include/mx_pin.h \)], [
+ AC_MSG_RESULT([no])
+ case $ENABLEMX in
+ 1) ;;
+ 2) AC_MSG_ERROR([Myrinet MX kernel headers not present]) ;;
+ 3) AC_MSG_ERROR([bad --with-mx path]) ;;
+ *) AC_MSG_ERROR([internal error]) ;;
+ esac
+], [
+ AC_MSG_RESULT([check])
+ MXPATH=$(readlink --canonicalize $MXPATH)
+ MXCPPFLAGS="-I$MXPATH/include"
+ MXLIBS="-L$MXPATH/lib"
+ EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS $MXCPPFLAGS"
+ LB_CHECK_COMPILE([if have Myrinet MX support],
+ myrinet_mx_support, [
+ #define MX_KERNEL 1
+ #include <mx_extensions.h>
+ #include <myriexpress.h>
+ ],[
+ mx_endpoint_t end;
+ mx_status_t status;
+ mx_request_t request;
+ int result;
+ mx_init();
+ mx_open_endpoint(MX_ANY_NIC, MX_ANY_ENDPOINT, 0, NULL, 0, &end);
+ mx_register_unexp_handler(end, (mx_unexp_handler_t) NULL, NULL);
+ mx_wait_any(end, MX_INFINITE, 0LL, 0LL, &status, &result);
+ mx_iconnect(end, 0LL, 0, 0, 0, NULL, &request);
+ return 0;
+ ],[
+ MXLND="mxlnd"
+ ],[
+ case $ENABLEMX in
+ 1) ;;
+ 2) AC_MSG_ERROR([can't compile with Myrinet MX kernel headers]) ;;
+ 3) AC_MSG_ERROR([can't compile with Myrinet MX headers under $MXPATH]) ;;
+ *) AC_MSG_ERROR([internal error]) ;;
+ esac
+ MXCPPFLAGS=""
+ MXLIBS=""
+ MXLND=""
+ ])
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+])
AC_SUBST(MXCPPFLAGS)
AC_SUBST(MXLIBS)
AC_SUBST(MXLND)
-])
-
-
+]) # LN_CONFIG_MX
#
# LN_CONFIG_O2IB
#
-AC_DEFUN([LN_CONFIG_O2IB],
-[AC_MSG_CHECKING([whether to use Compat RDMA])
-# set default
+AC_DEFUN([LN_CONFIG_O2IB], [
+AC_MSG_CHECKING([whether to use Compat RDMA])
AC_ARG_WITH([o2ib],
AC_HELP_STRING([--with-o2ib=path],
- [build o2iblnd against path]),
+ [build o2iblnd against path]),
[
case $with_o2ib in
yes) O2IBPATHS="$LINUX $LINUX/drivers/infiniband"
O2IBPATHS="$LINUX $LINUX/drivers/infiniband"
ENABLEO2IB=1
])
-if test $ENABLEO2IB -eq 0; then
+AS_IF([test $ENABLEO2IB -eq 0], [
AC_MSG_RESULT([no])
-else
+], [
o2ib_found=false
for O2IBPATH in $O2IBPATHS; do
- if test \( -f ${O2IBPATH}/include/rdma/rdma_cm.h -a \
+ AS_IF([test \( -f ${O2IBPATH}/include/rdma/rdma_cm.h -a \
-f ${O2IBPATH}/include/rdma/ib_cm.h -a \
-f ${O2IBPATH}/include/rdma/ib_verbs.h -a \
- -f ${O2IBPATH}/include/rdma/ib_fmr_pool.h \); then
- if test \( -d ${O2IBPATH}/kernel_patches -a \
- -f ${O2IBPATH}/Makefile \); then
+ -f ${O2IBPATH}/include/rdma/ib_fmr_pool.h \)], [
+ AS_IF([test \( -d ${O2IBPATH}/kernel_patches -a \
+ -f ${O2IBPATH}/Makefile \)], [
AC_MSG_RESULT([no])
- AC_MSG_ERROR([you appear to be trying to use the OFED distribution's source directory (${O2IBPATH}) rather than the "development/headers" directory which is likely in ${O2IBPATH%-*}])
- fi
+ AC_MSG_ERROR([
+
+you appear to be trying to use the OFED distribution's source
+directory (${O2IBPATH}) rather than the "development/headers"
+directory which is likely in ${O2IBPATH%-*}
+])
+ ])
o2ib_found=true
break
- fi
+ ])
done
if ! $o2ib_found; then
AC_MSG_RESULT([no])
case $ENABLEO2IB in
1) ;;
- 2) AC_MSG_ERROR([kernel OpenIB gen2 headers not present]);;
- 3) AC_MSG_ERROR([bad --with-o2ib path]);;
- *) AC_MSG_ERROR([internal error]);;
+ 2) AC_MSG_ERROR([kernel OpenIB gen2 headers not present]) ;;
+ 3) AC_MSG_ERROR([bad --with-o2ib path]) ;;
+ *) AC_MSG_ERROR([internal error]) ;;
esac
else
compatrdma_found=false
if test -f ${O2IBPATH}/include/linux/compat-2.6.h; then
- compatrdma_found=true
AC_MSG_RESULT([yes])
+ compatrdma_found=true
AC_DEFINE(HAVE_COMPAT_RDMA, 1, [compat rdma found])
else
AC_MSG_RESULT([no])
fi
if ! $compatrdma_found; then
- if test -f $O2IBPATH/config.mk; then
- . $O2IBPATH/config.mk
- elif test -f $O2IBPATH/ofed_patch.mk; then
- . $O2IBPATH/ofed_patch.mk
+ if test -f "$O2IBPATH/config.mk"; then
+ . "$O2IBPATH/config.mk"
+ elif test -f "$O2IBPATH/ofed_patch.mk"; then
+ . "$O2IBPATH/ofed_patch.mk"
fi
else
- if test x$RHEL_KERNEL = xyes; then
- case $RHEL_KERNEL_VERSION in
+ if test "x$RHEL_KERNEL" = xyes; then
+ case "$RHEL_KERNEL_VERSION" in
2.6.32-358*)
- EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_6_4";;
+ EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_6_4" ;;
2.6.32-431*)
- EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_6_5";;
+ EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_6_5" ;;
esac
- elif test x$SUSE_KERNEL = xyes; then
+ elif test "x$SUSE_KERNEL" = xyes; then
SP=$(grep PATCHLEVEL /etc/SuSE-release | sed -e 's/.*= *//')
EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_SLES_11_$SP"
fi
fi
AC_MSG_CHECKING([whether to use any OFED backport headers])
if test -n "$BACKPORT_INCLUDES"; then
+ AC_MSG_RESULT([yes])
OFED_BACKPORT_PATH="$O2IBPATH/${BACKPORT_INCLUDES/*\/kernel_addons/kernel_addons}/"
EXTRA_OFED_INCLUDE="-I$OFED_BACKPORT_PATH $EXTRA_OFED_INCLUDE"
- AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
- AC_MSG_CHECKING([whether to enable OpenIB gen2 support])
+ O2IBLND=""
O2IBPATH=$(readlink --canonicalize $O2IBPATH)
EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -I$O2IBPATH/include"
-
- LB_LINUX_TRY_COMPILE([
- #include <linux/version.h>
- #include <linux/pci.h>
+ LB_CHECK_COMPILE([whether to enable OpenIB gen2 support],
+ openib_gen2_support, [
+ #include <linux/version.h>
+ #include <linux/pci.h>
#include <linux/gfp.h>
#ifdef HAVE_COMPAT_RDMA
#include <linux/compat-2.6.h>
#endif
- #include <rdma/rdma_cm.h>
- #include <rdma/ib_cm.h>
- #include <rdma/ib_verbs.h>
- #include <rdma/ib_fmr_pool.h>
+ #include <rdma/rdma_cm.h>
+ #include <rdma/ib_cm.h>
+ #include <rdma/ib_verbs.h>
+ #include <rdma/ib_fmr_pool.h>
],[
- struct rdma_cm_id *cm_idi __attribute__ ((unused));
- struct rdma_conn_param conn_param __attribute__ ((unused));
- struct ib_device_attr device_attr __attribute__ ((unused));
- struct ib_qp_attr qp_attr __attribute__ ((unused));
- struct ib_pool_fmr pool_fmr __attribute__ ((unused));
- enum ib_cm_rej_reason rej_reason __attribute__ ((unused));
-
+ struct rdma_cm_id *cm_idi __attribute__ ((unused));
+ struct rdma_conn_param conn_param __attribute__ ((unused));
+ struct ib_device_attr device_attr __attribute__ ((unused));
+ struct ib_qp_attr qp_attr __attribute__ ((unused));
+ struct ib_pool_fmr pool_fmr __attribute__ ((unused));
+ enum ib_cm_rej_reason rej_reason __attribute__ ((unused));
rdma_destroy_id(NULL);
],[
- AC_MSG_RESULT([yes])
- O2IBLND="o2iblnd"
+ O2IBLND="o2iblnd"
],[
- AC_MSG_RESULT([no])
- case $ENABLEO2IB in
- 1) ;;
- 2) AC_MSG_ERROR([can't compile with kernel OpenIB gen2 headers]);;
- 3) AC_MSG_ERROR([can't compile with OpenIB gen2 headers under $O2IBPATH]);;
- *) AC_MSG_ERROR([internal error]);;
- esac
- O2IBLND=""
+ case $ENABLEO2IB in
+ 1) ;;
+ 2) AC_MSG_ERROR([can't compile with kernel OpenIB gen2 headers]) ;;
+ 3) AC_MSG_ERROR([can't compile with OpenIB gen2 headers under $O2IBPATH]) ;;
+ *) AC_MSG_ERROR([internal error]) ;;
+ esac
])
# we know at this point that the found OFED source is good
O2IB_SYMVER=""
if test -f $PWD/$SYMVERFILE; then
egrep -v $(echo $(awk '{ print $2 }' $O2IBPATH/$O2IB_SYMVER) | tr ' ' '|') $PWD/$SYMVERFILE > $PWD/$SYMVERFILE.old
else
- touch $PWD/$SYMVERFILE.old
+ touch $PWD/$SYMVERFILE.old
fi
cat $PWD/$SYMVERFILE.old $O2IBPATH/$O2IB_SYMVER > $PWD/$SYMVERFILE
rm $PWD/$SYMVERFILE.old
LN_CONFIG_OFED_SPEC
fi
-fi
-
+])
AC_SUBST(EXTRA_OFED_INCLUDE)
AC_SUBST(O2IBLND)
# In RHEL 6.2, rdma_create_id() takes the queue-pair type as a fourth argument
-if test $ENABLEO2IB -ne 0; then
- AC_MSG_CHECKING([if rdma_create_id wants four args])
- LB_LINUX_TRY_COMPILE([
+AS_IF([test $ENABLEO2IB -ne 0], [
+ LB_CHECK_COMPILE([if 'rdma_create_id' wants four args],
+ rdma_create_id_4args, [
#ifdef HAVE_COMPAT_RDMA
#include <linux/compat-2.6.h>
#endif
],[
rdma_create_id(NULL, NULL, 0, 0);
],[
- AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_RDMA_CREATE_ID_4ARG, 1,
[rdma_create_id wants 4 args])
- ],[
- AC_MSG_RESULT([no])
])
-fi
])
+]) # LN_CONFIG_O2IB
#
# LN_CONFIG_RALND
#
# check whether to use the RapidArray lnd
#
-AC_DEFUN([LN_CONFIG_RALND],
-[#### Rapid Array
-AC_MSG_CHECKING([if RapidArray kernel headers are present])
-# placeholder
+AC_DEFUN([LN_CONFIG_RALND], [
+RALND=""
RACPPFLAGS="-I${LINUX}/drivers/xd1/include"
EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="$EXTRA_KCFLAGS $RACPPFLAGS"
-LB_LINUX_TRY_COMPILE([
+LB_CHECK_COMPILE([if 'RapidArray' kernel headers are present],
+RapkGetDeviceByIndex, [
#include <linux/types.h>
#include <rapl.h>
],[
- RAP_RETURN rc;
- RAP_PVOID dev_handle;
-
- rc = RapkGetDeviceByIndex(0, NULL, &dev_handle);
-
+ RAP_RETURN rc;
+ RAP_PVOID dev_handle;
+ rc = RapkGetDeviceByIndex(0, NULL, &dev_handle);
return rc == RAP_SUCCESS ? 0 : 1;
],[
- AC_MSG_RESULT([yes])
RALND="ralnd"
],[
- AC_MSG_RESULT([no])
- RALND=""
RACPPFLAGS=""
])
EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
AC_SUBST(RACPPFLAGS)
AC_SUBST(RALND)
-])
+]) # LN_CONFIG_RALND
#
# LN_CONFIG_GNILND
#
# check whether to use the Gemini Network Interface lnd
#
-AC_DEFUN([LN_CONFIG_GNILND],
-[#### Gemini Network Interface
+AC_DEFUN([LN_CONFIG_GNILND], [
AC_MSG_CHECKING([whether to enable GNI lnd])
AC_ARG_ENABLE([gni],
AC_HELP_STRING([--enable-gni],
- [enable GNI lnd]),
- [],[enable_gni='no'])
+ [enable GNI lnd]),
+ [], [enable_gni="no"])
AC_MSG_RESULT([$enable_gni])
-if test x$enable_gni = xyes ; then
- AC_MSG_CHECKING([if GNI kernel headers are present])
- # placeholder
+AS_IF([test "x$enable_gni" = xyes], [
# GNICPPFLAGS was set in spec file
EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="$EXTRA_KCFLAGS $GNICPPFLAGS"
- LB_LINUX_TRY_COMPILE([
+ LB_CHECK_COMPILE([if GNI kernel headers are present],
+ GNI_header, [
#include <linux/types.h>
#include <gni_pub.h>
],[
- gni_cdm_handle_t kgni_domain;
- gni_return_t rc;
- int rrc;
-
+ gni_cdm_handle_t kgni_domain;
+ gni_return_t rc;
+ int rrc;
rc = gni_cdm_create(0, 1, 1, 0, &kgni_domain);
-
rrc = (rc == GNI_RC_SUCCESS) ? 0 : 1;
-
return rrc;
],[
- AC_MSG_RESULT([yes])
GNILND="gnilnd"
],[
- AC_MSG_RESULT([no])
AC_MSG_ERROR([can't compile gnilnd with given GNICPPFLAGS: $GNICPPFLAGS])
])
- # at this point, we have gnilnd basic support, now check for extra features
- AC_MSG_CHECKING([to use RCA in gnilnd])
- LB_LINUX_TRY_COMPILE([
+ # at this point, we have gnilnd basic support,
+ # now check for extra features
+ LB_CHECK_COMPILE([to use RCA in gnilnd],
+ RCA_gnilnd, [
#include <linux/types.h>
#include <gni_pub.h>
#include <krca_lib.h>
],[
- gni_cdm_handle_t kgni_domain;
- gni_return_t rc;
- krca_ticket_t ticket = KRCA_NULL_TICKET;
- int rrc;
- __u32 nid = 0, nic_addr;
-
+ gni_cdm_handle_t kgni_domain;
+ gni_return_t rc;
+ krca_ticket_t ticket = KRCA_NULL_TICKET;
+ int rrc;
+ __u32 nid = 0, nic_addr;
rc = gni_cdm_create(0, 1, 1, 0, &kgni_domain);
-
rrc = (rc == GNI_RC_SUCCESS) ? 0 : 1;
-
rrc += krca_nid_to_nicaddrs(nid, 1, &nic_addr);
-
rrc += krca_register(&ticket, RCA_MAKE_SERVICE_INDEX(RCA_IO_CLASS, 9), 99, 0);
-
return rrc;
],[
- AC_MSG_RESULT([yes])
GNICPPFLAGS="$GNICPPFLAGS -DGNILND_USE_RCA=1"
GNILNDRCA="gnilndrca"
- ],[
- AC_MSG_RESULT([no])
])
EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
-fi
+])
AC_SUBST(GNICPPFLAGS)
AC_SUBST(GNILNDRCA)
AC_SUBST(GNILND)
-])
-
+]) # LN_CONFIG_GNILND
#
-#
# LN_CONFIG_USERSPACE
#
# This is defined but empty because it is called from
# build/autconf/lustre-build.m4 which is shared by all branches.
#
-AC_DEFUN([LN_CONFIG_USERSPACE],
-[
-])
+AC_DEFUN([LN_CONFIG_USERSPACE], [
+]) # LN_CONFIG_USERSPACE
#
+# LN_CONFIG_TCP_SENDPAGE
+#
# 2.6.36 tcp_sendpage() first parameter is 'struct sock' instead of 'struct socket'.
#
-AC_DEFUN([LN_CONFIG_TCP_SENDPAGE],
-[AC_MSG_CHECKING([if tcp_sendpage first parameter is socket])
+AC_DEFUN([LN_CONFIG_TCP_SENDPAGE], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
-LB_LINUX_TRY_COMPILE([
- #include <linux/net.h>
- #include <net/tcp.h>
+LB_CHECK_COMPILE([if 'tcp_sendpage' first parameter is socket],
+tcp_sendpage_socket, [
+ #include <linux/net.h>
+ #include <net/tcp.h>
],[
- tcp_sendpage((struct socket*)0, NULL, 0, 0, 0);
+ tcp_sendpage((struct socket*)0, NULL, 0, 0, 0);
],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_TCP_SENDPAGE_USE_SOCKET, 1,
- [tcp_sendpage use socket as first parameter])
-],[
- AC_MSG_RESULT(no)
+ AC_DEFINE(HAVE_TCP_SENDPAGE_USE_SOCKET, 1,
+ [tcp_sendpage use socket as first parameter])
])
EXTRA_KCFLAGS="$tmp_flags"
-])
+]) # LN_CONFIG_TCP_SENDPAGE
#
# LN_PROG_LINUX
#
# LNet linux kernel checks
#
-AC_DEFUN([LN_PROG_LINUX],
-[
+AC_DEFUN([LN_PROG_LINUX], [
+AC_MSG_NOTICE([LNet kernel checks
+==============================================================================])
+
LN_FUNC_DEV_GET_BY_NAME_2ARG
LN_CONFIG_AFFINITY
LN_CONFIG_BACKOFF
LN_CONFIG_MX
# 2.6.36
LN_CONFIG_TCP_SENDPAGE
-])
+]) # LN_PROG_LINUX
#
# LN_PROG_DARWIN
#
# Darwin checks
#
-AC_DEFUN([LN_PROG_DARWIN],
-[LB_DARWIN_CHECK_FUNCS([get_preemption_level])
-])
+AC_DEFUN([LN_PROG_DARWIN], [
+LB_DARWIN_CHECK_FUNCS([get_preemption_level])
+]) # LN_PROG_DARWIN
#
# LN_PATH_DEFAULTS
#
# default paths for installed files
#
-AC_DEFUN([LN_PATH_DEFAULTS],
-[
-])
+AC_DEFUN([LN_PATH_DEFAULTS], [
+]) # LN_PATH_DEFAULTS
#
# LN_CONFIGURE
#
# other configure checks
#
-AC_DEFUN([LN_CONFIGURE],
-[# lnet/utils/portals.c
+AC_DEFUN([LN_CONFIGURE], [
+AC_MSG_NOTICE([LNet core checks
+==============================================================================])
+
+# lnet/utils/portals.c
AC_CHECK_HEADERS([netdb.h netinet/tcp.h asm/types.h endian.h sys/ioctl.h])
AC_CHECK_FUNCS([gethostbyname socket connect])
#
AC_MSG_CHECKING([whether to enable readline support])
AC_ARG_ENABLE(readline,
- AC_HELP_STRING([--disable-readline],
- [disable readline support]),
- [],[enable_readline='yes'])
+ AC_HELP_STRING([--disable-readline],
+ [disable readline support]),
+ [], [enable_readline="yes"])
AC_MSG_RESULT([$enable_readline])
# -------- check for readline if enabled ----
-if test x$enable_readline = xyes ; then
+
+LIBREADLINE=""
+AS_IF([test "x$enable_readline" = xyes], [
LIBS_save="$LIBS"
LIBS="-lncurses $LIBS"
- AC_CHECK_LIB([readline],[readline],[
- LIBREADLINE="-lreadline -lncurses"
- AC_DEFINE(HAVE_LIBREADLINE, 1, [readline library is available])
- ],[
- LIBREADLINE=""
- ])
+ AC_CHECK_LIB([readline], [readline], [
+ LIBREADLINE="-lreadline -lncurses"
+ AC_DEFINE(HAVE_LIBREADLINE, 1,
+ [readline library is available])])
LIBS="$LIBS_save"
-else
- LIBREADLINE=""
-fi
+])
AC_SUBST(LIBREADLINE)
# -------- enable acceptor libwrap (TCP wrappers) support? -------
+
AC_MSG_CHECKING([if libwrap support is requested])
AC_ARG_ENABLE([libwrap],
AC_HELP_STRING([--enable-libwrap], [use TCP wrappers]),
[case "${enableval}" in
- yes) enable_libwrap=yes ;;
- no) enable_libwrap=no ;;
+ yes) enable_libwrap="yes" ;;
+ no) enable_libwrap="no" ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-libwrap) ;;
- esac],[enable_libwrap=no])
+ esac], [enable_libwrap="no"])
AC_MSG_RESULT([$enable_libwrap])
-if test x$enable_libwrap = xyes ; then
+LIBWRAP=""
+AS_IF([test "x$enable_libwrap" = xyes], [
LIBWRAP="-lwrap"
- AC_DEFINE(HAVE_LIBWRAP, 1, [libwrap support is requested])
-else
- LIBWRAP=""
-fi
+ AC_DEFINE(HAVE_LIBWRAP, 1,
+ [libwrap support is requested])
+])
AC_SUBST(LIBWRAP)
# ----------------------------------------
# some tests for catamount-like systems
# ----------------------------------------
+AC_MSG_CHECKING([whether to initialize libsysio])
AC_ARG_ENABLE([sysio_init],
AC_HELP_STRING([--disable-sysio-init],
[call sysio init functions when initializing liblustre]),
- [],[enable_sysio_init=yes])
-AC_MSG_CHECKING([whether to initialize libsysio])
+ [], [enable_sysio_init="yes"])
AC_MSG_RESULT([$enable_sysio_init])
-if test x$enable_sysio_init != xno ; then
- AC_DEFINE([INIT_SYSIO], 1, [call sysio init functions])
-fi
+AS_IF([test "x$enable_sysio_init" != xno],
+ [AC_DEFINE([INIT_SYSIO], 1, [call sysio init functions])])
+AC_MSG_CHECKING([whether to use /dev/urandom for liblustre])
AC_ARG_ENABLE([urandom],
AC_HELP_STRING([--disable-urandom],
[disable use of /dev/urandom for liblustre]),
- [],[enable_urandom=yes])
-AC_MSG_CHECKING([whether to use /dev/urandom for liblustre])
+ [], [enable_urandom="yes"])
AC_MSG_RESULT([$enable_urandom])
-if test x$enable_urandom != xno ; then
- AC_DEFINE([LIBLUSTRE_USE_URANDOM], 1, [use /dev/urandom for random data])
-fi
+AS_IF([test "x$enable_urandom" != xno],
+ [AC_DEFINE([LIBLUSTRE_USE_URANDOM], 1,
+ [use /dev/urandom for random data])])
# -------- check for -lcap support ----
-if test x$enable_liblustre = xyes ; then
+
+AS_IF([test "x$enable_liblustre" = xyes], [
+ CAP_LIBS=""
AC_CHECK_LIB([cap], [cap_get_proc],
[
CAP_LIBS="-lcap"
AC_DEFINE([HAVE_LIBCAP], 1, [use libcap])
- ],
- [
- CAP_LIBS=""
])
AC_SUBST(CAP_LIBS)
-
-fi
+])
LN_CONFIG_MAX_PAYLOAD
LN_CONFIG_USOCKLND
-])
+]) # LN_CONFIGURE
#
# LN_CONDITIONALS
#
# AM_CONDITOINAL defines for lnet
#
-AC_DEFUN([LN_CONDITIONALS],
-[AM_CONDITIONAL(BUILD_QSWLND, test x$QSWLND = "xqswlnd")
-AM_CONDITIONAL(BUILD_MXLND, test x$MXLND = "xmxlnd")
-AM_CONDITIONAL(BUILD_O2IBLND, test x$O2IBLND = "xo2iblnd")
-AM_CONDITIONAL(BUILD_RALND, test x$RALND = "xralnd")
-AM_CONDITIONAL(BUILD_GNILND, test x$GNILND = "xgnilnd")
+AC_DEFUN([LN_CONDITIONALS], [
+AM_CONDITIONAL(BUILD_QSWLND, test x$QSWLND = "xqswlnd")
+AM_CONDITIONAL(BUILD_MXLND, test x$MXLND = "xmxlnd")
+AM_CONDITIONAL(BUILD_O2IBLND, test x$O2IBLND = "xo2iblnd")
+AM_CONDITIONAL(BUILD_RALND, test x$RALND = "xralnd")
+AM_CONDITIONAL(BUILD_GNILND, test x$GNILND = "xgnilnd")
AM_CONDITIONAL(BUILD_GNILND_RCA, test x$GNILNDRCA = "xgnilndrca")
-AM_CONDITIONAL(BUILD_USOCKLND, test x$USOCKLND = "xusocklnd")
-])
+AM_CONDITIONAL(BUILD_USOCKLND, test x$USOCKLND = "xusocklnd")
+]) # LN_CONDITIONALS
#
# LN_CONFIG_FILES
#
# files that should be generated with AC_OUTPUT
#
-AC_DEFUN([LN_CONFIG_FILES],
-[AC_CONFIG_FILES([
+AC_DEFUN([LN_CONFIG_FILES], [
+AC_CONFIG_FILES([
lnet/Kernelenv
lnet/Makefile
lnet/autoMakefile
lnet/utils/Makefile
lnet/include/lnet/darwin/Makefile
])
-])
+]) # LN_CONFIG_FILES
dnl Checks for OFED
-AC_DEFUN([LN_CONFIG_OFED_SPEC],
-[
- AC_MSG_CHECKING([if OFED has ib_dma_map_single])
- LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LN_CONFIG_OFED_SPEC], [
+ AC_MSG_NOTICE([OFED checks
+==============================================================================])
+
+ LB_CHECK_COMPILE([if OFED has 'ib_dma_map_single'],
+ ib_dma_map_single, [
#include <linux/version.h>
#include <linux/pci.h>
#include <linux/gfp.h>
ib_dma_map_single(NULL, NULL, 0, 0);
return 0;
],[
- AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_OFED_IB_DMA_MAP, 1,
- [ib_dma_map_single defined])
- ],[
- AC_MSG_RESULT(no)
+ [ib_dma_map_single defined])
])
- AC_MSG_CHECKING([if ib_create_cq wants comp_vector])
- LB_LINUX_TRY_COMPILE([
+ LB_CHECK_COMPILE([if OFED 'ib_create_cq' wants 'comp_vector'],
+ ib_create_cq_comp_vector, [
#include <linux/version.h>
#include <linux/pci.h>
#include <linux/gfp.h>
ib_create_cq(NULL, NULL, NULL, NULL, 0, 0);
return 0;
],[
- AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_OFED_IB_COMP_VECTOR, 1,
- [has completion vector])
- ],[
- AC_MSG_RESULT(no)
+ [has completion vector])
])
- AC_MSG_CHECKING([if OFED has RDMA_CM_EVENT_ADDR_CHANGE])
- LB_LINUX_TRY_COMPILE([
+ LB_CHECK_COMPILE([if OFED has 'RDMA_CM_EVENT_ADDR_CHANGE'],
+ RDMA_CM_EVENT_ADDR_CHANGE, [
#include <linux/version.h>
#include <linux/pci.h>
#include <linux/gfp.h>
],[
return (RDMA_CM_EVENT_ADDR_CHANGE == 0);
],[
- AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_OFED_RDMA_CMEV_ADDRCHANGE, 1,
- [has completion vector])
- ],[
- AC_MSG_RESULT(no)
+ [has completion vector])
])
- AC_MSG_CHECKING([if OFED has RDMA_CM_EVENT_TIMEWAIT_EXIT])
- LB_LINUX_TRY_COMPILE([
+ LB_CHECK_COMPILE([if OFED has 'RDMA_CM_EVENT_TIMEWAIT_EXIT'],
+ RDMA_CM_EVENT_TIMEWAIT_EXIT, [
#include <linux/version.h>
#include <linux/pci.h>
#include <linux/gfp.h>
],[
return (RDMA_CM_EVENT_TIMEWAIT_EXIT == 0);
],[
- AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_OFED_RDMA_CMEV_TIMEWAIT_EXIT, 1,
- [has completion vector])
- ],[
- AC_MSG_RESULT(no)
+ [has completion vector])
])
- AC_MSG_CHECKING([if OFED has rdma_set_reuseaddr])
- LB_LINUX_TRY_COMPILE([
+ LB_CHECK_COMPILE([if OFED has 'rdma_set_reuseaddr'],
+ rdma_set_reuseaddr, [
#include <linux/version.h>
#include <linux/pci.h>
#include <linux/gfp.h>
rdma_set_reuseaddr(NULL, 1);
return 0;
],[
- AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_OFED_RDMA_SET_REUSEADDR, 1,
- [rdma_set_reuse defined])
- ],[
- AC_MSG_RESULT(no)
+ [rdma_set_reuse defined])
])
])
#
# Wrapper for AC_CONFIG_SUBDIR
#
-AC_DEFUN([LC_CONFIG_SRCDIR],
-[AC_CONFIG_SRCDIR([lustre/obdclass/obdo.c])
-libcfs_is_module=yes
-ldiskfs_is_ext4=yes
+AC_DEFUN([LC_CONFIG_SRCDIR], [
+AC_CONFIG_SRCDIR([lustre/obdclass/obdo.c])
+libcfs_is_module="yes"
+ldiskfs_is_ext4="yes"
])
#
#
# lustre specific paths
#
-AC_DEFUN([LC_PATH_DEFAULTS],
-[# ptlrpc kernel build requires this
+AC_DEFUN([LC_PATH_DEFAULTS], [
+# ptlrpc kernel build requires this
LUSTRE="$PWD/lustre"
AC_SUBST(LUSTRE)
pkgexampledir='${pkgdatadir}/examples'
AC_SUBST(pkgexampledir)
-])
+]) # LC_PATH_DEFAULTS
#
# LC_TARGET_SUPPORTED
#
# is the target os supported?
#
-AC_DEFUN([LC_TARGET_SUPPORTED],
-[case $target_os in
+AC_DEFUN([LC_TARGET_SUPPORTED], [
+case $target_os in
linux* | darwin*)
$1
;;
$2
;;
esac
-])
+]) # LC_TARGET_SUPPORTED
#
# LC_CONFIG_OBD_BUFFER_SIZE
#
# the maximum buffer size of lctl ioctls
#
-AC_DEFUN([LC_CONFIG_OBD_BUFFER_SIZE],
-[AC_MSG_CHECKING([maximum OBD ioctl size])
+AC_DEFUN([LC_CONFIG_OBD_BUFFER_SIZE], [
+AC_MSG_CHECKING([for maximum OBD ioctl size])
AC_ARG_WITH([obd-buffer-size],
AC_HELP_STRING([--with-obd-buffer-size=[size]],
- [set lctl ioctl maximum bytes (default=8192)]),
- [
- OBD_BUFFER_SIZE=$with_obd_buffer_size
- ],[
- OBD_BUFFER_SIZE=8192
- ])
+ [set lctl ioctl maximum bytes (default=8192)]),
+ [OBD_BUFFER_SIZE=$with_obd_buffer_size],
+ [OBD_BUFFER_SIZE=8192])
AC_MSG_RESULT([$OBD_BUFFER_SIZE bytes])
-AC_DEFINE_UNQUOTED(CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER, $OBD_BUFFER_SIZE, [IOCTL Buffer Size])
-])
+AC_DEFINE_UNQUOTED(CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER, $OBD_BUFFER_SIZE,
+ [IOCTL Buffer Size])
+]) # LC_CONFIG_OBD_BUFFER_SIZE
#
# LC_READLINK_SSIZE_T
#
-AC_DEFUN([LC_READLINK_SSIZE_T],
-[AC_MSG_CHECKING([if readlink returns ssize_t])
+AC_DEFUN([LC_READLINK_SSIZE_T], [
+AC_CACHE_CHECK([if readlink returns ssize_t],
+lb_cv_compile_readlink_ssize_t, [
AC_TRY_COMPILE([
#include <unistd.h>
-],[
+], [
ssize_t readlink(const char *, char *, size_t);
-],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_POSIX_1003_READLINK, 1, [readlink returns ssize_t])
-],[
- AC_MSG_RESULT([no])
-])
+],
+ [lb_cv_compile_readlink_ssize_t="yes"],
+ [lb_cv_compile_readlink_ssize_t="no"])
])
+AS_IF([test "x$lb_cv_compile_readlink_ssize_t" = xyes],
+ [AC_DEFINE(HAVE_POSIX_1003_READLINK, 1,
+ [readlink returns ssize_t])])
+]) # LC_READLINK_SSIZE_T
-AC_DEFUN([LC_GLIBC_SUPPORT_FHANDLES],
-[AC_CHECK_FUNCS([name_to_handle_at],[
- AC_DEFINE(HAVE_FHANDLE_GLIBC_SUPPORT, 1,
- [file handle and related syscalls are supported])
-],[
- AC_MSG_WARN([file handle and related syscalls are not supported])
-])
-])
+#
+# LC_GLIBC_SUPPORT_FHANDLES
+#
+AC_DEFUN([LC_GLIBC_SUPPORT_FHANDLES], [
+AC_CHECK_FUNCS([name_to_handle_at],
+ [AC_DEFINE(HAVE_FHANDLE_GLIBC_SUPPORT, 1,
+ [file handle and related syscalls are supported])],
+ [AC_MSG_WARN([file handle and related syscalls are not supported])])
+]) # LC_GLIBC_SUPPORT_FHANDLES
#
# LC_FUNC_DEV_SET_RDONLY
# check whether dev_set_rdonly is exported. This is needed until we
# have another mechanism to fence IO from the underlying device.
#
-AC_DEFUN([LC_FUNC_DEV_SET_RDONLY],
-[LB_CHECK_SYMBOL_EXPORT([dev_set_rdonly],
-[block/ll_rw_block.c,block/blk-core.c],[
- AC_DEFINE(HAVE_DEV_SET_RDONLY, 1, [kernel exports dev_set_rdonly])
-],[
- AC_MSG_WARN([kernel missing dev_set_rdonly patch for testing])
-])
-])
+AC_DEFUN([LC_FUNC_DEV_SET_RDONLY], [
+LB_CHECK_EXPORT([dev_set_rdonly], [block/ll_rw_block.c block/blk-core.c],
+ [AC_DEFINE(HAVE_DEV_SET_RDONLY, 1,
+ [kernel exports dev_set_rdonly])],
+ [AC_MSG_WARN([kernel missing dev_set_rdonly patch for testing])])
+]) # LC_FUNC_DEV_SET_RDONLY
#
+# LC_STACK_SIZE
+#
# Ensure stack size big than 8k in Lustre server (all kernels)
#
-AC_DEFUN([LC_STACK_SIZE],
-[AC_MSG_CHECKING([stack size big than 8k])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_STACK_SIZE], [
+LB_CHECK_COMPILE([if stack size big than 8k],
+stack_size_8k, [
#include <linux/thread_info.h>
-],[
- #if THREAD_SIZE < 8192
- #error "stack size < 8192"
- #endif
-],[
- AC_MSG_RESULT(yes)
-],[
- AC_MSG_ERROR([Lustre requires that Linux is configured with at least a 8KB stack.])
-])
-])
+], [
+ #if THREAD_SIZE < 8192
+ #error "stack size < 8192"
+ #endif
+], [], [AC_MSG_ERROR([
+
+Lustre requires that Linux is configured with at least a 8KB stack.
+])])
+]) # LC_STACK_SIZE
#
+# LC_MDS_MAX_THREADS
+#
# Allow the user to set the MDS thread upper limit
#
-AC_DEFUN([LC_MDS_MAX_THREADS],
-[
- AC_ARG_WITH([mds_max_threads],
+AC_DEFUN([LC_MDS_MAX_THREADS], [
+AC_MSG_CHECKING([for maximum number of MDS threads])
+AC_ARG_WITH([mds_max_threads],
AC_HELP_STRING([--with-mds-max-threads=count],
- [maximum threads available on the MDS: (default=512)]),
- [
- MDS_THREAD_COUNT=$with_mds_max_threads
- AC_DEFINE_UNQUOTED(MDS_MAX_THREADS, $MDS_THREAD_COUNT, [maximum number of MDS threads])
- ])
-])
+ [maximum threads available on the MDS: (default=512)]),
+ [AC_DEFINE_UNQUOTED(MDS_MAX_THREADS, $with_mds_max_threads,
+ [maximum number of MDS threads])])
+AC_MSG_RESULT([$with_mds_max_threads])
+]) # LC_MDS_MAX_THREADS
#
# LC_CONFIG_PINGER
#
# the pinger is temporary, until we have the recovery node in place
#
-AC_DEFUN([LC_CONFIG_PINGER],
-[AC_MSG_CHECKING([whether to enable pinger support])
+AC_DEFUN([LC_CONFIG_PINGER], [
+AC_MSG_CHECKING([whether to enable Lustre pinger support])
AC_ARG_ENABLE([pinger],
AC_HELP_STRING([--disable-pinger],
- [disable recovery pinger support]),
- [],[enable_pinger='yes'])
+ [disable recovery pinger support]),
+ [], [enable_pinger="yes"])
AC_MSG_RESULT([$enable_pinger])
-if test x$enable_pinger != xno ; then
- AC_DEFINE(ENABLE_PINGER, 1, Use the Pinger)
-fi
-])
+AS_IF([test "x$enable_pinger" != xno],
+ [AC_DEFINE(ENABLE_PINGER, 1,[Use the Pinger])])
+]) # LC_CONFIG_PINGER
#
# LC_CONFIG_CHECKSUM
#
# do checksum of bulk data between client and OST
#
-AC_DEFUN([LC_CONFIG_CHECKSUM],
-[AC_MSG_CHECKING([whether to enable data checksum support])
+AC_DEFUN([LC_CONFIG_CHECKSUM], [
+AC_MSG_CHECKING([whether to enable data checksum support])
AC_ARG_ENABLE([checksum],
- AC_HELP_STRING([--disable-checksum],
- [disable data checksum support]),
- [],[enable_checksum='yes'])
+ AC_HELP_STRING([--disable-checksum],
+ [disable data checksum support]),
+ [], [enable_checksum="yes"])
AC_MSG_RESULT([$enable_checksum])
-if test x$enable_checksum != xno ; then
- AC_DEFINE(ENABLE_CHECKSUM, 1, do data checksums)
-fi
-])
+AS_IF([test "x$enable_checksum" != xno],
+ [AC_DEFINE(ENABLE_CHECKSUM, 1, [do data checksums])])
+]) # LC_CONFIG_CHECKSUM
#
# LC_CONFIG_LIBLUSTRE_RECOVERY
#
-AC_DEFUN([LC_CONFIG_LIBLUSTRE_RECOVERY],
-[AC_MSG_CHECKING([whether to enable liblustre recovery support])
+AC_DEFUN([LC_CONFIG_LIBLUSTRE_RECOVERY], [
+AC_MSG_CHECKING([whether to enable liblustre recovery support])
AC_ARG_ENABLE([liblustre-recovery],
AC_HELP_STRING([--disable-liblustre-recovery],
- [disable liblustre recovery support]),
- [],[enable_liblustre_recovery='yes'])
+ [disable liblustre recovery support]),
+ [], [enable_liblustre_recovery="yes"])
AC_MSG_RESULT([$enable_liblustre_recovery])
-if test x$enable_liblustre_recovery != xno ; then
- AC_DEFINE(ENABLE_LIBLUSTRE_RECOVERY, 1, Liblustre Can Recover)
-fi
-])
+AS_IF([test "x$enable_liblustre_recovery" != xno],
+ [AC_DEFINE(ENABLE_LIBLUSTRE_RECOVERY, 1, [Liblustre Can Recover])])
+]) # LC_CONFIG_LIBLUSTRE_RECOVERY
#
# LC_CONFIG_HEALTH_CHECK_WRITE
#
# Turn off the actual write to the disk
#
-AC_DEFUN([LC_CONFIG_HEALTH_CHECK_WRITE],
-[AC_MSG_CHECKING([whether to enable a write with the health check])
+AC_DEFUN([LC_CONFIG_HEALTH_CHECK_WRITE], [
+AC_MSG_CHECKING([whether to enable a write with the health check])
AC_ARG_ENABLE([health_write],
- AC_HELP_STRING([--enable-health_write],
- [enable disk writes when doing health check]),
- [],[enable_health_write='no'])
+ AC_HELP_STRING([--enable-health_write],
+ [enable disk writes when doing health check]),
+ [], [enable_health_write="no"])
AC_MSG_RESULT([$enable_health_write])
-if test x$enable_health_write != xno ; then
- AC_DEFINE(USE_HEALTH_CHECK_WRITE, 1, Write when Checking Health)
-fi
-])
+AS_IF([test "x$enable_health_write" != xno],
+ [AC_DEFINE(USE_HEALTH_CHECK_WRITE, 1, [Write when Checking Health])])
+]) # LC_CONFIG_HEALTH_CHECK_WRITE
-AC_DEFUN([LC_CONFIG_LRU_RESIZE],
-[AC_MSG_CHECKING([whether to enable lru self-adjusting])
+#
+# LC_CONFIG_LRU_RESIZE
+#
+AC_DEFUN([LC_CONFIG_LRU_RESIZE], [
+AC_MSG_CHECKING([whether to enable lru self-adjusting])
AC_ARG_ENABLE([lru_resize],
AC_HELP_STRING([--enable-lru-resize],
- [enable lru resize support]),
- [],[enable_lru_resize='yes'])
+ [enable lru resize support]),
+ [], [enable_lru_resize="yes"])
AC_MSG_RESULT([$enable_lru_resize])
-if test x$enable_lru_resize != xno; then
- AC_DEFINE(HAVE_LRU_RESIZE_SUPPORT, 1, [Enable lru resize support])
-fi
-])
+AS_IF([test "x$enable_lru_resize" != xno],
+ [AC_DEFINE(HAVE_LRU_RESIZE_SUPPORT, 1, [Enable lru resize support])])
+]) # LC_CONFIG_LRU_RESIZE
#
+# LC_QUOTA_CONFIG
+#
# Quota support. The kernel must support CONFIG_QUOTA.
#
-AC_DEFUN([LC_QUOTA_CONFIG],
-[LB_LINUX_CONFIG_IM([QUOTA],[],[
- AC_MSG_ERROR([Lustre quota requires that CONFIG_QUOTA is enabled in your kernel.])
- ])
-])
+AC_DEFUN([LC_QUOTA_CONFIG], [
+LB_CHECK_CONFIG_IM([QUOTA], [],
+ [AC_MSG_ERROR([
+Lustre quota requires that CONFIG_QUOTA is enabled in your kernel.
+])])
+]) # LC_QUOTA_CONFIG
+
+#
+# LC_EXPORT_TRUNCATE_COMPLETE_PAGE
+#
# truncate_complete_page() has never been exported from an upstream kernel
# remove_from_page_cache() was exported between 2.6.35 and 2.6.38
# delete_from_page_cache() is exported from 2.6.39
-AC_DEFUN([LC_EXPORT_TRUNCATE_COMPLETE_PAGE],
- [LB_CHECK_SYMBOL_EXPORT([truncate_complete_page],
- [mm/truncate.c],
- [AC_DEFINE(HAVE_TRUNCATE_COMPLETE_PAGE, 1,
- [kernel export truncate_complete_page])])
- LB_CHECK_SYMBOL_EXPORT([remove_from_page_cache],
- [mm/filemap.c],
- [AC_DEFINE(HAVE_REMOVE_FROM_PAGE_CACHE, 1,
- [kernel export remove_from_page_cache])])
- LB_CHECK_SYMBOL_EXPORT([delete_from_page_cache],
- [mm/filemap.c],
- [AC_DEFINE(HAVE_DELETE_FROM_PAGE_CACHE, 1,
- [kernel export delete_from_page_cache])])
- ])
+#
+AC_DEFUN([LC_EXPORT_TRUNCATE_COMPLETE_PAGE], [
+LB_CHECK_EXPORT([truncate_complete_page], [mm/truncate.c],
+ [AC_DEFINE(HAVE_TRUNCATE_COMPLETE_PAGE, 1,
+ [kernel export truncate_complete_page])])
+LB_CHECK_EXPORT([remove_from_page_cache], [mm/filemap.c],
+ [AC_DEFINE(HAVE_REMOVE_FROM_PAGE_CACHE, 1,
+ [kernel export remove_from_page_cache])])
+LB_CHECK_EXPORT([delete_from_page_cache], [mm/filemap.c],
+ [AC_DEFINE(HAVE_DELETE_FROM_PAGE_CACHE, 1,
+ [kernel export delete_from_page_cache])])
+]) # LC_EXPORT_TRUNCATE_COMPLETE_PAGE
#
# LC_CAPA_CRYPTO
#
-AC_DEFUN([LC_CAPA_CRYPTO],
-[LB_LINUX_CONFIG_IM([CRYPTO],[],[
- AC_MSG_ERROR([Lustre capability require that CONFIG_CRYPTO is enabled in your kernel.])
-])
-LB_LINUX_CONFIG_IM([CRYPTO_HMAC],[],[
- AC_MSG_ERROR([Lustre capability require that CONFIG_CRYPTO_HMAC is enabled in your kernel.])
-])
-LB_LINUX_CONFIG_IM([CRYPTO_SHA1],[],[
- AC_MSG_ERROR([Lustre capability require that CONFIG_CRYPTO_SHA1 is enabled in your kernel.])
-])
-])
+AC_DEFUN([LC_CAPA_CRYPTO], [
+LB_CHECK_CONFIG_IM([CRYPTO], [],
+ [AC_MSG_ERROR([Lustre capability require that CONFIG_CRYPTO is enabled in your kernel.])])
+LB_CHECK_CONFIG_IM([CRYPTO_HMAC], [],
+ [AC_MSG_ERROR([Lustre capability require that CONFIG_CRYPTO_HMAC is enabled in your kernel.])])
+LB_CHECK_CONFIG_IM([CRYPTO_SHA1], [],
+ [AC_MSG_ERROR([Lustre capability require that CONFIG_CRYPTO_SHA1 is enabled in your kernel.])])
+]) # LC_CAPA_CRYPTO
#
# LC_CONFIG_RMTCLIENT
dnl FIXME
dnl the AES symbol usually tied with arch, e.g. CRYPTO_AES_586
dnl FIXME
-AC_DEFUN([LC_CONFIG_RMTCLIENT],
-[LB_LINUX_CONFIG_IM([CRYPTO_AES],[],[
- AC_MSG_WARN([
+AC_DEFUN([LC_CONFIG_RMTCLIENT], [
+LB_CHECK_CONFIG_IM([CRYPTO_AES], [],
+ [AC_MSG_WARN([
Lustre remote client require that CONFIG_CRYPTO_AES is enabled in your kernel.
-])
-])
-])
+])])
+]) # LC_CONFIG_RMTCLIENT
#
-# LC_CONFIG_GSS_KEYRING (default 'auto', tests for dependencies, if found, enables; only called if gss is enabled)
+# LC_CONFIG_GSS_KEYRING
#
-AC_DEFUN([LC_CONFIG_GSS_KEYRING],
-[AC_MSG_CHECKING([whether to enable gss keyring backend])
- AC_ARG_ENABLE([gss_keyring],
- [AC_HELP_STRING([--disable-gss-keyring],
- [disable gss keyring backend])],
- [],[enable_gss_keyring='auto'])
- AC_MSG_RESULT([$enable_gss_keyring])
-
- if test x$enable_gss_keyring != xno; then
- LB_LINUX_CONFIG_IM([KEYS],[],
- [gss_keyring_conf_test='fail';
- AC_MSG_WARN([
+# default 'auto', tests for dependencies, if found, enables;
+# only called if gss is enabled
+#
+AC_DEFUN([LC_CONFIG_GSS_KEYRING], [
+AC_MSG_CHECKING([whether to enable gss keyring backend])
+AC_ARG_ENABLE([gss_keyring],
+ [AC_HELP_STRING([--disable-gss-keyring],
+ [disable gss keyring backend])],
+ [], [enable_gss_keyring="auto"])
+AC_MSG_RESULT([$enable_gss_keyring])
+AS_IF([test "x$enable_gss_keyring" != xno], [
+ LB_CHECK_CONFIG_IM([KEYS], [], [
+ gss_keyring_conf_test="fail"
+ AC_MSG_WARN([
GSS keyring backend require that CONFIG_KEYS be enabled in your kernel.
])])
- AC_CHECK_LIB([keyutils], [keyctl_search], [],
- [gss_keyring_conf_test='fail';
- AC_MSG_WARN([
+ AC_CHECK_LIB([keyutils], [keyctl_search], [], [
+ gss_keyring_conf_test="fail"
+ AC_MSG_WARN([
libkeyutils is not found, which is required by gss keyring backend
-])],)
+])])
- if test x$gss_keyring_conf_test != xfail; then
- AC_DEFINE([HAVE_GSS_KEYRING], [1], [Define this if you enable gss keyring backend])
- enable_gss_keyring='yes'
- else
- if test x$enable_gss_keyring == xyes; then
+ AS_IF([test "x$gss_keyring_conf_test" != xfail], [
+ AC_DEFINE([HAVE_GSS_KEYRING], [1],
+ [Define this if you enable gss keyring backend])
+ enable_gss_keyring="yes"
+ ], [
+ AS_IF([test "x$enable_gss_keyring" = xyes], [
AC_MSG_ERROR([
Cannot enable gss_keyring. See above for details.
])
- else
+ ], [
AC_MSG_WARN([
-Cannot enable gss keyring. See above for details.
+Cannot enable gss keyring. See above for details.
])
- fi
- fi
- fi
+ ])
+ ])
])
+]) # LC_CONFIG_GSS_KEYRING
-AC_DEFUN([LC_CONFIG_SUNRPC],
-[LB_LINUX_CONFIG_IM([SUNRPC],[],
- [if test x$sunrpc_required == xyes; then
- AC_MSG_ERROR([
+#
+# LC_CONFIG_SUNRPC
+#
+AC_DEFUN([LC_CONFIG_SUNRPC], [
+LB_CHECK_CONFIG_IM([SUNRPC], [], [
+ AS_IF([test "x$sunrpc_required" = xyes], [
+ AC_MSG_ERROR([
kernel SUNRPC support is required by using GSS.
])
- fi])
-])
+ ])])
+]) # LC_CONFIG_SUNRPC
#
# LC_CONFIG_GSS (default 'auto' (tests for dependencies, if found, enables))
# Build gss and related tools of Lustre. Currently both kernel and user space
# parts are depend on linux platform.
#
-AC_DEFUN([LC_CONFIG_GSS],
-[AC_MSG_CHECKING([whether to enable gss/krb5 support])
- AC_ARG_ENABLE([gss],
- [AC_HELP_STRING([--enable-gss], [enable gss/krb5 support])],
- [],[enable_gss='auto'])
- AC_MSG_RESULT([$enable_gss])
+AC_DEFUN([LC_CONFIG_GSS], [
+AC_MSG_CHECKING([whether to enable gss/krb5 support])
+AC_ARG_ENABLE([gss],
+ [AC_HELP_STRING([--enable-gss], [enable gss/krb5 support])],
+ [], [enable_gss="auto"])
+AC_MSG_RESULT([$enable_gss])
- if test x$enable_gss != xno; then
- LC_CONFIG_GSS_KEYRING
+AS_IF([test "x$enable_gss" != xno], [
+ LC_CONFIG_GSS_KEYRING
sunrpc_required=$enable_gss
LC_CONFIG_SUNRPC
- sunrpc_required=no
+ sunrpc_required="no"
- LB_LINUX_CONFIG_IM([CRYPTO_MD5],[],
- [AC_MSG_WARN([kernel MD5 support is recommended by using GSS.])])
- LB_LINUX_CONFIG_IM([CRYPTO_SHA1],[],
- [AC_MSG_WARN([kernel SHA1 support is recommended by using GSS.])])
- LB_LINUX_CONFIG_IM([CRYPTO_SHA256],[],
- [AC_MSG_WARN([kernel SHA256 support is recommended by using GSS.])])
- LB_LINUX_CONFIG_IM([CRYPTO_SHA512],[],
- [AC_MSG_WARN([kernel SHA512 support is recommended by using GSS.])])
+ LB_CHECK_CONFIG_IM([CRYPTO_MD5], [],
+ [AC_MSG_WARN([kernel MD5 support is recommended by using GSS.])])
+ LB_CHECK_CONFIG_IM([CRYPTO_SHA1], [],
+ [AC_MSG_WARN([kernel SHA1 support is recommended by using GSS.])])
+ LB_CHECK_CONFIG_IM([CRYPTO_SHA256], [],
+ [AC_MSG_WARN([kernel SHA256 support is recommended by using GSS.])])
+ LB_CHECK_CONFIG_IM([CRYPTO_SHA512], [],
+ [AC_MSG_WARN([kernel SHA512 support is recommended by using GSS.])])
require_krb5=$enable_gss
AC_KERBEROS_V5
- require_krb5=no
-
- if test x$KRBDIR != x; then
- AC_CHECK_LIB([gssapi], [gss_export_lucid_sec_context],
- [GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssapi";
- gss_conf_test='success'],
- [AC_CHECK_LIB([gssglue], [gss_export_lucid_sec_context],
- [GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssglue";
- gss_conf_test='success'],
- [if test x$enable_gss == xyes; then
- AC_MSG_ERROR([
+ require_krb5="no"
+
+ AS_IF([test -n "$KRBDIR"], [
+ AC_CHECK_LIB([gssapi], [gss_export_lucid_sec_context], [
+ GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssapi"
+ gss_conf_test="success"
+ ], [
+ AC_CHECK_LIB([gssglue], [gss_export_lucid_sec_context], [
+ GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssglue"
+ gss_conf_test="success"
+ ], [
+ AS_IF([test "x$enable_gss" = xyes], [
+ AC_MSG_ERROR([
libgssapi or libgssglue is not found, which is required by GSS.
])
- else
- AC_MSG_WARN([
+ ], [
+ AC_MSG_WARN([
libgssapi or libgssglue is not found, which is required by GSS.
])
- fi])],)
+ ])
+ ])
+ ])
AC_SUBST(GSSAPI_LIBS)
- fi
+ ])
- if test x$gss_conf_test == xsuccess; then
+ AS_IF([test "x$gss_conf_test" = xsuccess], [
AC_DEFINE([HAVE_GSS], [1], [Define this is if you enable gss])
- enable_gss='yes'
- fi
-
- fi
+ enable_gss="yes"
+ ])
])
+]) # LC_CONFIG_GSS
+#
+# LC_INODE_PERMISION_2ARGS
+#
# up to v2.6.27 had a 3 arg version (inode, mask, nameidata)
# v2.6.27->v2.6.37 had a 2 arg version (inode, mask)
# v2.6.37->v3.0 had a 3 arg version (inode, mask, nameidata)
# v3.1 onward have a 2 arg version (inode, mask)
-AC_DEFUN([LC_INODE_PERMISION_2ARGS],
-[AC_MSG_CHECKING([inode_operations->permission has two args])
-LB_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
+#
+AC_DEFUN([LC_INODE_PERMISION_2ARGS], [
+LB_CHECK_COMPILE([if 'inode_operations->permission' has two args],
+inode_ops_permission_2args, [
+ #include <linux/fs.h>
],[
- struct inode *inode __attribute__ ((unused));
+ struct inode *inode __attribute__ ((unused));
- inode = NULL;
- inode->i_op->permission(NULL, 0);
-],[
- AC_DEFINE(HAVE_INODE_PERMISION_2ARGS, 1,
- [inode_operations->permission has two args])
- AC_MSG_RESULT([yes])
+ inode = NULL;
+ inode->i_op->permission(NULL, 0);
],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_INODE_PERMISION_2ARGS, 1,
+ [inode_operations->permission has two args])
])
+]) # LC_INODE_PERMISION_2ARGS
+#
+# LC_BLK_QUEUE_MAX_SEGMENTS
+#
# 2.6.32 replaces 2 functions blk_queue_max_phys_segments and blk_queue_max_hw_segments by blk_queue_max_segments
-AC_DEFUN([LC_BLK_QUEUE_MAX_SEGMENTS],
-[AC_MSG_CHECKING([if blk_queue_max_segments is defined])
-LB_LINUX_TRY_COMPILE([
+#
+AC_DEFUN([LC_BLK_QUEUE_MAX_SEGMENTS], [
+LB_CHECK_COMPILE([if 'blk_queue_max_segments' is defined],
+blk_queue_max_segments, [
#include <linux/blkdev.h>
],[
blk_queue_max_segments(NULL, 0);
],[
- AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_BLK_QUEUE_MAX_SEGMENTS, 1,
- [blk_queue_max_segments is defined])
-],[
- AC_MSG_RESULT(no)
-])
+ [blk_queue_max_segments is defined])
])
+]) # LC_BLK_QUEUE_MAX_SEGMENTS
+#
+# LC_HAVE_DQUOT_FS_DISK_QUOTA
+#
# 2.6.34 has quotactl_ops->[sg]et_dqblk that take struct fs_disk_quota
-AC_DEFUN([LC_HAVE_DQUOT_FS_DISK_QUOTA],
+#
+AC_DEFUN([LC_HAVE_DQUOT_FS_DISK_QUOTA], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
-[AC_MSG_CHECKING([if quotactl_ops.set_dqblk takes struct fs_disk_quota])
-LB_LINUX_TRY_COMPILE([
+LB_CHECK_COMPILE([if 'quotactl_ops.set_dqblk' takes struct fs_disk_quota],
+fs_disk_quota, [
#include <linux/fs.h>
#include <linux/quota.h>
],[
((struct quotactl_ops *)0)->set_dqblk(NULL, 0, 0, (struct fs_disk_quota*)0);
],[
- AC_DEFINE(HAVE_DQUOT_FS_DISK_QUOTA, 1, [quotactl_ops.set_dqblk takes struct fs_disk_quota])
- AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_DQUOT_FS_DISK_QUOTA, 1,
+ [quotactl_ops.set_dqblk takes struct fs_disk_quota])
],[
- AC_MSG_RESULT([no])
- AC_MSG_CHECKING([if quotactl_ops.set_dqblk takes struct kqid & fs_disk_quota])
- LB_LINUX_TRY_COMPILE([
+ LB_CHECK_COMPILE([if 'quotactl_ops.set_dqblk' takes struct kqid & fs_disk_quota],
+ kqid_fs_disk_quota, [
#include <linux/fs.h>
#include <linux/quota.h>
],[
((struct quotactl_ops *)0)->set_dqblk((struct super_block*)0, *((struct kqid*)0), (struct fs_disk_quota*)0);
],[
- AC_DEFINE(HAVE_DQUOT_FS_DISK_QUOTA, 1, [quotactl_ops.set_dqblk takes struct fs_disk_quota])
- AC_DEFINE(HAVE_DQUOT_KQID, 1, [quotactl_ops.set_dqblk takes struct kqid])
- AC_MSG_RESULT([yes])
- ],[
- AC_MSG_RESULT([no])
+ AC_DEFINE(HAVE_DQUOT_FS_DISK_QUOTA, 1,
+ [quotactl_ops.set_dqblk takes struct fs_disk_quota])
+ AC_DEFINE(HAVE_DQUOT_KQID, 1,
+ [quotactl_ops.set_dqblk takes struct kqid])
])
])
EXTRA_KCFLAGS="$tmp_flags"
-])
+]) # LC_HAVE_DQUOT_FS_DISK_QUOTA
+#
+# LC_HAVE_DQUOT_SUSPEND
+#
# 2.6.34 has renamed dquot options to dquot_*, check for dquot_suspend
-AC_DEFUN([LC_HAVE_DQUOT_SUSPEND],
-[AC_MSG_CHECKING([if dquot_suspend is defined])
-LB_LINUX_TRY_COMPILE([
+#
+AC_DEFUN([LC_HAVE_DQUOT_SUSPEND], [
+LB_CHECK_COMPILE([if 'dquot_suspend' is defined],
+dquot_suspend, [
#include <linux/quotaops.h>
],[
dquot_suspend(NULL, -1);
],[
AC_DEFINE(HAVE_DQUOT_SUSPEND, 1, [dquot_suspend is defined])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_HAVE_DQUOT_SUSPEND
#
# LC_QUOTA64
# the constant QFMT_VFS_V1 in include/linux/quota.h, so we can check for
# that in the absence of quotaio_v1.h in the kernel headers.
#
-AC_DEFUN([LC_QUOTA64],[
- AC_MSG_CHECKING([if kernel has 64-bit quota limits support])
+AC_DEFUN([LC_QUOTA64], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-I$LINUX/fs"
- LB_LINUX_TRY_COMPILE([
- #include <linux/kernel.h>
- #include <linux/fs.h>
- #if defined(HAVE_FS_QUOTA_QUOTAIO_H)
- # include <quota/quotaio_v2.h>
- struct v2r1_disk_dqblk dqblk_r1;
- #else
- #include <linux/quota.h>
- int ver = QFMT_VFS_V1;
- #endif
- ],[],[
- AC_DEFINE(HAVE_QUOTA64, 1, [have quota64])
- AC_MSG_RESULT([yes])
- ],[
- LB_CHECK_FILE([$LINUX/include/linux/lustre_version.h],[
- AC_MSG_ERROR([You have got no 64-bit kernel quota support.])
- ],[])
- AC_MSG_RESULT([no])
- ])
-EXTRA_KCFLAGS=$tmp_flags
+LB_CHECK_COMPILE([if kernel has 64-bit quota limits support],
+quota64, [
+ #include <linux/kernel.h>
+ #include <linux/fs.h>
+ #if defined(HAVE_FS_QUOTA_QUOTAIO_H)
+ #include <quota/quotaio_v2.h>
+ struct v2r1_disk_dqblk dqblk_r1;
+ #else
+ #include <linux/quota.h>
+ int ver = QFMT_VFS_V1;
+ #endif
+], [], [
+ AC_DEFINE(HAVE_QUOTA64, 1, [have quota64])
+],[
+ LB_CHECK_FILE([$LINUX/include/linux/lustre_version.h],
+ [AC_MSG_ERROR([You have got no 64-bit kernel quota support.])])
])
+EXTRA_KCFLAGS=$tmp_flags
+]) # LC_QUOTA64
#
+# LC_FS_STRUCT_RWLOCK
+#
# 2.6.36 fs_struct.lock use spinlock instead of rwlock.
#
-AC_DEFUN([LC_FS_STRUCT_RWLOCK],
-[AC_MSG_CHECKING([if fs_struct.lock use rwlock])
-LB_LINUX_TRY_COMPILE([
- #include <asm/atomic.h>
- #include <linux/spinlock.h>
- #include <linux/fs_struct.h>
+AC_DEFUN([LC_FS_STRUCT_RWLOCK], [
+LB_CHECK_COMPILE([if 'fs_struct.lock' use rwlock],
+fs_struct_rwlock, [
+ #include <asm/atomic.h>
+ #include <linux/spinlock.h>
+ #include <linux/fs_struct.h>
],[
- ((struct fs_struct *)0)->lock = (rwlock_t){ 0 };
+ ((struct fs_struct *)0)->lock = (rwlock_t){ 0 };
],[
- AC_DEFINE(HAVE_FS_STRUCT_RWLOCK, 1,
- [fs_struct.lock use rwlock])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_FS_STRUCT_RWLOCK, 1, [fs_struct.lock use rwlock])
])
+]) # LC_FS_STRUCT_RWLOCK
#
+# LC_SBOPS_EVICT_INODE
+#
# 2.6.36 super_operations add evict_inode method. it hybird of
# delete_inode & clear_inode.
#
-AC_DEFUN([LC_SBOPS_EVICT_INODE],
-[AC_MSG_CHECKING([if super_operations.evict_inode exist])
-LB_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-],[
- ((struct super_operations *)0)->evict_inode(NULL);
+AC_DEFUN([LC_SBOPS_EVICT_INODE], [
+LB_CHECK_COMPILE([if 'super_operations.evict_inode' exist],
+super_ops_evict_inode, [
+ #include <linux/fs.h>
],[
- AC_DEFINE(HAVE_SBOPS_EVICT_INODE, 1,
- [super_operations.evict_inode() is exist in kernel])
- AC_MSG_RESULT([yes])
+ ((struct super_operations *)0)->evict_inode(NULL);
],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_SBOPS_EVICT_INODE, 1,
+ [super_operations.evict_inode() is exist in kernel])
])
+]) # LC_SBOPS_EVICT_INODE
#
+# LC_FILE_FSYNC
+#
# 2.6.35 file_operations.fsync taken 2 arguments.
# 3.0.0 file_operations.fsync takes 4 arguments.
#
-AC_DEFUN([LC_FILE_FSYNC],
-[AC_MSG_CHECKING([if file_operations.fsync takes 4 or 2 arguments])
-LB_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
+AC_DEFUN([LC_FILE_FSYNC], [
+LB_CHECK_COMPILE([if 'file_operations.fsync' takes 4 arguments],
+file_ops_fsync_4args, [
+ #include <linux/fs.h>
],[
- ((struct file_operations *)0)->fsync(NULL, 0, 0, 0);
+ ((struct file_operations *)0)->fsync(NULL, 0, 0, 0);
],[
- AC_DEFINE(HAVE_FILE_FSYNC_4ARGS, 1,
- [file_operations.fsync takes 4 arguments])
- AC_MSG_RESULT([yes, 4 args])
+ AC_DEFINE(HAVE_FILE_FSYNC_4ARGS, 1,
+ [file_operations.fsync takes 4 arguments])
],[
- LB_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- ],[
- ((struct file_operations *)0)->fsync(NULL, 0);
- ],[
- AC_DEFINE(HAVE_FILE_FSYNC_2ARGS, 1,
- [file_operations.fsync takes 2 arguments])
- AC_MSG_RESULT([yes, 2 args])
- ],[
- AC_MSG_RESULT([no])
- ])
-])
+ LB_CHECK_COMPILE([if 'file_operations.fsync' takes 2 arguments],
+ file_ops_fsync_2args, [
+ #include <linux/fs.h>
+ ],[
+ ((struct file_operations *)0)->fsync(NULL, 0);
+ ],[
+ AC_DEFINE(HAVE_FILE_FSYNC_2ARGS, 1,
+ [file_operations.fsync takes 2 arguments])
+ ])
])
+]) # LC_FILE_FSYNC
#
+# LC_KERNEL_LOCKED
+#
# 2.6.37 remove kernel_locked
#
-AC_DEFUN([LC_KERNEL_LOCKED],
-[AC_MSG_CHECKING([if kernel_locked is defined])
-LB_LINUX_TRY_COMPILE([
- #include <linux/smp_lock.h>
-],[
- kernel_locked();
+AC_DEFUN([LC_KERNEL_LOCKED], [
+LB_CHECK_COMPILE([if 'kernel_locked' is defined],
+kernel_locked, [
+ #include <linux/smp_lock.h>
],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_KERNEL_LOCKED, 1,
- [kernel_locked is defined])
+ kernel_locked();
],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_KERNEL_LOCKED, 1, [kernel_locked is defined])
])
+]) # LC_KERNEL_LOCKED
#
+# LC_D_COMPARE_7ARGS
+#
# 2.6.38 dentry_operations.d_compare() taken 7 arguments.
#
-AC_DEFUN([LC_D_COMPARE_7ARGS],
-[AC_MSG_CHECKING([if d_compare taken 7 arguments])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_D_COMPARE_7ARGS], [
+LB_CHECK_COMPILE([if 'dentry_operations.d_compare()' taken 7 arguments],
+dentry_ops_d_compare_7arg, [
#include <linux/dcache.h>
],[
((struct dentry_operations*)0)->d_compare(NULL,NULL,NULL,NULL,0,NULL,NULL);
],[
- AC_DEFINE(HAVE_D_COMPARE_7ARGS, 1,
- [d_compare need 7 arguments])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_D_COMPARE_7ARGS, 1, [d_compare need 7 arguments])
])
+]) # LC_D_COMPARE_7ARGS
#
+# LC_D_DELETE_CONST
+#
# 2.6.38 dentry_operations.d_delete() defined 'const' for 1st parameter.
#
-AC_DEFUN([LC_D_DELETE_CONST],
-[AC_MSG_CHECKING([if d_delete has const declare on first parameter])
+AC_DEFUN([LC_D_DELETE_CONST], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
-LB_LINUX_TRY_COMPILE([
+LB_CHECK_COMPILE([if 'dentry_operations.d_delete()' has const declare on first parameter],
+dentry_ops_d_delete_1st_const, [
#include <linux/dcache.h>
],[
const struct dentry *d = NULL;
],[
AC_DEFINE(HAVE_D_DELETE_CONST, const,
[d_delete first parameter declared const])
- AC_MSG_RESULT([yes])
],[
- AC_DEFINE(HAVE_D_DELETE_CONST, , [])
- AC_MSG_RESULT([no])
+ AC_DEFINE(HAVE_D_DELETE_CONST, [],
+ [d_delete first parameter declared is not const])
])
EXTRA_KCFLAGS="$tmp_flags"
-])
+]) # LC_D_DELETE_CONST
#
+# LC_DCACHE_LOCK
+#
# 2.6.38 dcache_lock removed. rcu-walk commited.
#
-AC_DEFUN([LC_DCACHE_LOCK],
-[AC_MSG_CHECKING([if dcache_lock is exist])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_DCACHE_LOCK], [
+LB_CHECK_COMPILE([if 'dcache_lock' is exist],
+dcache_lock, [
#include <linux/dcache.h>
],[
spin_lock(&dcache_lock);
],[
AC_DEFINE(HAVE_DCACHE_LOCK, 1,
[dcache_lock is exist])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_DCACHE_LOCK
#
+# LC_INODE_I_RCU
+#
# 2.6.38 inode.i_rcu added.
#
-AC_DEFUN([LC_INODE_I_RCU],
-[AC_MSG_CHECKING([if inode.i_rcu exists])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_INODE_I_RCU], [
+LB_CHECK_COMPILE([if 'inode.i_rcu' exists],
+inode_i_rcu, [
#include <linux/fs.h>
],[
struct inode ino;
],[
AC_DEFINE(HAVE_INODE_I_RCU, 1,
[inode.i_rcu exists])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_INODE_I_RCU
#
+# LC_BLKDEV_GET_BY_DEV
+#
# 2.6.38 export blkdev_get_by_dev
#
-AC_DEFUN([LC_BLKDEV_GET_BY_DEV],
-[LB_CHECK_SYMBOL_EXPORT([blkdev_get_by_dev],
-[fs/block_dev.c],[
-AC_DEFINE(HAVE_BLKDEV_GET_BY_DEV, 1,
- [blkdev_get_by_dev is exported by the kernel])
-],[
-])
-])
+AC_DEFUN([LC_BLKDEV_GET_BY_DEV], [
+LB_CHECK_EXPORT([blkdev_get_by_dev], [fs/block_dev.c],
+ [AC_DEFINE(HAVE_BLKDEV_GET_BY_DEV, 1,
+ [blkdev_get_by_dev is exported by the kernel])])
+]) # LC_BLKDEV_GET_BY_DEV
#
+# LC_EXPORT_SIMPLE_SETATTR
+#
# 2.6.38 export simple_setattr
#
-AC_DEFUN([LC_EXPORT_SIMPLE_SETATTR],
-[LB_CHECK_SYMBOL_EXPORT([simple_setattr],
-[fs/libfs.c],[
-AC_DEFINE(HAVE_SIMPLE_SETATTR, 1,
- [simple_setattr is exported by the kernel])
-],[
-])
-])
+AC_DEFUN([LC_EXPORT_SIMPLE_SETATTR], [
+LB_CHECK_EXPORT([simple_setattr], [fs/libfs.c],
+ [AC_DEFINE(HAVE_SIMPLE_SETATTR, 1,
+ [simple_setattr is exported by the kernel])])
+]) # LC_EXPORT_SIMPLE_SETATTR
#
+# LC_IOP_TRUNCATE
+#
# truncate callback removed since 2.6.39
#
-AC_DEFUN([LC_IOP_TRUNCATE],
-[AC_MSG_CHECKING([inode_operations has .truncate member function])
-LB_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-],[
- ((struct inode_operations *)0)->truncate(NULL);
+AC_DEFUN([LC_IOP_TRUNCATE], [
+LB_CHECK_COMPILE([if 'inode_operations' has '.truncate' member function],
+inode_ops_truncate, [
+ #include <linux/fs.h>
],[
- AC_DEFINE(HAVE_INODEOPS_TRUNCATE, 1,
- [inode_operations has .truncate member function])
- AC_MSG_RESULT([yes])
+ ((struct inode_operations *)0)->truncate(NULL);
],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_INODEOPS_TRUNCATE, 1,
+ [inode_operations has .truncate member function])
])
+]) # LC_IOP_TRUNCATE
#
+# LC_REQUEST_QUEUE_UNPLUG_FN
+#
# 2.6.39 remove unplug_fn from request_queue.
#
-AC_DEFUN([LC_REQUEST_QUEUE_UNPLUG_FN],
-[AC_MSG_CHECKING([if request_queue has unplug_fn field])
-LB_LINUX_TRY_COMPILE([
- #include <linux/blkdev.h>
-],[
- do{ }while(sizeof(((struct request_queue *)0)->unplug_fn));
+AC_DEFUN([LC_REQUEST_QUEUE_UNPLUG_FN], [
+LB_CHECK_COMPILE([if 'request_queue' has 'unplug_fn' field],
+request_queue_unplug_fn, [
+ #include <linux/blkdev.h>
],[
- AC_DEFINE(HAVE_REQUEST_QUEUE_UNPLUG_FN, 1,
- [request_queue has unplug_fn field])
- AC_MSG_RESULT([yes])
+ do {} while(sizeof(((struct request_queue *)0)->unplug_fn));
],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_REQUEST_QUEUE_UNPLUG_FN, 1,
+ [request_queue has unplug_fn field])
])
+]) # LC_REQUEST_QUEUE_UNPLUG_FN
#
+# LC_HAVE_FSTYPE_MOUNT
+#
# 2.6.39 replace get_sb with mount in struct file_system_type
#
-AC_DEFUN([LC_HAVE_FSTYPE_MOUNT],
-[AC_MSG_CHECKING([if file_system_type has mount field])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_FSTYPE_MOUNT], [
+LB_CHECK_COMPILE([if 'file_system_type' has 'mount' field],
+file_system_type_mount, [
#include <linux/fs.h>
],[
struct file_system_type fst;
],[
AC_DEFINE(HAVE_FSTYPE_MOUNT, 1,
[struct file_system_type has mount field])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_HAVE_FSTYPE_MOUNT
#
+# LC_HAVE_FHANDLE_SYSCALLS
+#
# 2.6.39 The open_by_handle_at() and name_to_handle_at() system calls were
# added to Linux kernel 2.6.39.
# Check if client supports these functions
#
-AC_DEFUN([LC_HAVE_FHANDLE_SYSCALLS],
-[LB_LINUX_CONFIG_IM([FHANDLE],[
+AC_DEFUN([LC_HAVE_FHANDLE_SYSCALLS], [
+LB_CHECK_CONFIG_IM([FHANDLE],[
AC_DEFINE(HAVE_FHANDLE_SYSCALLS, 1,
[kernel supports fhandles and related syscalls])
-],[])
-])
+ ])
+]) # LC_HAVE_FHANDLE_SYSCALLS
#
+# LC_HAVE_INODE_OWNER_OR_CAPABLE
+#
# 2.6.39 renames is_owner_or_cap to inode_owner_or_capable
#
-AC_DEFUN([LC_HAVE_INODE_OWNER_OR_CAPABLE],
-[AC_MSG_CHECKING([if inode_owner_or_capable exist])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_INODE_OWNER_OR_CAPABLE], [
+LB_CHECK_COMPILE([if 'inode_owner_or_capable' exist],
+inode_owner_or_capable, [
#include <linux/fs.h>
],[
inode_owner_or_capable(NULL);
],[
AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE, 1,
[inode_owner_or_capable exist])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_HAVE_INODE_OWNER_OR_CAPABLE
#
+# LC_DIRTY_INODE_WITH_FLAG
+#
# 3.0 dirty_inode() has a flag parameter
# see kernel commit aa38572954ade525817fe88c54faebf85e5a61c0
#
-AC_DEFUN([LC_DIRTY_INODE_WITH_FLAG],
-[AC_MSG_CHECKING([if dirty_inode super_operation takes flag])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_DIRTY_INODE_WITH_FLAG], [
+LB_CHECK_COMPILE([if 'dirty_inode' super_operation takes flag],
+dirty_inode_super_operation_flag, [
#include <linux/fs.h>
],[
struct inode *inode;
inode->i_sb->s_op->dirty_inode(NULL, 0);
],[
AC_DEFINE(HAVE_DIRTY_INODE_HAS_FLAG, 1,
- [dirty_inode super_operation takes flag])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [dirty_inode super_operation takes flag])
])
+]) # LC_DIRTY_INODE_WITH_FLAG
#
+# LC_GENERIC_PERMISSION
+#
# 2.6.38 generic_permission taken 4 parameters.
# in fact, it means rcu-walk aware permission bring.
#
# 3.1 generic_permission taken 2 parameters.
# see kernel commit 2830ba7f34ebb27c4e5b8b6ef408cd6d74860890
#
-AC_DEFUN([LC_GENERIC_PERMISSION],
-[AC_MSG_CHECKING([if generic_permission take 2 or 4 arguments])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_GENERIC_PERMISSION], [
+LB_CHECK_COMPILE([if 'generic_permission' take 2 arguments],
+generic_permission_2args, [
#include <linux/fs.h>
],[
generic_permission(NULL, 0);
],[
AC_DEFINE(HAVE_GENERIC_PERMISSION_2ARGS, 1,
- [generic_permission taken 2 arguments])
- AC_MSG_RESULT([yes, 2 args])
+ [generic_permission taken 2 arguments])
],[
- LB_LINUX_TRY_COMPILE([
+ LB_CHECK_COMPILE([if 'generic_permission' take 4 arguments],
+ generic_permission_4args, [
#include <linux/fs.h>
],[
generic_permission(NULL, 0, 0, NULL);
],[
AC_DEFINE(HAVE_GENERIC_PERMISSION_4ARGS, 1,
- [generic_permission taken 4 arguments])
- AC_MSG_RESULT([yes, 4 args])
- ],[
- AC_MSG_RESULT([no])
+ [generic_permission taken 4 arguments])
])
])
-])
+]) # LC_GENERIC_PERMISSION
#
+# LC_LM_XXX_LOCK_MANAGER_OPS
+#
# 3.1 renames lock-manager ops(lock_manager_operations) from fl_xxx to lm_xxx
# see kernel commit 8fb47a4fbf858a164e973b8ea8ef5e83e61f2e50
#
-AC_DEFUN([LC_LM_XXX_LOCK_MANAGER_OPS],
-[AC_MSG_CHECKING([if lock-manager ops renamed to lm_xxx])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_LM_XXX_LOCK_MANAGER_OPS], [
+LB_CHECK_COMPILE([if 'lock-manager' ops renamed to 'lm_xxx'],
+lock_manager_ops_lm_xxx, [
#include <linux/fs.h>
],[
struct lock_manager_operations lm_ops;
lm_ops.lm_compare_owner = NULL;
],[
AC_DEFINE(HAVE_LM_XXX_LOCK_MANAGER_OPS, 1,
- [lock-manager ops renamed to lm_xxx])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [lock-manager ops renamed to lm_xxx])
])
+]) # LC_LM_XXX_LOCK_MANAGER_OPS
#
+# LC_INODE_DIO_WAIT
+#
# 3.1 kills inode->i_alloc_sem, use i_dio_count and inode_dio_wait/
# inode_dio_done instead.
# see kernel commit bd5fe6c5eb9c548d7f07fe8f89a150bb6705e8e3
#
-AC_DEFUN([LC_INODE_DIO_WAIT],
-[AC_MSG_CHECKING([if inode->i_alloc_sem is killed and use inode_dio_wait/done.])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_INODE_DIO_WAIT], [
+LB_CHECK_COMPILE([if 'inode->i_alloc_sem' is killed and use inode_dio_wait/done],
+inode_dio_wait, [
#include <linux/fs.h>
],[
inode_dio_wait((struct inode *)0);
inode_dio_done((struct inode *)0);
],[
AC_DEFINE(HAVE_INODE_DIO_WAIT, 1,
- [inode->i_alloc_sem is killed and use inode_dio_wait/done])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [inode->i_alloc_sem is killed and use inode_dio_wait/done])
])
+]) # LC_INODE_DIO_WAIT
#
+# LC_IOP_GET_ACL
+#
# 3.1 adds get_acl method to inode_operations to read ACL from disk.
# see kernel commit 4e34e719e457f2e031297175410fc0bd4016a085
#
-AC_DEFUN([LC_IOP_GET_ACL],
-[AC_MSG_CHECKING([inode_operations has .get_acl member function])
-LB_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
-],[
- struct inode_operations iop;
- iop.get_acl = NULL;
+AC_DEFUN([LC_IOP_GET_ACL], [
+LB_CHECK_COMPILE([if 'inode_operations' has '.get_acl' member function],
+inode_ops_get_acl, [
+ #include <linux/fs.h>
],[
- AC_DEFINE(HAVE_IOP_GET_ACL, 1,
- [inode_operations has .get_acl member function])
- AC_MSG_RESULT([yes])
+ struct inode_operations iop;
+ iop.get_acl = NULL;
],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_IOP_GET_ACL, 1,
+ [inode_operations has .get_acl member function])
])
+]) # LC_IOP_GET_ACL
#
+# LC_FILE_LLSEEK_SIZE
+#
# 3.1 introduced generic_file_llseek_size()
#
-AC_DEFUN([LC_FILE_LLSEEK_SIZE],
- [LB_CHECK_SYMBOL_EXPORT([generic_file_llseek_size],
- [fs/read_write.c],
- [AC_DEFINE(HAVE_FILE_LLSEEK_SIZE, 1,
- [generic_file_llseek_size is exported by the kernel])])
-])
+AC_DEFUN([LC_FILE_LLSEEK_SIZE], [
+LB_CHECK_EXPORT([generic_file_llseek_size], [fs/read_write.c],
+ [AC_DEFINE(HAVE_FILE_LLSEEK_SIZE, 1,
+ [generic_file_llseek_size is exported by the kernel])])
+]) # LC_FILE_LLSEEK_SIZE
#
+# LC_HAVE_VOID_MAKE_REQUEST_FN
+#
# 3.2 request_queue.make_request_fn defined as function returns with void
# see kernel commit 5a7bbad27a410350e64a2d7f5ec18fc73836c14f
#
-AC_DEFUN([LC_HAVE_VOID_MAKE_REQUEST_FN],
-[AC_MSG_CHECKING([if request_queue.make_request_fn returns void but not int])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_VOID_MAKE_REQUEST_FN], [
+LB_CHECK_COMPILE([if 'request_queue.make_request_fn' returns void but not int],
+make_request_fn_void, [
#include <linux/blkdev.h>
],[
int ret;
- make_request_fn *mrf;
+ make_request_fn *mrf;
ret = mrf(NULL, NULL);
-],[
- AC_MSG_RESULT([no])
-],[
+],[],[
AC_DEFINE(HAVE_VOID_MAKE_REQUEST_FN, 1,
- [request_queue.make_request_fn returns void but not int])
- AC_MSG_RESULT([yes])
-])
+ [request_queue.make_request_fn returns void but not int])
])
+]) # LC_HAVE_VOID_MAKE_REQUEST_FN
#
+# LC_HAVE_PROTECT_I_NLINK
+#
# 3.2 protects inode->i_nlink from direct modification
# see kernel commit a78ef704a8dd430225955f0709b22d4a6ba21deb
# at the same time adds set_nlink(), so checks set_nlink() for it.
#
-AC_DEFUN([LC_HAVE_PROTECT_I_NLINK],
-[AC_MSG_CHECKING([if inode->i_nlink is protected from direct modification])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_PROTECT_I_NLINK], [
+LB_CHECK_COMPILE([if 'inode->i_nlink' is protected from direct modification],
+inode_i_nlink_protected, [
#include <linux/fs.h>
],[
struct inode i;
set_nlink(&i, 1);
],[
AC_DEFINE(HAVE_PROTECT_I_NLINK, 1,
- [inode->i_nlink is protected from direct modification])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [inode->i_nlink is protected from direct modification])
])
+]) # LC_HAVE_PROTECT_I_NLINK
#
+# LC_HAVE_MIGRATE_HEADER
+#
# 3.3 introduces migrate_mode.h and migratepage has 4 args
#
-AC_DEFUN([LC_HAVE_MIGRATE_HEADER],
-[LB_CHECK_FILE([$LINUX/include/linux/migrate.h],[
- AC_DEFINE(HAVE_MIGRATE_H, 1,
+AC_DEFUN([LC_HAVE_MIGRATE_HEADER], [
+LB_CHECK_FILE([$LINUX/include/linux/migrate.h], [
+ AC_DEFINE(HAVE_MIGRATE_H, 1,
[kernel has include/linux/migrate.h])
-],[LB_CHECK_FILE([$LINUX/include/linux/migrate_mode.h],[
+],[
+ LB_CHECK_FILE([$LINUX/include/linux/migrate_mode.h], [
AC_DEFINE(HAVE_MIGRATE_MODE_H, 1,
[kernel has include/linux/migrate_mode.h])
-],[
- AC_MSG_RESULT([no])
-])
-])
+ ])
])
+]) # LC_HAVE_MIGRATE_HEADER
-AC_DEFUN([LC_MIGRATEPAGE_4ARGS],
-[AC_MSG_CHECKING([if address_space_operations.migratepage has 4 args])
-LB_LINUX_TRY_COMPILE([
+#
+# LC_MIGRATEPAGE_4ARGS
+#
+AC_DEFUN([LC_MIGRATEPAGE_4ARGS], [
+LB_CHECK_COMPILE([if 'address_space_operations.migratepage' has 4 args],
+address_space_ops_migratepage_4args, [
#include <linux/fs.h>
#ifdef HAVE_MIGRATE_H
#include <linux/migrate.h>
#endif
],[
struct address_space_operations aops;
-
aops.migratepage(NULL, NULL, NULL, MIGRATE_ASYNC);
],[
AC_DEFINE(HAVE_MIGRATEPAGE_4ARGS, 1,
[address_space_operations.migratepage has 4 args])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_MIGRATEPAGE_4ARGS
#
+# LC_SUPEROPS_USE_DENTRY
+#
# 3.3 switchs super_operations to use dentry as parameter (but not vfsmount)
# see kernel commit 34c80b1d93e6e20ca9dea0baf583a5b5510d92d4
#
-AC_DEFUN([LC_SUPEROPS_USE_DENTRY],
-[AC_MSG_CHECKING([if super_operations use dentry as parameter])
+AC_DEFUN([LC_SUPEROPS_USE_DENTRY], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
-LB_LINUX_TRY_COMPILE([
+LB_CHECK_COMPILE([if 'super_operations' use 'dentry' as parameter],
+super_ops_dentry, [
#include <linux/fs.h>
- int show_options(struct seq_file *seq, struct dentry *root){
+ int show_options(struct seq_file *seq, struct dentry *root) {
return 0;
}
],[
ops.show_options = show_options;
],[
AC_DEFINE(HAVE_SUPEROPS_USE_DENTRY, 1,
- [super_operations use dentry as parameter])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
+ [super_operations use dentry as parameter])
])
EXTRA_KCFLAGS="$tmp_flags"
-])
+]) # LC_SUPEROPS_USE_DENTRY
#
+# LC_INODEOPS_USE_UMODE_T
+#
# 3.3 switchs inode_operations to use umode_t as parameter (but not int)
# see kernel commit 1a67aafb5f72a436ca044293309fa7e6351d6a35
#
-AC_DEFUN([LC_INODEOPS_USE_UMODE_T],
-[AC_MSG_CHECKING([if inode_operations use umode_t as parameter])
+AC_DEFUN([LC_INODEOPS_USE_UMODE_T], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
-LB_LINUX_TRY_COMPILE([
+LB_CHECK_COMPILE([if 'inode_operations' use 'umode_t' as parameter],
+inode_ops_umode_t, [
#include <linux/fs.h>
#include <linux/types.h>
int my_mknod(struct inode *dir, struct dentry *dchild,
ops.mknod = my_mknod;
],[
AC_DEFINE(HAVE_INODEOPS_USE_UMODE_T, 1,
- [inode_operations use umode_t as parameter])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
+ [inode_operations use umode_t as parameter])
])
EXTRA_KCFLAGS="$tmp_flags"
-])
+]) # LC_INODEOPS_USE_UMODE_T
+#
+# LC_KMAP_ATOMIC_HAS_1ARG
+#
# 3.4 kmap_atomic removes second argument
# see kernel commit 1ec9c5ddc17aa398f05646abfcbaf315b544e62f
#
-AC_DEFUN([LC_KMAP_ATOMIC_HAS_1ARG],
-[AC_MSG_CHECKING([if kmap_atomic has only 1 argument])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_KMAP_ATOMIC_HAS_1ARG], [
+LB_CHECK_COMPILE([if 'kmap_atomic' has only 1 argument],
+kmap_atomic_1arg, [
#include <linux/highmem.h>
],[
kmap_atomic(NULL);
],[
AC_DEFINE(HAVE_KMAP_ATOMIC_HAS_1ARG, 1,
- [have kmap_atomic has only 1 argument])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [have kmap_atomic has only 1 argument])
])
+]) # LC_KMAP_ATOMIC_HAS_1ARG
#
+# LC_HAVE_D_MAKE_ROOT
+#
# 3.4 converts d_alloc_root to d_make_root
# see kernel commit 32991ab305ace7017c62f8eecbe5eb36dc32e13b
#
-AC_DEFUN([LC_HAVE_D_MAKE_ROOT],
-[AC_MSG_CHECKING([if have d_make_root])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_D_MAKE_ROOT], [
+LB_CHECK_COMPILE([if have 'd_make_root'],
+d_make_root, [
#include <linux/fs.h>
],[
d_make_root((struct inode *)NULL);
],[
AC_DEFINE(HAVE_D_MAKE_ROOT, 1,
- [have d_make_root])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [have d_make_root])
])
+]) # LC_HAVE_D_MAKE_ROOT
#
+# LC_HAVE_CACHE_REGISTER
+#
# 3.4 cache_register/cache_unregister are removed
# see kernel commit 2c5f846747526e2b83c5f1b8e69016be0e2e87c0
# Note, since 2.6.37 cache_register_net/cache_unregister_net
# 3.3 cache_register_net/cache_unregister_net are
# exported and replacing cache_register/cache_unregister in 3.4
#
-AC_DEFUN([LC_HAVE_CACHE_REGISTER],
-[AC_MSG_CHECKING([if have cache_register])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_CACHE_REGISTER], [
+LB_CHECK_COMPILE([if have 'cache_register'],
+cache_register, [
#include <linux/sunrpc/cache.h>
],[
cache_register(NULL);
],[
AC_DEFINE(HAVE_CACHE_REGISTER, 1,
- [have cache_register])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [have cache_register])
])
+]) # LC_HAVE_CACHE_REGISTER
#
+# LC_HAVE_CLEAR_INODE
+#
# 3.5 renames end_writeback() back to clear_inode()...
# see kernel commit dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430
#
-AC_DEFUN([LC_HAVE_CLEAR_INODE],
-[AC_MSG_CHECKING([if have clear_inode])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_CLEAR_INODE], [
+LB_CHECK_COMPILE([if have 'clear_inode'],
+clear_inode, [
#include <linux/fs.h>
],[
clear_inode((struct inode *)NULL);
],[
AC_DEFINE(HAVE_CLEAR_INODE, 1,
- [have clear_inode])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [have clear_inode])
])
+]) # LC_HAVE_CLEAR_INODE
#
+# LC_HAVE_ENCODE_FH_PARENT
+#
# 3.5 encode_fh has parent inode passed in directly
# see kernel commit b0b0382b
#
-AC_DEFUN([LC_HAVE_ENCODE_FH_PARENT],
-[AC_MSG_CHECKING([if encode_fh have parent inode as parameter])
+AC_DEFUN([LC_HAVE_ENCODE_FH_PARENT], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
-LB_LINUX_TRY_COMPILE([
+LB_CHECK_COMPILE([if 'encode_fh' have parent inode as parameter],
+encode_fh_parent_inode, [
#include <linux/exportfs.h>
#include <linux/fs.h>
#include <linux/types.h>
exp_op.encode_fh = ll_encode_fh;
],[
AC_DEFINE(HAVE_ENCODE_FH_PARENT, 1,
- [have parent inode as parameter])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
+ [have parent inode as parameter])
])
EXTRA_KCFLAGS="$tmp_flags"
-])
+]) # LC_HAVE_ENCODE_FH_PARENT
+#
+# LC_FILE_LLSEEK_SIZE_5ARG
+#
# 3.5 has generic_file_llseek_size with 5 args
-AC_DEFUN([LC_FILE_LLSEEK_SIZE_5ARG],
-[AC_MSG_CHECKING([if kernel has generic_file_llseek_size with 5 args])
-LB_LINUX_TRY_COMPILE([
+#
+AC_DEFUN([LC_FILE_LLSEEK_SIZE_5ARG], [
+LB_CHECK_COMPILE([if Linux kernel has 'generic_file_llseek_size' with 5 args],
+generic_file_llseek_size_5args, [
#include <linux/fs.h>
],[
generic_file_llseek_size(NULL, 0, 0, 0, 0);
], [
- AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_FILE_LLSEEK_SIZE_5ARGS, 1,
[kernel has generic_file_llseek_size with 5 args])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_FILE_LLSEEK_SIZE_5ARG
#
+# LC_HAVE_DENTRY_D_ALIAS_HLIST
+#
# 3.6 switch i_dentry/d_alias from list to hlist
#
-AC_DEFUN([LC_HAVE_DENTRY_D_ALIAS_HLIST],
-[AC_MSG_CHECKING([if i_dentry/d_alias uses hlist])
+AC_DEFUN([LC_HAVE_DENTRY_D_ALIAS_HLIST], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
-LB_LINUX_TRY_COMPILE([
+LB_CHECK_COMPILE([if 'i_dentry/d_alias' uses 'hlist'],
+i_dentry_d_alias_hlist, [
#include <linux/fs.h>
#include <linux/list.h>
],[
dentry.d_alias = node;
],[
AC_DEFINE(HAVE_DENTRY_D_ALIAS_HLIST, 1,
- [have i_dentry/d_alias uses hlist])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
+ [have i_dentry/d_alias uses hlist])
])
EXTRA_KCFLAGS="$tmp_flags"
-])
+]) # LC_HAVE_DENTRY_D_ALIAS_HLIST
#
+# LC_DENTRY_OPEN_USE_PATH
+#
# 3.6 dentry_open uses struct path as first argument
# see kernel commit 765927b2
#
-AC_DEFUN([LC_DENTRY_OPEN_USE_PATH],
-[AC_MSG_CHECKING([if dentry_open uses struct path as first argument])
+AC_DEFUN([LC_DENTRY_OPEN_USE_PATH], [
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
-LB_LINUX_TRY_COMPILE([
+LB_CHECK_COMPILE([if 'dentry_open' uses 'struct path' as first argument],
+dentry_open_path, [
#include <linux/fs.h>
#include <linux/path.h>
],[
dentry_open(&path, 0, NULL);
],[
AC_DEFINE(HAVE_DENTRY_OPEN_USE_PATH, 1,
- [dentry_open uses struct path as first argument])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
+ [dentry_open uses struct path as first argument])
])
EXTRA_KCFLAGS="$tmp_flags"
-])
+]) # LC_DENTRY_OPEN_USE_PATH
#
+# LC_HAVE_IOP_ATOMIC_OPEN
+#
# 3.6 vfs adds iop->atomic_open
#
-AC_DEFUN([LC_HAVE_IOP_ATOMIC_OPEN],
-[AC_MSG_CHECKING([if iop has atomic_open])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_IOP_ATOMIC_OPEN], [
+LB_CHECK_COMPILE([if 'iop' has 'atomic_open'],
+inode_ops_atomic_open, [
#include <linux/fs.h>
],[
struct inode_operations iop;
iop.atomic_open = NULL;
],[
AC_DEFINE(HAVE_IOP_ATOMIC_OPEN, 1,
- [have iop atomic_open])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [have iop atomic_open])
])
+]) # LC_HAVE_IOP_ATOMIC_OPEN
#
+# LC_HAVE_POSIXACL_USER_NS
+#
# 3.7 posix_acl_{to,from}_xattr take struct user_namespace
#
-AC_DEFUN([LC_HAVE_POSIXACL_USER_NS],
-[AC_MSG_CHECKING([if posix_acl_to_xattr takes struct user_namespace])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_POSIXACL_USER_NS], [
+LB_CHECK_COMPILE([if 'posix_acl_to_xattr' takes 'struct user_namespace'],
+posix_acl_to_xattr_user_namespace, [
#include <linux/fs.h>
#include <linux/posix_acl_xattr.h>
],[
posix_acl_to_xattr((struct user_namespace *)NULL, NULL, NULL, 0);
],[
AC_DEFINE(HAVE_POSIXACL_USER_NS, 1,
- [posix_acl_to_xattr takes struct user_namespace])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [posix_acl_to_xattr takes struct user_namespace])
])
+]) # LC_HAVE_POSIXACL_USER_NS
#
+# LC_HAVE_FILE_F_INODE
+#
# 3.8 struct file has new member f_inode
#
-AC_DEFUN([LC_HAVE_FILE_F_INODE],
-[AC_MSG_CHECKING([if struct file has memeber f_inode])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_FILE_F_INODE], [
+LB_CHECK_COMPILE([if 'struct file' has memeber 'f_inode'],
+file_f_inode, [
#include <linux/fs.h>
],[
((struct file *)0)->f_inode = NULL;
],[
AC_DEFINE(HAVE_FILE_F_INODE, 1,
- [struct file has memeber f_inode])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ [struct file has memeber f_inode])
])
+]) # LC_HAVE_FILE_F_INODE
-AC_DEFUN([LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS],
-[AC_MSG_CHECKING([if sunrpc_cache_pipe_upcall takes 3 args])
-LB_LINUX_TRY_COMPILE([
+#
+# LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS
+#
+AC_DEFUN([LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS], [
+LB_CHECK_COMPILE([if 'sunrpc_cache_pipe_upcall' takes 3 args],
+sunrpc_cache_pipe_upcall_3args, [
#include <linux/sunrpc/cache.h>
],[
sunrpc_cache_pipe_upcall(NULL, NULL, NULL);
],[
AC_DEFINE(HAVE_SUNRPC_UPCALL_HAS_3ARGS, 1,
[sunrpc_cache_pipe_upcall takes 3 args])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS
#
+# LC_HAVE_HLIST_FOR_EACH_3ARG
+#
# 3.9 uses hlist_for_each_entry with 3 args
# b67bfe0d42cac56c512dd5da4b1b347a23f4b70a
#
-AC_DEFUN([LC_HAVE_HLIST_FOR_EACH_3ARG],
-[AC_MSG_CHECKING([if hlist_for_each_entry has 3 args])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_HLIST_FOR_EACH_3ARG], [
+LB_CHECK_COMPILE([if 'hlist_for_each_entry' has 3 args],
+hlist_for_each_entry_3args, [
#include <linux/list.h>
#include <linux/fs.h>
],[
continue;
}
],[
- AC_DEFINE(HAVE_HLIST_FOR_EACH_3ARG, 1, [3 args])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_HLIST_FOR_EACH_3ARG, 1,
+ [hlist_for_each_entry has 3 args])
])
+]) # LC_HAVE_HLIST_FOR_EACH_3ARG
#
+# LC_HAVE_ONLY_PROCFS_SEQ
+#
# 3.10+ only supports procfs seq_files handling
#
-AC_DEFUN([LC_HAVE_ONLY_PROCFS_SEQ],
-[AC_MSG_CHECKING([if procfs only supports using seq_files])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_ONLY_PROCFS_SEQ], [
+LB_CHECK_COMPILE([if procfs only supports using 'seq_files'],
+only_procfs_seq_files, [
#include <linux/proc_fs.h>
],[
((struct proc_dir_entry *)0)->write_proc(NULL, NULL, 0, NULL);
-],[
- AC_MSG_RESULT([no])
-],[
- AC_DEFINE(HAVE_ONLY_PROCFS_SEQ, 1, [only seq_files supported])
- AC_MSG_RESULT([yes])
-])
+], [], [
+ AC_DEFINE(HAVE_ONLY_PROCFS_SEQ, 1,
+ [only seq_files supported])
])
+]) # LC_HAVE_ONLY_PROCFS_SEQ
+#
+# LC_BLKDEV_RELEASE_RETURN_INT
+#
# 3.10 release for block device doesn't return int
-AC_DEFUN([LC_BLKDEV_RELEASE_RETURN_INT],
-[AC_MSG_CHECKING([if block_device_operations release returns int])
-LB_LINUX_TRY_COMPILE([
+#
+AC_DEFUN([LC_BLKDEV_RELEASE_RETURN_INT], [
+LB_CHECK_COMPILE([if 'block_device_operations' release returns 'int'],
+block_device_ops_release_return_int, [
#include <linux/blkdev.h>
],[
struct block_device_operations fops;
int i __attribute__ ((unused));
- i = fops.release(NULL,0);
+ i = fops.release(NULL, 0);
],[
- AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_BLKDEV_RELEASE_RETURN_INT, 1,
- [block device release returns int])
-],[
- AC_MSG_RESULT([no])
-])
+ [block device release returns int])
])
+]) # LC_BLKDEV_RELEASE_RETURN_INT
#
+# LC_INVALIDATE_RANGE
+#
# 3.11 invalidatepage requires the length of the range to invalidate
#
-AC_DEFUN([LC_INVALIDATE_RANGE],
-[AC_MSG_CHECKING([if address_space_operations.invalidatepage requires 3 arguments])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_INVALIDATE_RANGE], [
+LB_CHECK_COMPILE([if 'address_space_operations.invalidatepage' requires 3 arguments],
+address_space_ops_invalidatepage_3args, [
#include <linux/fs.h>
],[
struct address_space_operations a_ops;
-
- a_ops.invalidatepage(NULL,0,0);
+ a_ops.invalidatepage(NULL, 0, 0);
],[
- AC_DEFINE(HAVE_INVALIDATE_RANGE, 1, [address_space_operations.invalidatepage needs 3 arguments])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_INVALIDATE_RANGE, 1,
+ [address_space_operations.invalidatepage needs 3 arguments])
])
+]) # LC_INVALIDATE_RANGE
#
+# LC_HAVE_DIR_CONTEXT
+#
# 3.11 readdir now takes the new struct dir_context
#
-AC_DEFUN([LC_HAVE_DIR_CONTEXT],
-[AC_MSG_CHECKING([if dir_context exist])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_DIR_CONTEXT], [
+LB_CHECK_COMPILE([if 'dir_context' exist],
+dir_context, [
#include <linux/fs.h>
],[
struct dir_context ctx;
-
ctx.pos = 0;
],[
- AC_DEFINE(HAVE_DIR_CONTEXT, 1, [dir_context exist])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_DIR_CONTEXT, 1,
+ [dir_context exist])
])
+]) # LC_HAVE_DIR_CONTEXT
#
+# LC_D_COMPARE_5ARGS
+#
# 3.11 dentry_operations.d_compare() taken 5 arguments.
#
-AC_DEFUN([LC_D_COMPARE_5ARGS],
-[AC_MSG_CHECKING([if d_compare taken 5 arguments])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_D_COMPARE_5ARGS], [
+LB_CHECK_COMPILE([if 'd_compare' taken 5 arguments],
+d_compare_5args, [
#include <linux/dcache.h>
],[
((struct dentry_operations*)0)->d_compare(NULL,NULL,0,NULL,NULL);
],[
AC_DEFINE(HAVE_D_COMPARE_5ARGS, 1,
[d_compare need 5 arguments])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_D_COMPARE_5ARGS
#
+# LC_HAVE_DCOUNT
+#
# 3.11 need to access d_count to get dentry reference count
#
-AC_DEFUN([LC_HAVE_DCOUNT],
-[AC_MSG_CHECKING([if d_count exist])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_HAVE_DCOUNT], [
+LB_CHECK_COMPILE([if 'd_count' exist],
+d_count, [
#include <linux/dcache.h>
],[
struct dentry de;
-
d_count(&de);
],[
- AC_DEFINE(HAVE_D_COUNT, 1, [d_count exist])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_D_COUNT, 1,
+ [d_count exist])
])
+]) # LC_HAVE_DCOUNT
#
+# LC_OLDSIZE_TRUNCATE_PAGECACHE
+#
# 3.12 truncate_pagecache without oldsize parameter
#
-AC_DEFUN([LC_OLDSIZE_TRUNCATE_PAGECACHE],
-[AC_MSG_CHECKING([if truncate_pagecache with old_size parameter])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_OLDSIZE_TRUNCATE_PAGECACHE], [
+LB_CHECK_COMPILE([if 'truncate_pagecache' with 'old_size' parameter],
+truncate_pagecache_old_size, [
#include <linux/mm.h>
],[
truncate_pagecache(NULL, 0, 0);
],[
- AC_DEFINE(HAVE_OLDSIZE_TRUNCATE_PAGECACHE, 1, [with oldsize])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_OLDSIZE_TRUNCATE_PAGECACHE, 1,
+ [with oldsize])
])
+]) # LC_OLDSIZE_TRUNCATE_PAGECACHE
#
+# LC_KIOCB_KI_LEFT
+#
# 3.12 ki_left removed from struct kiocb
#
-AC_DEFUN([LC_KIOCB_KI_LEFT],
-[AC_MSG_CHECKING([if struct kiocb with ki_left member])
-LB_LINUX_TRY_COMPILE([
+AC_DEFUN([LC_KIOCB_KI_LEFT], [
+LB_CHECK_COMPILE([if 'struct kiocb' with 'ki_left' member],
+kiocb_ki_left, [
#include <linux/aio.h>
],[
((struct kiocb*)0)->ki_left = 0;
],[
- AC_DEFINE(HAVE_KIOCB_KI_LEFT, 1, [ki_left exist])
- AC_MSG_RESULT([yes])
-],[
- AC_MSG_RESULT([no])
-])
+ AC_DEFINE(HAVE_KIOCB_KI_LEFT, 1,
+ [ki_left exist])
])
+]) # LC_KIOCB_KI_LEFT
+#
+# LC_VFS_RENAME_5ARGS
+#
# 3.13 has vfs_renane with 5 args
-AC_DEFUN([LC_VFS_RENAME_5ARGS],
-[AC_MSG_CHECKING([if kernel has vfs_rename with 5 args])
-LB_LINUX_TRY_COMPILE([
+#
+AC_DEFUN([LC_VFS_RENAME_5ARGS], [
+LB_CHECK_COMPILE([if Linux kernel has 'vfs_rename' with 5 args],
+vfs_rename_5args, [
#include <linux/fs.h>
],[
vfs_rename(NULL, NULL, NULL, NULL, NULL);
], [
- AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_VFS_RENAME_5ARGS, 1,
[kernel has vfs_rename with 5 args])
-],[
- AC_MSG_RESULT([no])
-])
])
+]) # LC_VFS_RENAME_5ARGS
#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
#
-AC_DEFUN([LC_PROG_LINUX],
- [
- LC_CONFIG_PINGER
- LC_CONFIG_CHECKSUM
- LC_CONFIG_LIBLUSTRE_RECOVERY
- LC_CONFIG_HEALTH_CHECK_WRITE
- LC_CONFIG_LRU_RESIZE
- LC_LLITE_LLOOP_MODULE
-
- LC_GLIBC_SUPPORT_FHANDLES
- LC_CAPA_CRYPTO
- LC_CONFIG_RMTCLIENT
- LC_CONFIG_GSS
-
- # 2.6.32
- LC_BLK_QUEUE_MAX_SEGMENTS
-
- # 2.6.34
- LC_HAVE_DQUOT_FS_DISK_QUOTA
- LC_HAVE_DQUOT_SUSPEND
-
- # 2.6.35, 3.0.0
- LC_FILE_FSYNC
- LC_EXPORT_SIMPLE_SETATTR
- LC_EXPORT_TRUNCATE_COMPLETE_PAGE
-
- # 2.6.36
- LC_FS_STRUCT_RWLOCK
- LC_SBOPS_EVICT_INODE
-
- # 2.6.37
- LC_KERNEL_LOCKED
-
- # 2.6.38
- LC_BLKDEV_GET_BY_DEV
- LC_GENERIC_PERMISSION
- LC_DCACHE_LOCK
- LC_INODE_I_RCU
- LC_D_COMPARE_7ARGS
- LC_D_DELETE_CONST
-
- # 2.6.39
- LC_REQUEST_QUEUE_UNPLUG_FN
- LC_HAVE_FHANDLE_SYSCALLS
- LC_HAVE_FSTYPE_MOUNT
- LC_IOP_TRUNCATE
- LC_HAVE_INODE_OWNER_OR_CAPABLE
-
- # 3.0
- LC_DIRTY_INODE_WITH_FLAG
-
- # 3.1
- LC_LM_XXX_LOCK_MANAGER_OPS
- LC_INODE_DIO_WAIT
- LC_IOP_GET_ACL
- LC_FILE_LLSEEK_SIZE
- LC_INODE_PERMISION_2ARGS
-
- # 3.2
- LC_HAVE_VOID_MAKE_REQUEST_FN
- LC_HAVE_PROTECT_I_NLINK
-
- # 3.3
- LC_HAVE_MIGRATE_HEADER
- LC_MIGRATEPAGE_4ARGS
- LC_SUPEROPS_USE_DENTRY
- LC_INODEOPS_USE_UMODE_T
- LC_HAVE_CACHE_REGISTER
-
- # 3.4
- LC_HAVE_D_MAKE_ROOT
- LC_KMAP_ATOMIC_HAS_1ARG
-
- # 3.5
- LC_HAVE_CLEAR_INODE
- LC_HAVE_ENCODE_FH_PARENT
- LC_FILE_LLSEEK_SIZE_5ARG
-
- # 3.6
- LC_HAVE_DENTRY_D_ALIAS_HLIST
- LC_DENTRY_OPEN_USE_PATH
- LC_HAVE_IOP_ATOMIC_OPEN
-
- # 3.7
- LC_HAVE_POSIXACL_USER_NS
-
- # 3.8
- LC_HAVE_FILE_F_INODE
- LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS
-
- # 3.9
- LC_HAVE_HLIST_FOR_EACH_3ARG
-
- # 3.10
- LC_HAVE_ONLY_PROCFS_SEQ
- LC_BLKDEV_RELEASE_RETURN_INT
-
- # 3.11
- LC_INVALIDATE_RANGE
- LC_HAVE_DIR_CONTEXT
- LC_D_COMPARE_5ARGS
- LC_HAVE_DCOUNT
-
- # 3.12
- LC_OLDSIZE_TRUNCATE_PAGECACHE
- LC_KIOCB_KI_LEFT
-
- # 3.13
- LC_VFS_RENAME_5ARGS
-
- #
- if test x$enable_server != xno ; then
+AC_DEFUN([LC_PROG_LINUX], [
+ AC_MSG_NOTICE([Lustre kernel checks
+==============================================================================])
+
+ LC_CONFIG_PINGER
+ LC_CONFIG_CHECKSUM
+ LC_CONFIG_LIBLUSTRE_RECOVERY
+ LC_CONFIG_HEALTH_CHECK_WRITE
+ LC_CONFIG_LRU_RESIZE
+ LC_LLITE_LLOOP_MODULE
+
+ LC_GLIBC_SUPPORT_FHANDLES
+ LC_CAPA_CRYPTO
+ LC_CONFIG_RMTCLIENT
+ LC_CONFIG_GSS
+
+ # 2.6.32
+ LC_BLK_QUEUE_MAX_SEGMENTS
+
+ # 2.6.34
+ LC_HAVE_DQUOT_FS_DISK_QUOTA
+ LC_HAVE_DQUOT_SUSPEND
+
+ # 2.6.35, 3.0.0
+ LC_FILE_FSYNC
+ LC_EXPORT_SIMPLE_SETATTR
+ LC_EXPORT_TRUNCATE_COMPLETE_PAGE
+
+ # 2.6.36
+ LC_FS_STRUCT_RWLOCK
+ LC_SBOPS_EVICT_INODE
+
+ # 2.6.37
+ LC_KERNEL_LOCKED
+
+ # 2.6.38
+ LC_BLKDEV_GET_BY_DEV
+ LC_GENERIC_PERMISSION
+ LC_DCACHE_LOCK
+ LC_INODE_I_RCU
+ LC_D_COMPARE_7ARGS
+ LC_D_DELETE_CONST
+
+ # 2.6.39
+ LC_REQUEST_QUEUE_UNPLUG_FN
+ LC_HAVE_FHANDLE_SYSCALLS
+ LC_HAVE_FSTYPE_MOUNT
+ LC_IOP_TRUNCATE
+ LC_HAVE_INODE_OWNER_OR_CAPABLE
+
+ # 3.0
+ LC_DIRTY_INODE_WITH_FLAG
+
+ # 3.1
+ LC_LM_XXX_LOCK_MANAGER_OPS
+ LC_INODE_DIO_WAIT
+ LC_IOP_GET_ACL
+ LC_FILE_LLSEEK_SIZE
+ LC_INODE_PERMISION_2ARGS
+
+ # 3.2
+ LC_HAVE_VOID_MAKE_REQUEST_FN
+ LC_HAVE_PROTECT_I_NLINK
+
+ # 3.3
+ LC_HAVE_MIGRATE_HEADER
+ LC_MIGRATEPAGE_4ARGS
+ LC_SUPEROPS_USE_DENTRY
+ LC_INODEOPS_USE_UMODE_T
+ LC_HAVE_CACHE_REGISTER
+
+ # 3.4
+ LC_HAVE_D_MAKE_ROOT
+ LC_KMAP_ATOMIC_HAS_1ARG
+
+ # 3.5
+ LC_HAVE_CLEAR_INODE
+ LC_HAVE_ENCODE_FH_PARENT
+ LC_FILE_LLSEEK_SIZE_5ARG
+
+ # 3.6
+ LC_HAVE_DENTRY_D_ALIAS_HLIST
+ LC_DENTRY_OPEN_USE_PATH
+ LC_HAVE_IOP_ATOMIC_OPEN
+
+ # 3.7
+ LC_HAVE_POSIXACL_USER_NS
+
+ # 3.8
+ LC_HAVE_FILE_F_INODE
+ LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS
+
+ # 3.9
+ LC_HAVE_HLIST_FOR_EACH_3ARG
+
+ # 3.10
+ LC_HAVE_ONLY_PROCFS_SEQ
+ LC_BLKDEV_RELEASE_RETURN_INT
+
+ # 3.11
+ LC_INVALIDATE_RANGE
+ LC_HAVE_DIR_CONTEXT
+ LC_D_COMPARE_5ARGS
+ LC_HAVE_DCOUNT
+
+ # 3.12
+ LC_OLDSIZE_TRUNCATE_PAGECACHE
+ LC_KIOCB_KI_LEFT
+
+ # 3.13
+ LC_VFS_RENAME_5ARGS
+
+ #
+ AS_IF([test "x$enable_server" != xno], [
LC_FUNC_DEV_SET_RDONLY
LC_STACK_SIZE
LC_QUOTA64
LC_QUOTA_CONFIG
- fi
-])
+ ])
+]) # LC_PROG_LINUX
#
# LC_CONFIG_CLIENT
#
# Check whether to build the client side of Lustre
#
-AC_DEFUN([LC_CONFIG_CLIENT],
-[AC_MSG_CHECKING([whether to build Lustre client support])
+AC_DEFUN([LC_CONFIG_CLIENT], [
+AC_MSG_CHECKING([whether to build Lustre client support])
AC_ARG_ENABLE([client],
AC_HELP_STRING([--disable-client],
- [disable Lustre client support]),
- [],[enable_client='yes'])
+ [disable Lustre client support]),
+ [], [enable_client="yes"])
AC_MSG_RESULT([$enable_client])
-])
+]) # LC_CONFIG_CLIENT
#
# LC_CONFIG_LIBLUSTRE
#
# whether to build liblustre
#
-AC_DEFUN([LC_CONFIG_LIBLUSTRE],
-[AC_MSG_CHECKING([whether to build Lustre library])
+AC_DEFUN([LC_CONFIG_LIBLUSTRE], [
+AC_MSG_CHECKING([whether to build Lustre library])
AC_ARG_ENABLE([liblustre],
AC_HELP_STRING([--disable-liblustre],
- [disable building of Lustre library]),
- [],[enable_liblustre=$with_sysio])
+ [disable building of Lustre library]),
+ [], [enable_liblustre=$with_sysio])
AC_MSG_RESULT([$enable_liblustre])
+
# only build sysio if liblustre is built
with_sysio="$enable_liblustre"
AC_MSG_CHECKING([whether to build liblustre tests])
AC_ARG_ENABLE([liblustre-tests],
AC_HELP_STRING([--enable-liblustre-tests],
- [enable liblustre tests, if --disable-tests is used]),
- [],[enable_liblustre_tests=$enable_tests])
-if test x$enable_liblustre != xyes ; then
- enable_liblustre_tests='no'
-fi
+ [enable liblustre tests, if --disable-tests is used]),
+ [], [enable_liblustre_tests=$enable_tests])
+AS_IF([test "x$enable_liblustre" != xyes], [enable_liblustre_tests="no"])
AC_MSG_RESULT([$enable_liblustre_tests])
AC_MSG_CHECKING([whether to enable liblustre acl])
AC_ARG_ENABLE([liblustre-acl],
AC_HELP_STRING([--disable-liblustre-acl],
- [disable ACL support for liblustre]),
- [],[enable_liblustre_acl=yes])
+ [disable ACL support for liblustre]),
+ [], [enable_liblustre_acl="yes"])
AC_MSG_RESULT([$enable_liblustre_acl])
-if test x$enable_liblustre_acl = xyes ; then
- AC_DEFINE(LIBLUSTRE_POSIX_ACL, 1, Liblustre Support ACL-enabled MDS)
-fi
+
+AS_IF([test "x$enable_liblustre_acl" = xyes],
+ [AC_DEFINE(LIBLUSTRE_POSIX_ACL, 1,
+ [Liblustre Support ACL-enabled MDS])])
#
# --enable-mpitest
#
AC_ARG_ENABLE(mpitests,
AC_HELP_STRING([--enable-mpitests=yes|no|mpicc wrapper],
- [include mpi tests]),
+ [include mpi tests]),
[
- enable_mpitests=yes
- case $enableval in
- yes)
+ enable_mpitests="yes"
+ case $enableval in
+ yes)
MPICC_WRAPPER=mpicc
;;
- no)
+ no)
enable_mpitests=no
;;
- *)
+ *)
MPICC_WRAPPER=$enableval
- ;;
- esac
- ],
- [
+ ;;
+ esac
+ ], [
MPICC_WRAPPER=mpicc
enable_mpitests=yes
- ]
-)
+ ])
-if test x$enable_mpitests != xno; then
- AC_MSG_CHECKING([whether mpitests can be built])
+AS_IF([test "x$enable_mpitests" != xno], [
oldcc=$CC
CC=$MPICC_WRAPPER
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[
- #include <mpi.h>
- ]],[[
- int flag;
- MPI_Initialized(&flag);
- ]])],
- [
- AC_MSG_RESULT([yes])
- ],[
- AC_MSG_RESULT([no])
- enable_mpitests=no
+ AC_MSG_CHECKING([whether mpitests can be built])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <mpi.h>
+ ]],[[
+ int flag;
+ MPI_Initialized(&flag);
+ ]])
+ ], [
+ AC_MSG_RESULT([yes])
+ ], [
+ AC_MSG_RESULT([no])
+ enable_mpitests=no
])
CC=$oldcc
-fi
+])
AC_SUBST(MPICC_WRAPPER)
AC_MSG_NOTICE([Enabling Lustre configure options for libsysio])
#
# whether to enable quota support global control
#
-AC_DEFUN([LC_CONFIG_QUOTA],
-[AC_ARG_ENABLE([quota],
+AC_DEFUN([LC_CONFIG_QUOTA], [
+AC_MSG_CHECKING([whether to enable quota support global control])
+AC_ARG_ENABLE([quota],
AC_HELP_STRING([--enable-quota],
- [enable quota support]),
- [],[enable_quota='yes'])
-])
+ [enable quota support]),
+ [], [enable_quota="yes"])
+AS_IF([test "x$enable_quota" = xyes],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])])
+]) # LC_CONFIG_QUOTA
-AC_DEFUN([LC_QUOTA],
-[#check global
+#
+# LC_QUOTA
+#
+AC_DEFUN([LC_QUOTA], [
+#check global
LC_CONFIG_QUOTA
#check for utils
-if test x$enable_quota != xno -a x$enable_utils != xno; then
-AC_CHECK_HEADER(sys/quota.h,
- [AC_DEFINE(HAVE_SYS_QUOTA_H, 1, [Define to 1 if you have <sys/quota.h>.])],
- [AC_MSG_ERROR([don't find <sys/quota.h> in your system])])
-fi
+AS_IF([test "x$enable_quota" != xno -a "x$enable_utils" != xno], [
+ AC_CHECK_HEADER([sys/quota.h],
+ [AC_DEFINE(HAVE_SYS_QUOTA_H, 1,
+ [Define to 1 if you have <sys/quota.h>.])],
+ [AC_MSG_ERROR([don't find <sys/quota.h> in your system])])
])
+]) # LC_QUOTA
#
# LC_CONFIG_SPLIT
#
# whether to enable split support
#
-AC_DEFUN([LC_CONFIG_SPLIT],
-[AC_MSG_CHECKING([whether to enable split support])
+AC_DEFUN([LC_CONFIG_SPLIT], [
+AC_MSG_CHECKING([whether to enable split support])
AC_ARG_ENABLE([split],
AC_HELP_STRING([--enable-split],
- [enable split support]),
- [],[enable_split='no'])
+ [enable split support]),
+ [], [enable_split='no'])
AC_MSG_RESULT([$enable_split])
-if test x$enable_split != xno; then
- AC_DEFINE(HAVE_SPLIT_SUPPORT, 1, [enable split support])
-fi
-])
+AS_IF([test "x$enable_split" != xno],
+ [AC_DEFINE(HAVE_SPLIT_SUPPORT, 1, [enable split support])])
+]) # LC_CONFIG_SPLIT
#
# LC_CONFIG_NODEMAP_PROC_DEBUG
#
# enable nodemap proc file debugging
#
-AC_DEFUN([LC_NODEMAP_PROC_DEBUG],
-[AC_MSG_CHECKING([whether to enable nodemap proc debug])
+AC_DEFUN([LC_NODEMAP_PROC_DEBUG], [
+AC_MSG_CHECKING([whether to enable nodemap proc debug])
AC_ARG_ENABLE([nodemap_proc_debug],
- AC_HELP_STRING([--enable-nodemap-proc-debug],
- [enable nodemap proc debug]),
- [],[enable_nodemap_proc_debug='no'])
+ AC_HELP_STRING([--enable-nodemap-proc-debug],
+ [enable nodemap proc debug]),
+ [], [enable_nodemap_proc_debug="no"])
AC_MSG_RESULT([$enable_nodemap_proc_debug])
-if test x$enable_nodemap_proc_debug != xno; then
- AC_DEFINE(NODEMAP_PROC_DEBUG, 1, [enable nodemap proc debug support])
-fi
-])
+AS_IF([test "x$enable_nodemap_proc_debug" != xno],
+ [AC_DEFINE(NODEMAP_PROC_DEBUG, 1,
+ [enable nodemap proc debug support])])
+]) # LC_NODEMAP_PROC_DEBUG
#
# LC_LLITE_LLOOP_MODULE
+#
# lloop_llite.ko does not currently work with page sizes
# of 64k or larger.
#
-AC_DEFUN([LC_LLITE_LLOOP_MODULE],
-[AC_MSG_CHECKING([whether to enable llite_lloop module])
-LB_LINUX_TRY_COMPILE([
- #include <asm/page.h>
+AC_DEFUN([LC_LLITE_LLOOP_MODULE], [
+LB_CHECK_COMPILE([whether to enable 'llite_lloop' module],
+enable_llite_lloop_module, [
+ #include <asm/page.h>
],[
- #if PAGE_SIZE >= 65536
- #error "PAGE_SIZE >= 65536"
- #endif
-],[
- enable_llite_lloop_module='yes'
- AC_MSG_RESULT([yes])
-],[
- enable_llite_lloop_module='no'
- AC_MSG_RESULT([no])
-])
-])
+ #if PAGE_SIZE >= 65536
+ #error "PAGE_SIZE >= 65536"
+ #endif
+],
+ [enable_llite_lloop_module="yes"],
+ [enable_llite_lloop_module="no"])
+]) # LC_LLITE_LLOOP_MODULE
#
# LC_OSD_ADDON
#
# configure support for optional OSD implementation
#
-AC_DEFUN([LC_OSD_ADDON],
-[AC_MSG_CHECKING([for osd])
+AC_DEFUN([LC_OSD_ADDON], [
+AC_MSG_CHECKING([whether to use OSD addon])
AC_ARG_WITH([osd],
AC_HELP_STRING([--with-osd=path],
- [set path to optional osd]),
- [
- case $with_osd in
- no) ENABLEOSDADDON=0
- ;;
- *) OSDADDON="${with_osd}"
- ENABLEOSDADDON=1
- ;;
- esac
+ [set path to optional osd]),
+ [
+ case "$with_osd" in
+ no)
+ ENABLEOSDADDON=0
+ ;;
+ *)
+ OSDADDON="$with_osd"
+ ENABLEOSDADDON=1
+ ;;
+ esac
], [
ENABLEOSDADDON=0
])
-if test $ENABLEOSDADDON -eq 0; then
+AS_IF([test $ENABLEOSDADDON -eq 0], [
AC_MSG_RESULT([no])
- OSDADDON=
-else
- OSDMODNAME=`basename $OSDADDON`
- if test -e $LUSTRE/$OSDMODNAME; then
+ OSDADDON=""
+], [
+ OSDMODNAME=$(basename $OSDADDON)
+ AS_IF([test -e $LUSTRE/$OSDMODNAME], [
AC_MSG_RESULT([can't link])
- OSDADDON=
- elif ln -s $OSDADDON $LUSTRE/$OSDMODNAME; then
+ OSDADDON=""
+ ], [ln -s $OSDADDON $LUSTRE/$OSDMODNAME], [
AC_MSG_RESULT([$OSDMODNAME])
OSDADDON="subdir-m += $OSDMODNAME"
- else
+ ], [
AC_MSG_RESULT([can't link])
- OSDADDON=
- fi
-fi
-AC_SUBST(OSDADDON)
+ OSDADDON=""
+ ])
])
+AC_SUBST(OSDADDON)
+]) # LC_OSD_ADDON
#
# LC_CONFIGURE
#
# other configure checks
#
-AC_DEFUN([LC_CONFIGURE],
-[LC_CONFIG_OBD_BUFFER_SIZE
+AC_DEFUN([LC_CONFIGURE], [
+AC_MSG_NOTICE([Lustre core checks
+==============================================================================])
-if test $target_cpu == "i686" -o $target_cpu == "x86_64"; then
- CFLAGS="$CFLAGS -Werror"
-fi
+LC_CONFIG_OBD_BUFFER_SIZE
+
+AS_IF([test $target_cpu == "i686" -o $target_cpu == "x86_64"],
+ [CFLAGS="$CFLAGS -Werror"])
# maximum MDS thread count
LC_MDS_MAX_THREADS
# libcfs prng.c - depends on linux/types.h from liblustre/dir.c
AC_CHECK_HEADERS([linux/random.h], [], [],
- [#ifdef HAVE_LINUX_TYPES_H
- # include <linux/types.h>
- #endif
- ])
+ [#ifdef HAVE_LINUX_TYPES_H
+ #include <linux/types.h>
+ #endif
+ ])
# utils/llverfs.c
AC_CHECK_HEADERS([ext2fs/ext2fs.h])
# check for -lz support
ZLIB=""
-AC_CHECK_LIB([z],
- [adler32],
- [AC_CHECK_HEADERS([zlib.h],
- [ZLIB="-lz"
- AC_DEFINE([HAVE_ADLER], 1,
- [support alder32 checksum type])],
- [AC_MSG_WARN([
+AC_CHECK_LIB([z], [adler32],
+ [AC_CHECK_HEADERS([zlib.h], [
+ ZLIB="-lz"
+ AC_DEFINE([HAVE_ADLER], 1,
+ [support alder32 checksum type])
+ ], [
+ AC_MSG_WARN([
No zlib-devel package found, unable to use adler32 checksum
-])])],
- [AC_MSG_WARN([
+])
+])], [
+ AC_MSG_WARN([
No zlib package found, unable to use adler32 checksum
-])]
-)
+])
+])
AC_SUBST(ZLIB)
SELINUX=""
-AC_CHECK_LIB([selinux],
- [is_selinux_enabled],
- [AC_CHECK_HEADERS([selinux.h],
- [SELINUX="-lselinux"
- AC_DEFINE([HAVE_SELINUX], 1,
- [support for selinux ])],
- [AC_MSG_WARN([
+AC_CHECK_LIB([selinux], [is_selinux_enabled],
+ [AC_CHECK_HEADERS([selinux.h],
+ [SELINUX="-lselinux"
+ AC_DEFINE([HAVE_SELINUX], 1,
+ [support for selinux ])],
+ [AC_MSG_WARN([
No selinux-devel package found, unable to build selinux enabled tools
-])])],
- [AC_MSG_WARN([
+])
+])],
+ [AC_MSG_WARN([
No selinux package found, unable to build selinux enabled tools
-])]
-)
+])
+])
AC_SUBST(SELINUX)
# Super safe df
+AC_MSG_CHECKING([whether to report minimum OST free space])
AC_ARG_ENABLE([mindf],
- AC_HELP_STRING([--enable-mindf],
- [Make statfs report the minimum available space on any single OST instead of the sum of free space on all OSTs]),
- [],[])
-if test "$enable_mindf" = "yes" ; then
- AC_DEFINE([MIN_DF], 1, [Report minimum OST free space])
-fi
+ AC_HELP_STRING([--enable-mindf],
+ [Make statfs report the minimum available space on any single OST instead of the sum of free space on all OSTs]),
+ [], [enable_mindf="no"])
+AC_MSG_RESULT([$enable_mindf])
+AS_IF([test "$enable_mindf" = "yes"],
+ [AC_DEFINE([MIN_DF], 1, [Report minimum OST free space])])
-AC_ARG_ENABLE([fail_alloc],
- AC_HELP_STRING([--disable-fail-alloc],
- [disable randomly alloc failure]),
- [],[enable_fail_alloc=yes])
AC_MSG_CHECKING([whether to randomly failing memory alloc])
+AC_ARG_ENABLE([fail_alloc],
+ AC_HELP_STRING([--disable-fail-alloc],
+ [disable randomly alloc failure]),
+ [], [enable_fail_alloc="yes"])
AC_MSG_RESULT([$enable_fail_alloc])
-if test x$enable_fail_alloc != xno ; then
- AC_DEFINE([RANDOM_FAIL_ALLOC], 1, [enable randomly alloc failure])
-fi
+AS_IF([test "x$enable_fail_alloc" != xno],
+ [AC_DEFINE([RANDOM_FAIL_ALLOC], 1,
+ [enable randomly alloc failure])])
-AC_ARG_ENABLE([invariants],
- AC_HELP_STRING([--enable-invariants],
- [enable invariant checking (cpu intensive)]),
- [],[])
AC_MSG_CHECKING([whether to check invariants (expensive cpu-wise)])
+AC_ARG_ENABLE([invariants],
+ AC_HELP_STRING([--enable-invariants],
+ [enable invariant checking (cpu intensive)]),
+ [], [enable_invariants="no"])
AC_MSG_RESULT([$enable_invariants])
-if test x$enable_invariants = xyes ; then
- AC_DEFINE([CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK], 1, [enable invariant checking])
-fi
+AS_IF([test "x$enable_invariants" = xyes],
+ [AC_DEFINE([CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK], 1,
+ [enable invariant checking])])
-AC_ARG_ENABLE([lu_ref],
- AC_HELP_STRING([--enable-lu_ref],
- [enable lu_ref reference tracking code]),
- [],[])
AC_MSG_CHECKING([whether to track references with lu_ref])
+AC_ARG_ENABLE([lu_ref],
+ AC_HELP_STRING([--enable-lu_ref],
+ [enable lu_ref reference tracking code]),
+ [], [enable_lu_ref="no"])
AC_MSG_RESULT([$enable_lu_ref])
-if test x$enable_lu_ref = xyes ; then
- AC_DEFINE([USE_LU_REF], 1, [enable lu_ref reference tracking code])
-fi
+AS_IF([test "x$enable_lu_ref" = xyes],
+ [AC_DEFINE([USE_LU_REF], 1,
+ [enable lu_ref reference tracking code])])
-AC_ARG_ENABLE([pgstate-track],
- AC_HELP_STRING([--enable-pgstate-track],
- [enable page state tracking]),
- [enable_pgstat_track='yes'],[])
AC_MSG_CHECKING([whether to enable page state tracking])
+AC_ARG_ENABLE([pgstate-track],
+ AC_HELP_STRING([--enable-pgstate-track],
+ [enable page state tracking]),
+ [], [enable_pgstat_track="no"])
AC_MSG_RESULT([$enable_pgstat_track])
-if test x$enable_pgstat_track = xyes ; then
- AC_DEFINE([CONFIG_DEBUG_PAGESTATE_TRACKING], 1,
- [enable page state tracking code])
-fi
-])
+AS_IF([test "x$enable_pgstat_track" = xyes],
+ [AC_DEFINE([CONFIG_DEBUG_PAGESTATE_TRACKING], 1,
+ [enable page state tracking code])])
+]) # LC_CONFIGURE
#
# LC_CONDITIONALS
#
# AM_CONDITIONALS for lustre
#
-AC_DEFUN([LC_CONDITIONALS],
-[AM_CONDITIONAL(LIBLUSTRE, test x$enable_liblustre = xyes)
+AC_DEFUN([LC_CONDITIONALS], [
+AM_CONDITIONAL(LIBLUSTRE, test x$enable_liblustre = xyes)
AM_CONDITIONAL(LIBLUSTRE_TESTS, test x$enable_liblustre_tests = xyes)
AM_CONDITIONAL(MPITESTS, test x$enable_mpitests = xyes, Build MPI Tests)
AM_CONDITIONAL(CLIENT, test x$enable_client = xyes)
AM_CONDITIONAL(GSS_PIPEFS, test x$enable_gss_pipefs = xyes)
AM_CONDITIONAL(LIBPTHREAD, test x$enable_libpthread = xyes)
AM_CONDITIONAL(LLITE_LLOOP, test x$enable_llite_lloop_module = xyes)
-])
+]) # LC_CONDITIONALS
#
# LC_CONFIG_FILES
lustre/lod/autoMakefile
lustre/obdclass/darwin/Makefile
])
-])
+]) # LC_CONFIG_FILES
#
# configure bits for lustre-snmp
#
-AC_DEFUN([LS_CONFIGURE],
-[AC_MSG_CHECKING([whether to try to build SNMP support])
+AC_DEFUN([LS_CONFIGURE], [
+AC_MSG_CHECKING([whether to try to build SNMP support])
AC_ARG_ENABLE([snmp],
AC_HELP_STRING([--enable-snmp],
- [require SNMP support (default=auto)]),
- [],[enable_snmp='auto'])
+ [require SNMP support (default=auto)]),
+ [], [enable_snmp="auto"])
AC_MSG_RESULT([$enable_snmp])
if test x$enable_snmp != xno ; then
AC_SUBST(NET_SNMP_LIBS)
AC_SUBST(agentdir)
AC_SUBST(mibdir)
-])
+]) # LS_CONFIGURE
#
# LS_CONFIG_FILE
#
# files that should be generated with AC_OUTPUT
#
-AC_DEFUN([LS_CONFIG_FILES],
-[AC_CONFIG_FILES([
+AC_DEFUN([LS_CONFIG_FILES], [
+AC_CONFIG_FILES([
snmp/Makefile
snmp/autoconf/Makefile
])
-])
+]) # LS_CONFIG_FILES