[Ocfs2-commits] manish commits r1965 - trunk

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Tue Mar 8 18:46:56 CST 2005


Author: manish
Signed-off-by: jlbec
Date: 2005-03-08 18:46:54 -0600 (Tue, 08 Mar 2005)
New Revision: 1965

Added:
   trunk/aclocal.m4
   trunk/kver.m4
Modified:
   trunk/configure.in
Log:
* Try to guess where SuSE kernel sources live better.
* Sanity check that the kernel versions of the kernel build tree and the source
  tree match. Also, do the version check solely using the C preprocessor,
  instead of doing a runtime check. We should be cross compile safe now.
* Only run tests that are only relevant for 2.4 when we're actually building
  against a 2.4 kernel.
* Remove unused KERNEL_CFLAGS variable.

Signed-off-by: jlbec


Added: trunk/aclocal.m4
===================================================================
--- trunk/aclocal.m4	2005-03-09 00:39:00 UTC (rev 1964)
+++ trunk/aclocal.m4	2005-03-09 00:46:54 UTC (rev 1965)
@@ -0,0 +1 @@
+m4_include([kver.m4])

Modified: trunk/configure.in
===================================================================
--- trunk/configure.in	2005-03-09 00:39:00 UTC (rev 1964)
+++ trunk/configure.in	2005-03-09 00:46:54 UTC (rev 1965)
@@ -1,3 +1,5 @@
+AC_PREREQ(2.55)
+
 AC_INIT(fs/Makefile)
 
 PACKAGE=ocfs2
@@ -77,16 +79,11 @@
 fi
 
 OCFS_PROCESSOR="$USERARCH"
-KERNEL_CFLAGS=
 
 case "$USERARCH" in
   ppc)
     OCFS_PROCESSOR="ppc64"
-    KERNEL_CFLAGS="-m64"
     ;;
-  x86_64)
-    KERNEL_CFLAGS="-m64"
-    ;;
   i386)
     OCFS_PROCESSOR="i686"
     ;;
@@ -158,11 +155,17 @@
 KERNELDIR=$kerneldir
 AC_SUBST(KERNELDIR)
 
