Whamcloud - gitweb
LU-3478 iokit: NUMA support in sgpdd-survey
[fs/lustre-release.git] / ldiskfs / config / ldiskfs-build.m4
index fc2d772..8a00872 100644 (file)
@@ -1,24 +1,21 @@
 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.])
                ])
@@ -29,11 +26,11 @@ AC_DEFUN([LDISKFS_AC_LINUX_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)
 ])
 
@@ -62,22 +59,19 @@ AC_MSG_RESULT($RELEASE)
 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)
@@ -190,8 +184,14 @@ 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],[],
-       [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
@@ -208,7 +208,7 @@ LB_CHECK_FILE([$LINUX_OBJ/include/linux/kconfig.h],
 # 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
@@ -627,82 +627,30 @@ AC_MSG_RESULT([$LDISKFS_SYMBOLS])
 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)
 ])