diff --git a/config/lustre-build-ldiskfs.m4 b/config/lustre-build-ldiskfs.m4 index e06527e4528a6f31364fb842493e0c5e72284e5b..bdcae9a43bbf326ca8a64001e0463cae85e7eefa 100644 --- a/config/lustre-build-ldiskfs.m4 +++ b/config/lustre-build-ldiskfs.m4 @@ -1,76 +1,70 @@ -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 @@ -103,13 +97,12 @@ AC_DEFUN([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], @@ -121,8 +114,7 @@ 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], @@ -132,15 +124,13 @@ AC_ARG_ENABLE([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 @@ -165,7 +155,7 @@ AC_MSG_CHECKING([whether to build ldiskfs]) AC_MSG_RESULT([$enable_ldiskfs]) AM_CONDITIONAL([LDISKFS_ENABLED], [test x$enable_ldiskfs = xyes]) -]) +]) # LB_CONFIG_LDISKFS # # LB_VALIDATE_EXT4_SRC_DIR @@ -174,27 +164,30 @@ AM_CONDITIONAL([LDISKFS_ENABLED], [test x$enable_ldiskfs = xyes]) # 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([ @@ -204,9 +197,8 @@ If you are building using kernel-devel packages and require ldiskfs 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 @@ -214,44 +206,40 @@ fi # 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" @@ -261,8 +249,8 @@ if test x$withval = xyes ; then DUMPE2FS="dumpfs.ldiskfs" E2FSCK="fsck.ldiskfs" PFSCK="pfsck.ldiskfs" - AC_MSG_RESULT([enabled]) -else +], [ + AC_MSG_RESULT([disabled]) E2FSPROGS="e2fsprogs" MKE2FS="mke2fs" DEBUGFS="debugfs" @@ -271,8 +259,7 @@ else 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]) @@ -291,4 +278,4 @@ AC_SUBST([E2LABEL], [$E2LABEL]) AC_SUBST([DUMPE2FS], [$DUMPE2FS]) AC_SUBST([E2FSCK], [$E2FSCK]) AC_SUBST([PFSCK], [$PFSCK]) -]) +]) # LB_DEFINE_E2FSPROGS_NAMES diff --git a/config/lustre-build-linux.m4 b/config/lustre-build-linux.m4 index ce0de5e47209bc1311e4e7aac0900eb6d42cd828..896258732381f426a7b704814df5c36c480c7d52 100644 --- a/config/lustre-build-linux.m4 +++ b/config/lustre-build-linux.m4 @@ -3,33 +3,35 @@ # # 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) ]) # @@ -38,91 +40,77 @@ 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) @@ -134,64 +122,118 @@ AC_SUBST(modulefsdir) 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], @@ -203,17 +245,16 @@ AC_MSG_RESULT([$LINUX]) 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) @@ -223,6 +264,16 @@ AC_ARG_WITH([linux-config], [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], @@ -235,74 +286,70 @@ AC_ARG_WITH([kernel-source-header], [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. @@ -315,66 +362,156 @@ consult build/README.kernel-source 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> @@ -394,6 +531,12 @@ $2 # # 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 @@ -410,55 +553,11 @@ rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest. # # 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]) ]) # @@ -466,141 +565,45 @@ AC_DEFUN([LB_LINUX_CONFIG_IM],[ # # 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 diff --git a/config/lustre-build-zfs.m4 b/config/lustre-build-zfs.m4 index df78230761c555a4e73b6552439e9eab0b35855a..89917592e4a0d5d6b11d5592a82a6701272ff9ea 100644 --- a/config/lustre-build-zfs.m4 +++ b/config/lustre-build-zfs.m4 @@ -371,20 +371,17 @@ your distribution. ]) ]) - 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]) ]) diff --git a/config/lustre-build.m4 b/config/lustre-build.m4 index e56bbb1405b4c729cfdf2fea14877e7d6395ba04..864a65343db720d40307977a8ee42b66d3a60f30 100644 --- a/config/lustre-build.m4 +++ b/config/lustre-build.m4 @@ -3,19 +3,18 @@ # # 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" ;; @@ -27,7 +26,7 @@ AC_DEFUN([LB_CANONICAL_SYSTEM], ;; esac AC_SUBST(lb_target_os) -]) +]) # LB_CANONICAL_SYSTEM # # LB_DOWNSTREAM_RELEASE @@ -35,16 +34,14 @@ AC_SUBST(lb_target_os) 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 @@ -55,11 +52,10 @@ AC_SUBST(DOWNSTREAM_RELEASE) # 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) @@ -95,44 +91,41 @@ if git branch >/dev/null 2>&1; then 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 @@ -140,222 +133,188 @@ AS_VAR_POPDEF([lb_File])dnl # 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 @@ -365,63 +324,56 @@ AC_MSG_RESULT([$enable_tests]) # 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) ]) @@ -430,30 +382,30 @@ 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' @@ -466,33 +418,29 @@ AC_SUBST(docdir) 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" @@ -509,23 +457,24 @@ AC_SUBST(CCASFLAGS) # 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 @@ -534,18 +483,17 @@ AM_CONDITIONAL([USE_QUILT], [test x$use_quilt = xyes]) # 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) @@ -554,15 +502,14 @@ LB_DARWIN_CONDITIONALS 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] @@ -588,21 +535,18 @@ AC_DEFUN([LB_CONFIG_FILES], # # 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: @@ -613,27 +557,25 @@ AC_ARG_ENABLE([server], # 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 @@ -645,89 +587,91 @@ AS_IF([test x$enable_server = xyes], # 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 @@ -768,13 +712,8 @@ LB_DEFINE_E2FSPROGS_NAMES 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 @@ -783,9 +722,7 @@ LIBCFS_CONFIG_FILES 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) @@ -808,4 +745,4 @@ LLCFLAGS: $LLCFLAGS Type 'make' to build Lustre. _ACEOF -]) +]) # LB_CONFIGURE diff --git a/libcfs/autoconf/lustre-libcfs.m4 b/libcfs/autoconf/lustre-libcfs.m4 index 815f0827ec07e79a1c45bd9cbbd9a5a8a12f6953..a73943b9f4ec4287a3cb85a9cf4e5bd855a4b736 100644 --- a/libcfs/autoconf/lustre-libcfs.m4 +++ b/libcfs/autoconf/lustre-libcfs.m4 @@ -3,251 +3,240 @@ # # 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); @@ -258,49 +247,56 @@ AC_DEFUN([LIBCFS_SOCK_ALLOC_FILE], 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 @@ -328,33 +324,35 @@ LIBCFS_HAVE_CRC32 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 @@ -420,9 +418,10 @@ AC_CHECK_TYPE([__s64], [#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> @@ -430,82 +429,80 @@ AC_COMPILE_IFELSE([ 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 @@ -523,4 +520,4 @@ libcfs/libcfs/util/Makefile libcfs/include/libcfs/darwin/Makefile libcfs/libcfs/darwin/Makefile ]) -]) +]) # LIBCFS_CONFIG_FILES diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index 2d119e390a69d046539e44bea3c89c19ebebfb61..41b1289002571d65f137f491f930c77ff585441f 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -3,12 +3,12 @@ # # 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)" @@ -16,272 +16,255 @@ AC_ARG_WITH([max-payload-mb], 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" @@ -297,105 +280,106 @@ AC_ARG_WITH([o2ib], 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="" @@ -413,7 +397,7 @@ else 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 @@ -424,15 +408,14 @@ else 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 @@ -440,167 +423,142 @@ if test $ENABLEO2IB -ne 0; then ],[ 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 @@ -611,33 +569,35 @@ LN_CONFIG_GNILND 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]) @@ -656,108 +616,104 @@ AC_CHECK_FUNCS([strnlen]) # 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 @@ -790,4 +746,4 @@ lnet/ulnds/socklnd/Makefile lnet/utils/Makefile lnet/include/lnet/darwin/Makefile ]) -]) +]) # LN_CONFIG_FILES diff --git a/lnet/autoconf/ofed.m4 b/lnet/autoconf/ofed.m4 index 029b84a5c20544394b92bd379fc9781a855de14d..d4fba98a42699172963f7e49237fb922acdb3eca 100644 --- a/lnet/autoconf/ofed.m4 +++ b/lnet/autoconf/ofed.m4 @@ -1,8 +1,10 @@ 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> @@ -11,15 +13,12 @@ AC_DEFUN([LN_CONFIG_OFED_SPEC], 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> @@ -28,15 +27,12 @@ AC_DEFUN([LN_CONFIG_OFED_SPEC], 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> @@ -47,15 +43,12 @@ AC_DEFUN([LN_CONFIG_OFED_SPEC], ],[ 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> @@ -66,15 +59,12 @@ AC_DEFUN([LN_CONFIG_OFED_SPEC], ],[ 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> @@ -86,10 +76,7 @@ AC_DEFUN([LN_CONFIG_OFED_SPEC], 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]) ]) ]) diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index a42b479ad514ad4d7731363f630469e0ca75ffae..f92fa90e66cef18edbe36782d7136cd08f1e23ab 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -3,10 +3,10 @@ # # 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" ]) # @@ -14,8 +14,8 @@ 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) @@ -28,15 +28,15 @@ AC_SUBST(demodir) 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 ;; @@ -44,52 +44,53 @@ $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 @@ -97,166 +98,166 @@ AC_DEFUN([LC_GLIBC_SUPPORT_FHANDLES], # 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 @@ -264,69 +265,74 @@ LB_LINUX_CONFIG_IM([CRYPTO_SHA1],[],[ 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)) @@ -334,145 +340,153 @@ kernel SUNRPC support is required by using GSS. # 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 @@ -482,144 +496,135 @@ LB_LINUX_TRY_COMPILE([ # 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; @@ -627,38 +632,38 @@ LB_LINUX_TRY_COMPILE([ ],[ 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; @@ -667,78 +672,73 @@ LB_LINUX_TRY_COMPILE([ ],[ 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; @@ -746,62 +746,61 @@ LB_LINUX_TRY_COMPILE([ ],[ 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. @@ -809,163 +808,160 @@ LB_LINUX_TRY_COMPILE([ # 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> @@ -974,28 +970,26 @@ LB_LINUX_TRY_COMPILE([ #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; } ],[ @@ -1003,23 +997,22 @@ LB_LINUX_TRY_COMPILE([ 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, @@ -1032,51 +1025,49 @@ LB_LINUX_TRY_COMPILE([ 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 @@ -1085,49 +1076,47 @@ LB_LINUX_TRY_COMPILE([ # 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> @@ -1140,38 +1129,38 @@ LB_LINUX_TRY_COMPILE([ 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> ],[ @@ -1183,23 +1172,22 @@ LB_LINUX_TRY_COMPILE([ 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> ],[ @@ -1207,92 +1195,88 @@ LB_LINUX_TRY_COMPILE([ 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> ],[ @@ -1302,392 +1286,388 @@ LB_LINUX_TRY_COMPILE([ 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]) @@ -1702,131 +1682,139 @@ LC_CONFIG_LIBLUSTRE_RECOVERY # # 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 @@ -1849,109 +1837,110 @@ LC_READLINK_SSIZE_T # 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) @@ -1964,7 +1953,7 @@ AM_CONDITIONAL(GSS_KEYRING, test x$enable_gss_keyring = 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 @@ -2055,4 +2044,4 @@ lustre/lod/Makefile lustre/lod/autoMakefile lustre/obdclass/darwin/Makefile ]) -]) +]) # LC_CONFIG_FILES diff --git a/snmp/autoconf/lustre-snmp.m4 b/snmp/autoconf/lustre-snmp.m4 index f34a2d559a22cfd0cbceff417c6e9f592bca549d..2eef4a0f1eb50f37c738f675214c071210e409bf 100644 --- a/snmp/autoconf/lustre-snmp.m4 +++ b/snmp/autoconf/lustre-snmp.m4 @@ -3,12 +3,12 @@ # # 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 @@ -54,16 +54,16 @@ AC_SUBST(NET_SNMP_CFLAGS) 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