AC_DEFUN([LDISKFS_AC_LINUX_VERSION], [
AC_MSG_CHECKING([kernel source version])
- utsrelease1=${LINUX_OBJ}/include/linux/version.h
+ utsrelease1=${LINUX_OBJ}/include/generated/utsrelease.h
utsrelease2=${LINUX_OBJ}/include/linux/utsrelease.h
- utsrelease3=${LINUX_OBJ}/include/generated/utsrelease.h
+ utsrelease3=${LINUX_OBJ}/include/linux/version.h
AS_IF([test -r ${utsrelease1} && fgrep -q UTS_RELEASE ${utsrelease1}], [
- utsrelease=linux/version.h
+ utsrelease=${utsrelease1}
], [test -r ${utsrelease2} && fgrep -q UTS_RELEASE ${utsrelease2}], [
- utsrelease=linux/utsrelease.h
+ utsrelease=${utsrelease2}
], [test -r ${utsrelease3} && fgrep -q UTS_RELEASE ${utsrelease3}], [
- utsrelease=generated/utsrelease.h
+ utsrelease=${utsrelease3}
])
- AS_IF([test "${utsrelease}"], [
- kernsrcver=$((echo "#include <$utsrelease>";
- echo "kernsrcver=UTS_RELEASE") |
- cpp -I ${LINUX_OBJ}/include |
- grep "^kernsrcver=" | cut -d \" -f 2)
-
- AS_IF([test -z "$kernsrcver"], [
+ 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.])
])
*** This is often provided by the kernel-devel package.])
])
- AC_MSG_RESULT([${kernsrcver}])
+ AC_MSG_RESULT([${UTS_RELEASE}])
- LINUX_VERSION=${kernsrcver}
+ LINUX_VERSION=${UTS_RELEASE}
AC_SUBST(LINUX_VERSION)
- LINUXRELEASE=${kernsrcver}
+ LINUXRELEASE=${UTS_RELEASE}
AC_SUBST(LINUXRELEASE)
])
AC_SUBST(RELEASE)
# check is redhat/suse kernels
-AC_MSG_CHECKING([that RedHat kernel])
-LB_LINUX_TRY_COMPILE([
- #include <linux/version.h>
- ],[
- #ifndef RHEL_RELEASE_CODE
- #error "not redhat kernel"
- #endif
- ],[
+AC_MSG_CHECKING([for RedHat kernel version])
+ AS_IF([fgrep -q RHEL_RELEASE ${LINUX_OBJ}/include/$VERSION_HDIR/version.h], [
RHEL_KERNEL="yes"
- AC_MSG_RESULT([yes])
- ],[
- AC_MSG_RESULT([no])
-])
-
-LB_LINUX_CONFIG([SUSE_KERNEL],[SUSE_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"],[])
+ ])
])
# LB_ARG_REPLACE_PATH(PACKAGE, PATH)
[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],[],
- [AC_MSG_ERROR([Run make config in $LINUX.])])
+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)
+
+
# ----------- kconfig.h exists ---------------
# kernel 3.1, $LINUX/include/linux/kconfig.h is added
# 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/linux/version.h >/dev/null ; then
+if grep rhconfig $LINUX_OBJ/include/$VERSION_HDIR/version.h >/dev/null ; then
# This is a clean kernel-source tree, we need to
# enable extensive workarounds to get this to build
# modules
AC_SUBST(LDISKFS_SYMBOLS)
])
-AC_DEFUN([LB_LDISKFS_RELEASE],
-[
-AC_MSG_CHECKING([ldiskfs source release])
-if test -r $LDISKFS_OBJ/config.h; then
- tmp_flags="$EXTRA_KCFLAGS"
- EXTRA_KCFLAGS="-I$LDISKFS_DIR $EXTRA_KCFLAGS"
- LB_LINUX_TRY_MAKE([
- #undef PACKAGE_NAME
- #undef PACKAGE_TARNAME
- #undef PACKAGE_VERSION
- #undef PACKAGE_STRING
- #undef PACKAGE_BUGREPORT
- #undef PACKAGE
- #undef VERSION
- #undef STDC_HEADERS
-
- #include <$LDISKFS_OBJ/config.h>
- ],[
- char *LDISKFS_RELEASE;
- LDISKFS_RELEASE=VERSION;
- ],[
- $makerule LUSTRE_KERNEL_TEST=conftest.i
- ],[
- test -s build/conftest.i
- ],[
- eval $(grep "LDISKFS_RELEASE=" build/conftest.i)
- ],[
- AC_MSG_RESULT([unknown])
- AC_MSG_ERROR([Could not preprocess test program.])
- ])
- EXTRA_KCFLAGS="$tmp_flags"
- rm build/conftest.i
-elif test -r $LDISKFS_DIR/configure.ac; then
- LDISKFS_RELEASE=$(awk '/AC\_INIT/ { print [$]3 }' \
- $LDISKFS_DIR/configure.ac | tr ',' '\n')
-else
- AC_MSG_RESULT([unknown])
- AC_MSG_ERROR([Could not locate config.h, META, or configure.ac to check release.])
-fi
-
-if test x$LDISKFS_RELEASE = x; then
- AC_MSG_RESULT([unknown])
- AC_MSG_ERROR([Could not determine ldiskfs release.])
-fi
-
-AC_MSG_RESULT([$LDISKFS_RELEASE])
-AC_SUBST(LDISKFS_RELEASE)
-])
-
AC_DEFUN([LB_LDISKFS_SERIES],
[
-if $1; then
+LDISKFS_SERIES=
+AS_IF([$1], [
AC_MSG_CHECKING([which ldiskfs series to use])
- case $LINUXRELEASE in
- 2.6.32*)
- if test x$RHEL_KERNEL = xyes; then
- LDISKFS_SERIES="2.6-rhel6.series"
- fi
- if test x$SUSE_KERNEL = xyes; then
- LDISKFS_SERIES="2.6-sles11.series"
- fi
- ;;
- 3.0.*)
- if test x$SUSE_KERNEL = xyes; then
- LDISKFS_SERIES="3.0-sles11.series"
- fi
- ;;
- *)
- AC_MSG_WARN([Unknown kernel version $LINUXRELEASE])
- LDISKFS_SERIES=
- ;;
- esac
+
+ SER=
+ AS_IF([test x$RHEL_KERNEL = xyes], [
+ 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"])
+ ], [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"],[SER="3.0-sles11.series"])
+ ])
+ LDISKFS_SERIES=$SER
+
+ AS_IF([test -z "$LDISKFS_SERIES"],
+ [AC_MSG_WARN([Unknown kernel version $LINUXRELEASE])])
AC_MSG_RESULT([$LDISKFS_SERIES])
-else
- LDISKFS_SERIES=
-fi
+])
AC_SUBST(LDISKFS_SERIES)
])