+KBUILDINC="$KERNELDIR/include"
+OCFS2_CHECK_KVER($KBUILDINC, kversion)
+
 AC_MSG_CHECKING(for directory with kernel sources)
 AC_ARG_WITH(kernel-source, [  --with-kernel-source=dir Path to the kernel source [[autodetect]]], kernelsourcedir="$withval", [
   ksrc="$kernelroot/source"
+  knoobjsrc=`echo $kerneldir | sed 's/-obj.*//'`
   if test -f "$kerneldir/include/linux/fs.h"; then
     kernelsourcedir="$kerneldir"
+  elif test -f "$knoobjsrc/include/linux/fs.h"; then
+    kernelsourcedir="$knoobjsrc"
   elif test -d "$ksrc" -o -L "$ksrc"; then
     kernelsourcedir="$ksrc"
   else
@@ -173,45 +176,43 @@
 AC_MSG_RESULT($kernelsourcedir)
 
 KERNELSRC="$kernelsourcedir"
-
 KERNELINC="$KERNELSRC/include"
 
 if test ! -f "$KERNELINC/linux/autoconf.h"; then
   AC_MSG_ERROR(No configured kernel include tree found)
 fi
 
-saved_CPPFLAGS="$CPPFLAGS"
-saved_CFLAGS="$CFLAGS"
+OCFS2_CHECK_KVER($KERNELINC, ksourceversion, "source")
 
-CPPFLAGS="-I$KERNELINC $CPPFLAGS"
-CFLAGS="$KERNEL_CFLAGS $CFLAGS"
 
-AC_MSG_CHECKING(for kernel version)
-rm -f conf.kvertest
-AC_TRY_RUN([
-#include <stdio.h>
-#include <linux/version.h>
+if test "$kversion" != "$ksourceversion"; then
+  saved_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="-I$KERNELINC $CPPFLAGS"
 
-int
-main (void)
-{
-#ifdef UTS_RELEASE
-  FILE *f;
-  f = fopen ("conf.kvertest", "w");
-  if (!f)
-    return 1;
-  fprintf (f, "%s", UTS_RELEASE);
-  fclose (f);
-  return 0;
-#else
-  return 1;
+  AC_EGREP_CPP(kernel_is_SuSE,
+[#include <linux/autoconf.h>
+#ifdef CONFIG_SUSE_KERNEL
+  kernel_is_SuSE
 #endif
-}],kversion=`cat conf.kvertest`, kversion="none")
-AC_MSG_RESULT($kversion)
-rm -f conf.kvertest
+}], susekernel=yes, susekernel=no)
 
-if test "x$kversion" = "xnone"; then
-  AC_MSG_ERROR([Could not determine kernel version.])
+  CPPFLAGS="$saved_CPPFLAGS"
+
+  vermatch=no
+
+  if test "$susekernel" = "yes"; then
+    kversion=`echo $kversion | sed 's/-[[^-]]*$//'`
+    ksourceversion=`echo $ksourceversion | sed 's/-[[^-]]*$//'`
+
+    if test "$kversion" = "$ksourceversion"; then
+      vermatch=yes
+    fi
+  fi 
+
+  if test "$vermatch" = "no"; then
+    AC_MSG_ERROR([Kernel tree versions do not match.
+Perhaps you need to use the --with-kernel-source option?])
+  fi
 fi
 
 KERNEL_26=
@@ -250,32 +251,37 @@
 
 AC_SUBST(COMPAT_SAFE_WRITE)
 
-AC_MSG_CHECKING([for kernel module symbol versions])
-AC_EGREP_CPP(kernel_has_modversions,
+MODVERSIONS=
+if test "x$KERNEL_26" != "xyes"; then
+  AC_MSG_CHECKING([for kernel module symbol versions])
+  AC_EGREP_CPP(kernel_has_modversions,
 [#include <linux/autoconf.h>
 #ifdef CONFIG_MODVERSIONS
   kernel_has_modversions
 #endif
 }], modversions=yes, modversions=no)
-AC_MSG_RESULT($modversions)
+  AC_MSG_RESULT($modversions)
 
-MODVERSIONS=
-if test "x$modversions" = "xyes"; then
-  MODVERSIONS="-include \$(KERNELINC)/linux/modversions.h -DMODVERSIONS"
+  if test "x$modversions" = "xyes"; then
+    MODVERSIONS="-include \$(KERNELINC)/linux/modversions.h -DMODVERSIONS"
+  fi
 fi
 AC_SUBST(MODVERSIONS)
 
-CPPFLAGS="-I$KERNELINC $saved_CPPFLAGS"
-
 AC_MSG_CHECKING([for NPTL support])
 if test "x$KERNEL_26" = "xyes"; then
   have_NPTL=yes
 else
+  saved_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="-I$KERNELINC $saved_CPPFLAGS"
+
   AC_TRY_COMPILE(
 [#define __KERNEL__ 1
 #include <linux/autoconf.h>
 #include <linux/sched.h>],
 [recalc_sigpending ();], have_NPTL=yes, have_NPTL=no)
+
+  CPPFLAGS="$saved_CPPFLAGS"
 fi
 AC_MSG_RESULT($have_NPTL)
 
@@ -283,9 +289,6 @@
   AC_MSG_ERROR([No NPTL support, please try a 2.6.x kernel])
 fi
 
-CPPFLAGS="$saved_CPPFLAGS"
-CFLAGS="$saved_CFLAGS"
-
 MISSING_SOCK_CREATE_LITE=
 AC_MSG_CHECKING([for sock_create_lite])
 if grep "\<sock_create_lite(" "$KERNELINC/linux/net.h" >/dev/null 2>&1 ; then
@@ -364,13 +367,17 @@
 MODULEDIR=$moddir
 AC_SUBST(MODULEDIR)
 
-AC_MSG_CHECKING(for gcc include path)
-gccdir=`$CC -print-file-name=include`
-if test -z "$gccdir"; then
-  AC_MSG_RESULT(not found)
-  AC_MSG_ERROR(Could not determine gcc include path)
+if test "x$KERNEL_26" = "xyes"; then
+  gccdir=
 else
-  AC_MSG_RESULT($gccdir)
+  AC_MSG_CHECKING(for gcc include path)
+  gccdir=`$CC -print-file-name=include`
+  if test -z "$gccdir"; then
+    AC_MSG_RESULT(not found)
+    AC_MSG_ERROR(Could not determine gcc include path)
+  else
+    AC_MSG_RESULT($gccdir)
+  fi
 fi
 
 GCCINC=$gccdir

Added: trunk/kver.m4
===================================================================
--- trunk/kver.m4	2005-03-09 00:39:00 UTC (rev 1964)
+++ trunk/kver.m4	2005-03-09 00:46:54 UTC (rev 1965)
@@ -0,0 +1,45 @@
+AC_DEFUN([OCFS2_CHECK_KVER],
+  [AC_LANG_PREPROC_REQUIRE()dnl
+   AC_REQUIRE([AC_PROG_EGREP])dnl
+
+   check_kver_DESC="$3"
+
+   if test -n "$check_kver_DESC"; then
+     check_kver_DESC=" $check_kver_DESC"
+   fi
+
+   check_kver_saved_CPPFLAGS="$CPPFLAGS"
+   CPPFLAGS="-I$1 $CPPFLAGS -nostdinc"
+
+   AC_MSG_CHECKING(for kernel$check_kver_DESC version)
+
+   AC_LANG_CONFTEST([AC_LANG_SOURCE([
+#include <linux/version.h>
+
+#ifdef UTS_RELEASE
+check_kver_RESULT=UTS_RELEASE
+#else
+check_kver_RESULT=none
+#endif
+])])
+
+   if (eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+     $EGREP "^check_kver_RESULT=" > conftest.kver 2>&1; then
+     . ./conftest.kver
+   else
+     check_kver_RESULT='none'
+   fi
+
+   AC_MSG_RESULT($check_kver_RESULT)
+   rm -f conftest*
+
+   CPPFLAGS="$check_kver_saved_CPPFLAGS"
+
+   if test "x$check_kver_RESULT" != "xnone"; then
+     $2=$check_kver_RESULT
+     m4_default([$4], :)
+   else
+     m4_default([$5],
+       [AC_MSG_ERROR([Could not determine kernel$check_kver_DESC version.])])
+   fi
+])# OCFS2_CHECK_KVER



More information about the Ocfs2-commits mailing list